 extend          = require('util-ex/lib/extend')
 defineProperty  = require('util-ex/lib/defineProperty')
 createObject    = require('inherits-ex/lib/createObject')
+Attributes      = require('./attributes/abstract-type')
 attributes      = createObject require('./attributes/type')
 #try Codec       = require('buffer-codec')
 

        vType = @createType aOptions
    else
      vType = @
    #Value(aValue, vType, aOptions)
    createObject vType.ValueType, aValue, vType, aOptions
  create: @::createValue
  createType: (aOptions)->

  ValueType: Value
  $attributes: attributes

  constructor: (aTypeName, aOptions)->
    # create a new instance object if aOptions is not the original options of the type.
    if not (this instanceof Type) and not (aTypeName instanceof Type)
