working CRUD functionality