all done but not work because copy constructor isn't called correctly