Worked on factory design pattren and private copy constructor stuff