     set = new Set(keys)
     otherSet = new Set(otherKeys)
     if set.__ne__(otherSet) #if keys are different, not equal
-      return false
+      return new Bool false
     for key in keys
       val = @__getitem__(key)
       otherVal = dict.__getitem__(key)
       if val != otherVal #if values differ, not equal. Unsure if this should be __ne__
-        return false
-    return true
+        return new Bool false
+    return new Bool true
     
   __ge__: (dict) ->
-    return @__gt__(dict) or @__eq__(dict)
+    return new Bool @__gt__(dict) or @__eq__(dict)
 
   __getattribute__: (attr) ->
 

    return new DictionaryKeyIterator(@)

  __le__: (dict) ->
    return @__lt__(dict) or @__eq__(dict)

  __len__: ->
    return Object.keys(Object(@value)).length

  # First checks length of dictionary, then compares sorted keys and their associated values
  __lt__: (dict) ->
    if @__len__() < dict.__len__()
      return true
    else if @__len__() > dict.__len__()
      return false
    else
      keys = Object.keys(@value).sort()
      otherKeys = Object.keys(dict.value).sort()
      for key,i in keys
        if key >= otherKeys[i]
          return false
        val = @__getitem__(key)
        otherVal = @__getitem__(otherKeys[i])
        if val >= otherVal
          return false
      return true

  __ne__: (dict) ->
    return not @__eq__(dict)

  # **Unimplemented**
  __repr__: ->

    return @value[key]

  __gt__: (dict) ->
    return new Bool not @__le__(dict)

  # **Unimplemented**
  __init__: ->
