worked on copy constructor, = operator