revised controller