no need to generate model() method