diff --git a/package.json b/package.json
index 6898ac8962dbf8f24e1984555a2e531c053a7e70..1f4d9bb9a31f744767cff6e6e992bce6e39b0c6e 100644
--- a/package.json
+++ b/package.json
@@ -79,6 +79,7 @@
     "seedrandom": "^2.4.3",
     "semver": "^5.3.0",
     "tarima": "^3.8.1",
+    "ts-node": "^3.3.0",
     "tslib": "^1.8.0",
     "tslint": "^4.0.2",
     "tv4": "^1.2.7",
diff --git a/spec/unit/core/infer.spec.js b/spec/unit/core/infer.spec.js
index 23a63a890600f9942770c1a8849bc385981b8df0..9013848e84b6f7bb9f84ce30d4b9814ee5d4357d 100644
--- a/spec/unit/core/infer.spec.js
+++ b/spec/unit/core/infer.spec.js
@@ -1,4 +1,4 @@
-var infer = require('../../../lib/core/infer');
+var infer = require('../../../ts/core/infer').default;
 
 describe("Infer", function () {
 
diff --git a/spec/unit/core/utils.spec.js b/spec/unit/core/utils.spec.js
index 6981368dade9cb6b05b9a90705ad7e933d95a950..262502bb33456c42ba90479b256381e98ef0986d 100644
--- a/spec/unit/core/utils.spec.js
+++ b/spec/unit/core/utils.spec.js
@@ -1,4 +1,4 @@
-var utils = require('../../../lib/core/utils');
+var utils = require('../../../ts/core/utils').default;
 
 describe("Utils", function () {
 
diff --git a/spec/unit/generators/boolean.spec.js b/spec/unit/generators/boolean.spec.js
index 287913341c7c66c1b928b632864e9e284bfa7499..23d2418e8c01fe7549b2d8269201eb4061c18e04 100644
--- a/spec/unit/generators/boolean.spec.js
+++ b/spec/unit/generators/boolean.spec.js
@@ -1,4 +1,4 @@
-var booleanGenerator = require('../../../lib/generators/boolean');
+var booleanGenerator = require('../../../ts/generators/boolean').default;
 
 describe("Boolean Generator", function() {
   it("should always return a boolean type", function() {
diff --git a/spec/unit/generators/ipv4.spec.js b/spec/unit/generators/ipv4.spec.js
index 4ce8672238027683ddb35faab17b2535e4d834fd..b3e02b15ffb4987b922edc1f475cc2881ef70014 100644
--- a/spec/unit/generators/ipv4.spec.js
+++ b/spec/unit/generators/ipv4.spec.js
@@ -1,4 +1,4 @@
-var ipv4Generator = require('../../../lib/generators/ipv4');
+var ipv4Generator = require('../../../ts/generators/ipv4').default;
 
 describe("IPv4 Generator", function() {
   it("should always match the IPv4 regex", function() {
diff --git a/spec/unit/generators/null.spec.js b/spec/unit/generators/null.spec.js
index 67396d752a976a39fda32129eba218131b1a5a0e..e5fdba736a330b63fae2dff409e4a3733c33a8f6 100644
--- a/spec/unit/generators/null.spec.js
+++ b/spec/unit/generators/null.spec.js
@@ -1,4 +1,4 @@
-var nullGenerator = require('../../../lib/generators/null');
+var nullGenerator = require('../../../ts/generators/null').default;
 
 describe("Null Generator", function() {
   it("should always return `null` value", function() {
diff --git a/spec/unit/helpers.js b/spec/unit/helpers.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d91a2527cf8e253406929f397d5413d9b9a506c
--- /dev/null
+++ b/spec/unit/helpers.js
@@ -0,0 +1 @@
+require('ts-node').register({ fast: true });
diff --git a/yarn.lock b/yarn.lock
index 90b46e2823603c8344cdfbfdde194af807efe622..ee1862f195f4b82af6527b5be60c902d7b619731 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -292,7 +292,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-chalk@^2.0.1:
+chalk@^2.0.0, chalk@^2.0.1:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
   dependencies:
@@ -510,7 +510,7 @@ deref@^0.7.0:
   dependencies:
     deep-extend "^0.4.0"
 
-diff@^3.0.1:
+diff@^3.0.1, diff@^3.1.0:
   version "3.4.0"
   resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
 
@@ -1069,6 +1069,12 @@ hoek@4.x.x:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
 
+homedir-polyfill@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
+  dependencies:
+    parse-passwd "^1.0.0"
+
 http-signature@~1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -1501,6 +1507,10 @@ make-dir@^1.0.0:
   dependencies:
     pify "^2.3.0"
 
+make-error@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96"
+
 marked@^0.3.5:
   version "0.3.6"
   resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7"
@@ -1682,6 +1692,10 @@ parse-ms@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d"
 
+parse-passwd@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+
 path-is-absolute@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -2038,22 +2052,28 @@ source-list-map@~0.1.7:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
 
+source-map-support@^0.4.0:
+  version "0.4.18"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
+  dependencies:
+    source-map "^0.5.6"
+
 source-map@^0.4.4, source-map@~0.4.1:
   version "0.4.4"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
   dependencies:
     amdefine ">=0.0.4"
 
+source-map@^0.5.6, source-map@~0.5.1:
+  version "0.5.7"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
 source-map@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
   dependencies:
     amdefine ">=0.0.4"
 
-source-map@~0.5.1:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
 sprintf-js@~1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -2121,7 +2141,7 @@ strip-indent@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
 
-strip-json-comments@~2.0.1:
+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
 
@@ -2215,6 +2235,28 @@ tryit@^1.0.1:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
 
+ts-node@^3.3.0:
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69"
+  dependencies:
+    arrify "^1.0.0"
+    chalk "^2.0.0"
+    diff "^3.1.0"
+    make-error "^1.1.1"
+    minimist "^1.2.0"
+    mkdirp "^0.5.1"
+    source-map-support "^0.4.0"
+    tsconfig "^6.0.0"
+    v8flags "^3.0.0"
+    yn "^2.0.0"
+
+tsconfig@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032"
+  dependencies:
+    strip-bom "^3.0.0"
+    strip-json-comments "^2.0.0"
+
 tslib@^1.8.0:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6"
@@ -2360,6 +2402,12 @@ uuid@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
 
+v8flags@^3.0.0:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
+  dependencies:
+    homedir-polyfill "^1.0.1"
+
 validator@^8.0.0:
   version "8.2.0"
   resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9"
@@ -2484,6 +2532,10 @@ yargs@~3.10.0:
     decamelize "^1.0.0"
     window-size "0.1.0"
 
+yn@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+
 z-schema@^3.18.1:
   version "3.18.4"
   resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2"