adding and removing works, needs some cleanup