         for item in _items
             @items.push item unless @contains item
 
-        @sort()
-        return this
+        @__sort__()
+
+    contains: (item) ->
+        some.call @items, (a) => @equal a, item
 
     addOne: (item) ->
         if @contains item


        return set

    concat: (items) ->
        if items instanceof OrderedSet
            @add items.items...
        else
            @add items...

    item: (n) -> @items[n]

    toArray: -> @items[0..]

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

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

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


some = Array::some ?  (fn) ->
    return true for i in this when fn(i)

    false

class OrderedSet
    ## A Set of items ordered so that:
