       else
         throw new InvalidArgumentError("class should be inherited from EncodingNoSQL or AbstractNoSQL")
     @Subkey = subkey(@)
-    AbstractNoSQL.constructor.apply(this, arguments)
-  ### 
+    AbstractNoSQL::constructor.apply(this, arguments)
+  final: ->
+    @Subkey = undefined
+    super
+  ###
     first check preHooks if operationType
     return falsse if prehooks disallow this operation 
     or return encoded string.
+    ops: only for batch(trasaction) operations
   ###
   encodeKey: (aPathArray, aKey, op, operationType, ops)->
     result = prepareOperation(@preHooks, operationType, op, aPathArray, aKey)

    options = extend {}, @_options, options
    key = @encodeKey key, path, options, DEL_OP
    return false if key is false
    result = AbstractNoSQL.delSync.call(@, key, options)
    if result
      vKeyPath = options._keyPath
      options.path = vKeyPath[0]

    return false if key is false
    valueEncoding = @valueEncoding options
    value = valueEncoding.encode(value) if valueEncoding
    result = AbstractNoSQL::putSync.call(@, key, value, options)
    if result
      vKeyPath = options._keyPath
      options.path = vKeyPath[0]
