added various features to BaseModel