     return no for key in keys when not localStorage.hasOwnProperty key
     yes
 
-  # Retrieve the value associated with the specified `keys` from
+  # Retrieve the value associated with the specified `key` from
   # `localStorage`.  
-  # If the value is found, parse it as JSON before being returning it;
-  # otherwise return `undefined`.
-  get: (keys...) ->
-    if keys.length is 1
-      value = localStorage[keys[0]]
-      if value? then JSON.parse value else value
-    else
-      value = {}
-      value[key] = @get key for key in keys
-      value
+  # If the value is found, parse it as a JSON object before being returning
+  # it.
+  get: (key) ->
+    parts = dig localStorage, key
+    if parts[3]
+      value = parts[3][parts[4]]
+      # Ensure that the value is parsed if retrieved directly from
+      # `localStorage`.
+      value = tryParse value if parts[3] is parts[0]
+    value
 
   # Initialize the value of the specified key(s) in `localStorage`.  
   # `keys` can either be a string for a single key (in which case

  # pairs.  
  # If the value is currently `undefined`, assign the specified default value;
  # otherwise reassign itself.
  init: (keys = {}, defaultValue) ->
    switch typeof keys
      when 'object'
        @set key, @get(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.
  modify: (keys..., callback) ->
    @set key, callback?(@get(key), key) ? @get key for key in keys

  # Remove the specified `keys` from `localStorage`.  
  # If only one key is specified then the current value of that key is returned

      break
  subs

# Attempt to parse `value` as a JSON object if it's not `null`; otherwise just
# return `value`.
tryParse = (value) ->
  if value? then JSON.parse value else value

# Attempt to stringify `value` in to a JSON string if it's not `null`;
# otherwise just return `value`.
tryStringify = (value) ->
  if value? then JSON.stringify value else value

# Internationalization setup
# --------------------------

