prefer copy costructor