diff --git a/node_modules/rechoir/.npmignore b/node_modules/rechoir/.npmignore
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/node_modules/rechoir/.npmignore
@@ -0,0 +1 @@
+test
diff --git a/node_modules/rechoir/.travis.yml b/node_modules/rechoir/.travis.yml
new file mode 100644
index 0000000..57e9fda
--- /dev/null
+++ b/node_modules/rechoir/.travis.yml
@@ -0,0 +1,24 @@
+sudo: false
+language: node_js
+node_js:
+  - "0.10"
+  - "0.12"
+env:
+  global:
+    - REMOVE_DEPS=""
+  matrix:
+    - "CUSTOM_DEPS=coffee-script@~1.3"
+    - "CUSTOM_DEPS=coffee-script@~1.5"
+    - "CUSTOM_DEPS=coffee-script@~1.7"
+    - "CUSTOM_DEPS=coffee-script@latest"
+    - "CUSTOM_DEPS=iced-coffee-script@1.6.3-j"
+    - "CUSTOM_DEPS=iced-coffee-script@latest"
+    - "CUSTOM_DEPS=LiveScript@1.3.1 REMOVE_DEPS=livescript"
+    - "CUSTOM_DEPS=typescript-require REMOVE_DEPS=typescript-register"
+matrix:
+  fast_finish: true
+before_install:
+  - "npm install -g npm" # needs the newest version of npm
+before_script:
+  - "[ \"${REMOVE_DEPS}\" == \"\" ] || npm rm $REMOVE_DEPS"
+  - "npm install $CUSTOM_DEPS" # install a specific version of dependencies
diff --git a/node_modules/rechoir/CHANGELOG b/node_modules/rechoir/CHANGELOG
new file mode 100644
index 0000000..e10327b
--- /dev/null
+++ b/node_modules/rechoir/CHANGELOG
@@ -0,0 +1,38 @@
+v0.6.2:
+  date: 2015-07-22
+  changes:
+    - Return `undefined` when an unknown extension is provided to prepare and
+      the `nothrow` option is specified.
+v0.6.1:
+  date: 2015-05-22
+  changes:
+    - Add option for not throwing.
+v0.6.0:
+  date: 2015-05-20
+  changes:
+    - Include module name when prepare is successful.
+v0.5.0:
+  date: 2015-05-20
+  changes:
+    - Overhaul to support interpret 0.6.0.
+v0.3.0:
+  date: 2015-01-10
+  changes:
+    - Breaking: `load` method removed.
+    - Improved extension recognition.
+    - No longer fails upon dots in filenames.
+    - Support confuration objects.
+    - Support and test ES6.
+    - Support legacy module loading.
+v0.2.2:
+  date: 2014-12-17
+  changes:
+    - Expose interpret.
+v0.2.0:
+  date: 2014-04-20
+  changes:
+    - Simplify loading of coffee-script and iced-coffee-script.
+v0.1.0:
+  date: 2014-04-20
+  changes:
+    - Initial public release.
diff --git a/node_modules/rechoir/LICENSE b/node_modules/rechoir/LICENSE
new file mode 100644
index 0000000..f467993
--- /dev/null
+++ b/node_modules/rechoir/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2015 Tyler Kellen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/rechoir/README.md b/node_modules/rechoir/README.md
new file mode 100644
index 0000000..32280c0
--- /dev/null
+++ b/node_modules/rechoir/README.md
@@ -0,0 +1,42 @@
+# rechoir [![Build Status](https://secure.travis-ci.org/tkellen/js-rechoir.png)](http://travis-ci.org/tkellen/js-rechoir)
+> Require any supported file as a node module.
+
+[![NPM](https://nodei.co/npm/rechoir.png)](https://nodei.co/npm/rechoir/)
+
+## What is it?
+This module, in conjunction with [interpret]-like objects can register any file type the npm ecosystem has a module loader for. This library is a dependency of [Liftoff].
+
+## API
+
+### prepare(config, filepath, requireFrom)
+Look for a module loader associated with the provided file and attempt require it.  If necessary, run any setup required to inject it into [require.extensions](http://nodejs.org/api/globals.html#globals_require_extensions).
+
+`config` An [interpret]-like configuration object.  
+
+`filepath` A file whose type you'd like to register a module loader for.
+
+`requireFrom` An optional path to start searching for the module required to load the requested file.  Defaults to the directory of `filepath`.
+
+If calling this method is successful (aka: it doesn't throw), you can now require files of the type you requested natively.
+
+An error with a `failures` property will be thrown if the module loader(s) configured for a given extension cannot be registered.
+
+If a loader is already registered, this will simply return `true`.
+
+**Note:** While rechoir will automatically load and register transpilers like `coffee-script`, you must provide a local installation. The transpilers are **not** bundled with this module.
+
+#### Usage
+```js
+const config = require('interpret').extensions;
+const rechoir = require('rechoir');
+rechoir.prepare(config, './test/fixtures/test.coffee');
+rechoir.prepare(config, './test/fixtures/test.csv');
+rechoir.prepare(config, './test/fixtures/test.toml');
+
+console.log(require('./test/fixtures/test.coffee'));
+console.log(require('./test/fixtures/test.csv'));
+console.log(require('./test/fixtures/test.toml'));
+```
+
+[interpret]: http://github.com/tkellen/js-interpret
+[Liftoff]: http://github.com/tkellen/js-liftoff
diff --git a/node_modules/rechoir/index.js b/node_modules/rechoir/index.js
new file mode 100644
index 0000000..0c36d05
--- /dev/null
+++ b/node_modules/rechoir/index.js
@@ -0,0 +1,59 @@
+const path = require('path');
+
+const extension = require('./lib/extension');
+const normalize = require('./lib/normalize');
+const register = require('./lib/register');
+
+exports.prepare = function (extensions, filepath, cwd, nothrow) {
+  var option, attempt;
+  var attempts = [];
+  var err;
+  var onlyErrors = false;
+  var ext = extension(filepath);
+  if (Object.keys(require.extensions).indexOf(ext) !== -1) {
+    return true;
+  }
+  var config = normalize(extensions[ext]);
+  if (!config) {
+    if (nothrow) {
+      return;
+    } else {
+      throw new Error('No module loader found for "'+ext+'".');
+    }
+  }
+  if (!cwd) {
+    cwd = path.dirname(path.resolve(filepath));
+  }
+  if (!Array.isArray(config)) {
+    config = [config];
+  }
+  for (var i in config) {
+    option = config[i];
+    attempt = register(cwd, option.module, option.register);
+    error = (attempt instanceof Error) ? attempt : null;
+    if (error) {
+      attempt = null;
+    }
+    attempts.push({
+      moduleName: option.module,
+      module: attempt,
+      error: error
+    });
+    if (!error) {
+      onlyErrors = false;
+      break;
+    } else {
+      onlyErrors = true;
+    }
+  }
+  if (onlyErrors) {
+    err = new Error('Unable to use specified module loaders for "'+ext+'".');
+    err.failures = attempts;
+    if (nothrow) {
+      return err;
+    } else {
+      throw err;
+    }
+  }
+  return attempts;
+};
diff --git a/node_modules/rechoir/lib/extension.js b/node_modules/rechoir/lib/extension.js
new file mode 100644
index 0000000..60f19da
--- /dev/null
+++ b/node_modules/rechoir/lib/extension.js
@@ -0,0 +1,11 @@
+const path = require('path');
+
+const EXTRE = /^[.]?[^.]+([.].*)$/;
+
+module.exports = function (input) {
+  var extension = EXTRE.exec(path.basename(input));
+  if (!extension) {
+    return;
+  }
+  return extension[1];
+};
diff --git a/node_modules/rechoir/lib/normalize.js b/node_modules/rechoir/lib/normalize.js
new file mode 100644
index 0000000..0da5e58
--- /dev/null
+++ b/node_modules/rechoir/lib/normalize.js
@@ -0,0 +1,15 @@
+function normalizer (config) {
+  if (typeof config === 'string') {
+    return {
+      module: config
+    }
+  }
+  return config;
+};
+
+module.exports = function (config) {
+  if (Array.isArray(config)) {
+    return config.map(normalizer);
+  }
+  return normalizer(config);
+};
diff --git a/node_modules/rechoir/lib/register.js b/node_modules/rechoir/lib/register.js
new file mode 100644
index 0000000..20e8ca7
--- /dev/null
+++ b/node_modules/rechoir/lib/register.js
@@ -0,0 +1,15 @@
+const path = require('path');
+const resolve = require('resolve');
+
+module.exports = function (cwd, moduleName, register) {
+  try {
+    var modulePath = resolve.sync(moduleName, {basedir: cwd});
+    var result = require(modulePath);
+    if (typeof register === 'function') {
+      register(result);
+    }
+  } catch (e) {
+    result = e;
+  }
+  return result;
+};
diff --git a/node_modules/rechoir/package.json b/node_modules/rechoir/package.json
new file mode 100644
index 0000000..de7dea6
--- /dev/null
+++ b/node_modules/rechoir/package.json
@@ -0,0 +1,113 @@
+{
+  "_from": "rechoir@^0.6.2",
+  "_id": "rechoir@0.6.2",
+  "_inBundle": false,
+  "_integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+  "_location": "/rechoir",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "rechoir@^0.6.2",
+    "name": "rechoir",
+    "escapedName": "rechoir",
+    "rawSpec": "^0.6.2",
+    "saveSpec": null,
+    "fetchSpec": "^0.6.2"
+  },
+  "_requiredBy": [
+    "/liftoff"
+  ],
+  "_resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+  "_shasum": "85204b54dba82d5742e28c96756ef43af50e3384",
+  "_spec": "rechoir@^0.6.2",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\liftoff",
+  "author": {
+    "name": "Tyler Kellen",
+    "url": "http://goingslowly.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/tkellen/node-rechoir/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "resolve": "^1.1.6"
+  },
+  "deprecated": false,
+  "description": "Require any supported file as a node module.",
+  "devDependencies": {
+    "babel": "^5.4.3",
+    "chai": "^2.3.0",
+    "coco": "^0.9.1",
+    "coffee-script": "^1.9.2",
+    "earlgrey": "0.0.9",
+    "iced-coffee-script": "^1.8.0-d",
+    "interpret": "^0.6.1",
+    "json5": "^0.4.0",
+    "livescript": "^1.4.0",
+    "mocha": "^2.2.5",
+    "node-jsx": "^0.13.3",
+    "require-csv": "0.0.1",
+    "require-ini": "0.0.1",
+    "require-uncached": "^1.0.2",
+    "require-xml": "0.0.1",
+    "require-yaml": "0.0.1",
+    "rimraf": "^2.3.4",
+    "semver": "^4.3.4",
+    "sinon": "^1.14.1",
+    "toml-require": "^1.0.1",
+    "typescript-register": "^1.1.0"
+  },
+  "engines": {
+    "node": ">= 0.10"
+  },
+  "homepage": "https://github.com/tkellen/node-rechoir",
+  "keywords": [
+    "require",
+    "cjsx",
+    "co",
+    "coco",
+    "coffee-script",
+    "coffee",
+    "coffee.md",
+    "csv",
+    "earlgrey",
+    "es",
+    "es6",
+    "iced",
+    "iced.md",
+    "iced-coffee-script",
+    "ini",
+    "js",
+    "json",
+    "json5",
+    "jsx",
+    "react",
+    "litcoffee",
+    "liticed",
+    "ls",
+    "livescript",
+    "toml",
+    "ts",
+    "typescript",
+    "xml",
+    "yaml",
+    "yml"
+  ],
+  "licenses": [
+    {
+      "type": "MIT",
+      "url": "https://github.com/tkellen/node-rechoir/blob/master/LICENSE"
+    }
+  ],
+  "main": "index.js",
+  "name": "rechoir",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/tkellen/node-rechoir.git"
+  },
+  "scripts": {
+    "test": "mocha -R spec test/index.js"
+  },
+  "version": "0.6.2"
+}
