the order of arguments is counter-intuitive here in combination with the `<` operator, can that be fixed? 

I guess you could determine which of both the reference version is based on which operator is used, i.e. for `<` and `<=`, the second argument would be your reference (as opposed to always the first like it is now), which would fix the intuitive interpretation of `self.OPERATOR['<'](x, y)` like `x < y` (while now it's actualy `y < x`)