moved IController implementation specific code from user level to framework level