Much better implementation of add.  Must now revamp delete which although
the test passes is actually kind of broken