refactore controller