Use objects instead of custom linked-list map implementation

* this should be marginally more efficient but has less opportunity for
bugs due to less code