yeah I've just been reading and it seems the motive for default implementation is different from my use case. I'm not sure what I need in this case. My goal is to make my code as exstensible as possible.
Many different objects will all require very similar but slightly different implementation of the the same methods. I was hoping the default implementation would allow me to define these methods as a base to then modify within the derived classes but I now understand this is not the reason for default implementation. Any ideas what I might be looking for? If I have to just copy and paste code then I can.