-let _nop = None
-let _first_child s = Some (FIRST_CHILD s)
-let _next_sibling s = Some (NEXT_SIBLING s)
-let _first_element s = Some (FIRST_ELEMENT s)
-let _next_element s = Some (NEXT_ELEMENT s)
-let _tagged_descendant s t = Some (TAGGED_DESCENDANT(s,t))
-let _tagged_following s t = Some (TAGGED_FOLLOWING(s,t))
-let _select_descendant s t = Some (SELECT_DESCENDANT(s,t, Tree.unordered_set_of_set t))
-let _select_following s t = Some (SELECT_FOLLOWING(s,t, Tree.unordered_set_of_set t))
-let _tagged_child s t = Some (TAGGED_CHILD(s,t))
-let _tagged_following_sibling s t = Some (TAGGED_FOLLOWING_SIBLING(s,t))
-let _select_child s t = Some (SELECT_CHILD(s,t, Tree.unordered_set_of_set t))
-let _select_following_sibling s t = Some (SELECT_FOLLOWING_SIBLING(s,t, Tree.unordered_set_of_set t))
-let _tagged_subtree s t = Some (TAGGED_SUBTREE (s, t))
-let _element_subtree s = Some (ELEMENT_SUBTREE s)
+
+let _nop = NOP ()
+let _first_child s = FIRST_CHILD s
+let _next_sibling s = NEXT_SIBLING s
+let _first_element s = FIRST_ELEMENT s
+let _next_element s = NEXT_ELEMENT s
+let _tagged_descendant s t = TAGGED_DESCENDANT(s,t)
+let _tagged_following s t = TAGGED_FOLLOWING(s,t)
+let _select_descendant s t = SELECT_DESCENDANT(s,t, Tree.unordered_set_of_set t)
+let _select_following s t = SELECT_FOLLOWING(s,t, Tree.unordered_set_of_set t)
+let _tagged_child s t = TAGGED_CHILD(s,t)
+let _tagged_following_sibling s t = TAGGED_FOLLOWING_SIBLING(s,t)
+let _select_child s t = SELECT_CHILD(s,t, Tree.unordered_set_of_set t)
+let _select_following_sibling s t = SELECT_FOLLOWING_SIBLING(s,t, Tree.unordered_set_of_set t)
+let _tagged_subtree s t = TAGGED_SUBTREE (s, t)
+let _element_subtree s = ELEMENT_SUBTREE s