small cleanups
use chained module controllers
create data services for sharing between controllers