add basic model and contracts