implement add and remove work