SMModelObject is a very handy superclass for "Model Object" types.
Much, much credit given to André Pang and his phenomenal RMModelObject which was the inspiration for this class. https://github.com/andrep/RMModelObject
More information in the blog post: http://nfarina.com/post/2061838727/smmodelobject
Try the master_arc branch if your project has Automatic Reference Counting (ARC) enabled.