design patterns, delegates, categories, notifications, nscoding, user defaults and more