split out controllers, added TODOs