     ##   equal(a, b)
     constructor: (@items = [], unique = no, sorted = no) ->
         if not unique
-            @uniqify()
+            @__uniqify__()
         else if not sorted
-            @sort()
+            @__sort__()
 
         @length = @items.length
 
     __constructor__: OrderedSet
 
-    contains: (item) ->
-        some.call @items, (a) => @equal a, item
+    __sort__: ->
+        @items.sort (a, b) => if @greater(b, a) then 1 else -1
 
-    sort: ->
-        @items.sort (a, b) => if @greater(b, a) then 1 else -1
-        return this
-
-    uniqify: ->
+    __uniqify__: ->
         # enforce the policy that no two
         # items (a, b) should be @equal(a, b)
         _items = @items

            new @__constructor__ @items.concat([item]), yes

    add: (items...) ->
        set = this

        for item in items


        return set

    concat: (ls) ->
        # add a collection of items to the set
        if items instanceof OrderedSet
            @add ls.items...
        else
            @add ls...

    # set.item(i) -> array[i]
    item: (n) -> @items[n]

    toArray: -> @items[0..]

    slice: -> @items.slice arguments...

    equal: (a, b) -> a is b

    greater: (a, b) -> b > a

