Refactor & create CRUD interface