rewrote add+remove functionality