   #** Unimplemented **
   __sizeof__: ->
   
+  # http://docs.python.org/library/stdtypes.html#dict.clear
   clear: ->
     @value = {} #just reset the dictionary
     return
 
-  # Returns a shallow copy of this
+  # http://docs.python.org/library/stdtypes.html#dict.copy
   copy: ->
     copy = new Dict(@)
     return copy
 
-  # Gets the value of the `key` if key exists. Otherwise return default `d`
+  # http://docs.python.org/library/stdtypes.html#dict.fromkeys
+  @fromkeys: ->
+
+  # http://docs.python.org/library/stdtypes.html#dict.get
   get: (key, d) ->
     if key of @value
       return @__getitem__(key)
     else
       return d
 
+  # http://docs.python.org/library/stdtypes.html#dict.has_key
   has_key: (key) ->
     return new Bool key of @value
 
+  # http://docs.python.org/library/stdtypes.html#dict.items
   items: ->
     items = new List()
     for key of @value

      items.append tuple
    return items

  iteritems: ->
    return new DictionaryItemIterator(@)

  iterkeys: ->
    return new DictionaryKeyIterator(@)

  itervalues: ->
    return new DictionaryValueIterator(@)

  # Returns a list of keys of this
  keys: ->
    keys = new List Object.keys(@value)
    return keys

  # Returns the popped value at key if key exists. 
  # Else returns `d` if default `d` exists
  # Else raises `KeyError`
  pop: (key, d) ->
    keys = @keys()
    if keys.__contains__(key)

    randomValue = @__getitem__ randomKey
    return new Tuple [randomKey, randomValue]

  # http://docs.python.org/library/stdtypes.html#dict.setdefault
  setdefault: (key, d) ->
    if key not in @keys().value
      @__setitem__ key, d
    return @value[key]

  # **Unimplemented**
  # http://docs.python.org/library/stdtypes.html#dict.update
  update: ->
  
  # http://docs.python.org/library/stdtypes.html#dict.values
  values: ->
    keys = @keys()
    values = new List()
