Better 'clone' implementation