Migrate to iOS's event-driven MVC model