CRUD complete, ugly, but complete