separation of controllers