finished copy constructor