diff --git a/lib/node/default.js b/lib/node/default.js
index <HASH>..<HASH> 100644
--- a/lib/node/default.js
+++ b/lib/node/default.js
@@ -2,8 +2,6 @@
 
 module.exports = require(__dirname).define({
   type: 'DEFAULT',
-  constructor: function() {
-  },
   value: function() {
     return;
   }
diff --git a/lib/node/index.js b/lib/node/index.js
index <HASH>..<HASH> 100644
--- a/lib/node/index.js
+++ b/lib/node/index.js
@@ -24,14 +24,16 @@ Node.prototype.addAll = function(nodes) {
 }
 
 Node.define = function(def) {
-  //TODO - what was I thinking?
-  //ALSO TODO - start commenting my code more. :p
   var c = function() {
     Node.apply(this, arguments);
-    if(def.constructor) {
-      def.constructor.apply(this, arguments);
-    }
   };
+  //allow custom sub-class constructor
+  if(def.constructor) {
+    c = function() {
+      Node.apply(this, arguments);
+      def.constructor.apply(this, arguments);
+    };
+  }
   var key;
   for(key in Node.prototype) {
     c.prototype[key] = Node.prototype[key];
make generated node constructors slightly less weird