   _createVariantWithHead: (head=null, spec) ->
     variant = Object.create(this)
     _.extend(variant, spec) if spec?
-    variant.constructor()
-
-    if !head?
-      head = variant
-
-    variant._head = head
-    variant._master = this
+
+    head ?= variant
+    variant.constructor(this, head)
+
     @_variants.push(variant)
 
     return variant

module.exports = Node = {
  label: "Node"

  constructor: ->
    @_master = null
    @_variants = []

    @_parent = null
    @_children = []

    @_head = null

    @_isHatched = false


    return lineage
}

Node.constructor(null, null)
