require smart-model