Refactored. User can add, delete, and edit