Add a data model and abstract `Model` module