Refactored new_object into more fine grained functions