     else
       @isExistsSync key, options
 
+  mGet: (keys, options, callback) ->
+    err = undefined
+    if typeof options is "function"
+      callback = options
+      options = {}
+    else
+      options = {} unless options?
+    if callback
+      @_mGet keys, options, (err, arr)->
+        return callback(err) if err
+        i = 0
+        result = []
+        while i < arr.length
+          result.push
+            key: arr[i]
+            value: arr[++i]
+          i++
+        callback null, result
+    else
+      @mGetSync keys, options
+
   get: (key, options, callback) ->
     err = undefined
-    callback = options  if typeof options is "function"
+    if typeof options is "function"
+      callback = options
+      options = {}
+    else
+      options = {} unless options?
     if err = @_checkKey(key, "key", @_isBuffer)
       if callback
         return callback(err)
       else
         throw err
     key = String(key)  unless @_isBuffer(key)
-    options = {}  unless typeof options is "object"
     options.asBuffer = options.asBuffer isnt false
     if callback
       @_get key, options, callback

        else
          callback null, true


  _get: (key, options, callback) ->
    that = this

      return result
    throw new NotImplementedError()

  mGetSync: (keys, options) ->
    if @_mGetSync
      options = {} unless options?
      arr = @_mGetSync(key, options)
      i = 0
      result = []
      while i < arr.length
        result.push
          key: arr[i]
          value: arr[++i]
        i++
      return result
    throw new NotImplementedError()

  putSync: (key, value, options) ->
    if @_putSync
      options = {} unless options?
