data model and some tests