rewrite using services, separate controllers, localization