completed add() and remove() methods, plus tests