I am just beginning to read about NSCopying, but from what I understand I have to implement a copyWithZone method in my model class , init a new object, and by hand copy all 20 instance variables from the current object into the new object. Then since two of my instance variables are themselves model objects I need to repeat this process over again for each class. This is a lot of work. Is there something I am missing that can just copy an entire object and its contents in its current state, or am I on the right track to do it manually like this?