controller are now decoupled from callbacks