working basic operation, need to implement update and custom