controller is now independent from iminmal