Just an FYI, I'm sure you know about it already, but I actually fixed all but 1 API problem with NewTable vs original Table. The only method that needs to be adapted between the 2 is .flush() and .flush(int). HandleTables, StringTables and even that weird 2D array syntax all work perfectly between the 2 resources, and actually the 2D array syntax in NewTable is a safer implementation than Vex's due to it not actually writing directly over the parent key index with random integers . I gave what you said a lot of thought and it now is as good as it ever could get.