Implements all CRUD methods