Refactored methods to return a deep copy of current object