basic CRUD functionality, no scaffolding added pg