slightly tidier logic for same copy.
Object copying implemented correctly. Could do with a tidy up and an optimise, but for now it's functional.