added clone and copy constructor