begin crud refactoring