improve and test CRUD