overhaul with working add and remove