consolidate controllers, prevent excess listeners