refactor BindingOp to have cleaner API.  Note changes in argument names.
(Existing order should still work.)