add() and remove() don't seem to be used at all (other than in tests). I think they can be deleted.