split range tree into two versions
one of them requires commutativity, the other one does not