tdd refactor copy constructor