some boilerplate cleanup
introduce model