use default value instead of overloading
realize copy constructor
remove old copy function
complete the assignment