rough CRUD complete