final CRUD