finish implementing basic CRUD