Implented add/remove in O(1) time