refactor controllers for correct behavior