Change BaseModel approach to Generics