mem impl done-ish plus minor tweaks
more minor tweaks + consistent equals/hashCode/toString impls using guava
start tests