   
   # http://docs.python.org/library/stdtypes.html#set.copy
   copy: ->
-    keys = @keys()
+    keys = @value.keys()
     return new Set(keys)
   
   # http://docs.python.org/library/stdtypes.html#set.difference

  __iter__: ->
    return new SetIterator(@)

  # Checks to see if this is a subset of set
  __le__: (otherSet) ->
    for item in @value.keys().value
      if not otherSet.__contains__(item).value

    return

  # http://docs.python.org/library/stdtypes.html#set.isdisjoint
  isdisjoint: (otherSet) ->
    intersect = @__and__(otherSet)
    return len(intersect).__eq__(new Int(0))
  
  # http://docs.python.org/library/stdtypes.html#set.issubset
  issubset: (otherSet) ->
    return @__le__(otherSet)
  
  # http://docs.python.org/library/stdtypes.html#set.issuperset
  issuperset: (otherSet) ->
    return @__ge__(otherSet)

  # http://docs.python.org/library/stdtypes.html#set.pop
  pop: ->
