Refactored to use multiple controllers.