     @keys.splice(index, 0, key)
     
     @emit "set", key, value
-    cb(null, value)
+    
+    cb(null, value) if cb
+    value
     
   del: (key, cb) ->
     delete @items[key]
     
-    if (index = self.keys.indexOf(key)) > 0
+    if (index = @keys.indexOf(key)) > 0
       @keys.splice(index, 1)
-      
-    @emit "del", key
-    cb(null)
+      @emit "del", key
     
-  _sleep: -> JSON.stringify({@keys, @items})
-  _wakeup: (data) -> {@keys, @items} = JSON.parse(data)
+    cb(null) if cb
+    return
+    
+  _sleep: -> JSON.stringify(@items)
+  _wakeup: (data) -> @set(key, value) for key, value of JSON.parse(data)
   
-  _save: =>
+  _save: (cb) =>
     self = @
     
     console.info "[INFO] Writing backup to: #{@options.filename}"

        catch e
          return console.error "[ERR] Restore failed to parse from: #{self.options.filename}"

        console.log "[OK] Restore succeeded from: #{self.options.filename}"
    fs.writeFile @options.filename, @_sleep(), (err) ->
      if err then console.error "[ERR] Backup failed to: #{self.options.filename}"
      else console.log "[OK] Backup made to: #{self.options.filename}"
      
      cb() if cb
  
  _restore: (cb) =>
    self = @
    
    console.info "[INFO] Restoring from: #{@options.filename}"
