made IModelController generic