Refactoring

Added copy constructors as this is good practice and makes the code
neater and more understandable. Adjusted the code appropriately.