++ optimize tracing code, still too much overhead
++ use NULL instead of a sentinal node in skiplist and list
+- make interfaces for all data structures consistent
++ make list and skiplist use string keys
+- optimize short strings by embedding the data directly in their pointers