     for key in iterable
       @value[key] = iterable[key]
 
+  # Checks if the key exists in this
   __contains__: (key) ->
     return key in @value
 
+  # Removes the key,value pair from this
   __delitem__: (key) ->
-    delete @value[key]
+    delete @__getitem__(key)
 
   # ** Unimplemented **
   __eq__: (dict) ->

    return key in @value

  items: ->
    items = []
    for key in @value
      
      tuple = new Tuple(key, @value[key])
      items.push(tuple)
    return items



  setdefault: (key, d) ->
    if key not in @keys()
      @__setitem__(key, d)
    return @value[key]

  # ** Unimplemented **
  update: ->
  
  values: ->
    keys = @keys()
    values = []
    for key in keys
      val = @__getitem__(key)
      values.push(val)
    return values

  # ** Unimplemented **
  viewitems: ->

  # ** Unimplemented **
  viewkeys: ->

  # ** Unimplemented **
  viewvalues: ->