full CRUD for types