   # pairs.  
   # If the value is currently `undefined`, assign the specified default value;
   # otherwise reassign itself.
-  init: (keys = {}, defaultValue) ->
+  init: (keys, defaultValue) ->
     switch typeof keys
       when 'object'
-        @set key, @get(key) ? defaultValue for own key, defaultValue of keys
+        @init key, defaultValue for own key, defaultValue of keys
       when 'string' then @set keys, @get(keys) ? defaultValue
 
   # For each of the specified `keys`, retrieve their value in `localStorage`
   # and pass it, along with the key, to the `callback` function provided.  
-  # If `callback` returns a value that is not `undefined`, then that value will
-  # be assigned to the key in `localStorage`. This functionality is very useful
-  # when just manipulating existing values but can be used in any case.
+  # This functionality is very useful when just manipulating existing values.
   modify: (keys..., callback) ->
-    @set key, callback?(@get(key), key) ? @get key for key in keys
+    for key in keys
+      value = @get key
+      callback? value, key
+      @set key, value
 
   # Remove the specified `keys` from `localStorage`.  
   # If only one key is specified then the current value of that key is returned

  # default value to it instead.
  rename: (oldKey, newKey, defaultValue) ->
    if @exists oldKey
      @init newKey, @get oldKey
      @remove oldKey
    else
      @init newKey, defaultValue

  # Search `localStorage` for all keys that match the specified regular
  # expression.

        propExpr = prop[2]
        if propName.indexOf('.') is 0
          path = propName.slice(1).split '.'
          obj  = element
          obj  = obj[path.shift()] while obj and path.length > 1
          if obj
            obj[path] = i18n.get value, subs
            i18nProcess element, subMap if path is 'innerHTML'
