separate model and route