There are more functionalities than before (all neighbors within distance d from query point, find, mem, root and remove) and it is no more a minimalist implementation.

It also works for large number of points now if you construct a random vpt, unlike before.

also, I should use buckets of points; once there are too few points left, put them all in the same bucket instead of constructing sub trees. This will save storage space, time when constructing the tree and maybe even accelerate queries (starting at some small N, brute force search is faster than vpt search).