implemented adding and deleting