Broke components into separate controllers and model