adding separation of concerns for model gen