objc design pattern proj initial commit