       type: 'Boolean'
 ###
 module.exports = class AbstractTypeAttributes
-  merge: (attrs)->
+  merge: (attrs)->@mergeTo attrs, @
+  mergeTo: (attrs, dest)->
     for name, attr of attrs
       attr = type:attr if isString attr
-      vAttr = @[name]
+      vAttr = dest[name]
       if vAttr is undefined
-        @[name] = attr
+        dest[name] = attr
       else
         vAttr[k] = v for k, v of attr
-    return
+    return dest
   _initialize: (aOptions)-> @merge(aOptions)
   initialize: (aOptions)->
     @_initialize(aOptions)

isFunction      = require 'util-ex/lib/is/type/function'
defineProperty  = require 'util-ex/lib/defineProperty'
getObjectKeys   = Object.keys

###
  Usage 1:

      aExclude = []
    for k, v of vNames
      continue if v in aExclude
      vAttr = @[k]
      vValue = src[v] || src[k]
      if k is 'name'
