     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: =>
+  _restore: (cb) =>
     self = @
     
     console.info "[INFO] Restoring from: #{@options.filename}"

    @keys.splice(index, 0, key)
    
    @emit "set", key, value
    cb(null, value)
    
  del: (key, cb) ->
    delete @items[key]
    
    if (index = self.keys.indexOf(key)) > 0
      @keys.splice(index, 1)
      
    @emit "del", key
    cb(null)
    
  _sleep: -> JSON.stringify({@keys, @items})
  _wakeup: (data) -> {@keys, @items} = JSON.parse(data)
  
  _save: =>
    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}"
      
      cb() if cb