Or maybe I'm looking at it the wrong way.. Basically I'd like to have a hierarchy (like the example Animal) and be able to copy an instance of an implementation without knowing which one it is, considering I'm changing a field that is declared in that interface.