diff --git a/node_modules/now-and-later/LICENSE b/node_modules/now-and-later/LICENSE
new file mode 100644
index 0000000..0b2955a
--- /dev/null
+++ b/node_modules/now-and-later/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Blaine Bublitz, Eric Schoffstall and other contributors
+
+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/now-and-later/README.md b/node_modules/now-and-later/README.md
new file mode 100644
index 0000000..15486a8
--- /dev/null
+++ b/node_modules/now-and-later/README.md
@@ -0,0 +1,203 @@
+<p align="center">
+  <a href="http://gulpjs.com">
+    <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
+  </a>
+</p>
+
+# now-and-later
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
+
+Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.
+
+## Usage
+
+```js
+var nal = require('now-and-later');
+
+function iterator(value, key, cb){
+  // called with each value in sequence
+  // also passes the key
+  cb(null, value * 2)
+}
+
+function create(value, key){
+  // called at the beginning of every iteration
+  // return a storage object to be passed to each lifecycle method
+  return { key: key, value: value };
+}
+
+function before(storage){
+  // called before the iterator function of every iteration
+  // receives the storage returned from `create`
+}
+
+function after(result, storage){
+  // called after a success occurs in the iterator function of any iteration
+  // receives the `result` of the iterator and the storage returned from `create`
+}
+
+function error(error, storage){
+  // called after an error occurs in the iterator function of any iteration
+  // receives the `error` of the iterator and the storage returned from `create`
+}
+
+function done(error, results) {
+  // called after all iterations complete or an error occurs in an iterator
+  // receives an `error` if one occurred and all results (or partial results upon error) of the iterators
+}
+
+/*
+  Calling mapSeries with an object can't guarantee order
+  It uses Object.keys to get an order
+  It is better to use an array if order must be guaranteed
+ */
+nal.mapSeries([1, 2, 3], iterator, {
+  create: create,
+  before: before,
+  after: after,
+  error: error
+}, done);
+
+nal.map({
+  iter1: 1,
+  iter2: 2
+}, iterator, {
+  create: create,
+  before: before,
+  after: after,
+  error: error
+}, done);
+```
+
+## API
+
+### `map(values, iterator[, extensions][, callback])`
+
+Takes an object or array of `values` and an `iterator` function to execute with each value.
+Optionally, takes an `extensions` object and a `callback` function that is called upon completion of the iterations.
+
+All iterations run in parallel.
+
+#### `values`
+
+An array or object of values to iterate over.
+
+If `values` is an array, iterations are started in order by index. If `values` is an object, iterations are started in order by the order returned by `Object.keys` (order is not guaranteed).
+
+If `values` is an array, the results of each iteration will be mapped to an array. If `values` is an object, the results of each iteration will be mapped to an object with corresponding keys.
+
+#### `iterator(value, key, done)`
+
+An async function called per iteration. All iterations are run in parallel.
+
+The `iterator` function is called once with each `value`, `key` and a function (`done(error, result)`) to call when the async work is complete.
+
+If `done` is passed an error as the first argument, the iteration will fail and the sequence will be ended; however, any iterations in progress will still complete. If `done` is passed a `result` value as the second argument, it will be added to the final results array or object.
+
+#### `extensions`
+
+The `extensions` object is used for specifying functions that give insight into the lifecycle of each iteration. The possible extension points are `create`, `before`, `after` and `error`. If an extension point is not specified, it defaults to a no-op function.
+
+##### `extensions.create(value, key)`
+
+Called at the very beginning of each iteration with the `value` being iterated and the `key` from the array or object. If `create` returns a value (`storage`), it is passed to the `before`, `after` and `error` extension points.
+
+If a value is not returned, an empty object is used as `storage` for each other extension point.
+
+This is useful for tracking information across an iteration.
+
+##### `extensions.before(storage)`
+
+Called immediately before each iteration with the `storage` value returned from the `create` extension point.
+
+##### `extensions.after(result, storage)`
+
+Called immediately after each iteration with the `result` of the iteration and the `storage` value returned from the `create` extension point.
+
+##### `extensions.error(error, storage)`
+
+Called immediately after a failed iteration with the `error` of the iteration and the `storage` value returned from the `create` extension point.
+
+#### `callback(error, results)`
+
+A function that is called after all iterations have completed or one iteration has errored.
+
+If all iterations completed successfully, the `error` argument will be empty and the `results` will be a mapping of the `iterator` results.
+
+If an iteration errored, the `error` argument will be passed from that iteration and the `results` will be whatever partial results had completed successfully before the error occurred.
+
+### `mapSeries(values, iterator[, extensions][, callback])`
+
+Takes an object or array of `values` and an `iterator` function to execute with each value.
+Optionally, takes an `extensions` object and a `callback` function that is called upon completion of the iterations.
+
+All iterations run in serial.
+
+#### `values`
+
+An array or object of values to iterate over.
+
+If `values` is an array, iterations are started in order by index. If `values` is an object, iterations are started in order by the order returned by `Object.keys` (order is not guaranteed).
+
+If `values` is an array, the results of each iteration will be mapped to an array. If `values` is an object, the results of each iteration will be mapped to an object with corresponding keys.
+
+#### `iterator(value, key, done)`
+
+An async function called per iteration. All iterations are run in serial.
+
+The `iterator` function is called once with each `value`, `key` and a function (`done(error, result)`) to call when the async work is complete.
+
+If `done` is passed an error as the first argument, the iteration will fail and the sequence will be ended without executing any more iterations. If `done` is passed a `result` value as the second argument, it will be added to the final results array or object.
+
+#### `extensions`
+
+The `extensions` object is used for specifying functions that give insight into the lifecycle of each iteration. The possible extension points are `create`, `before`, `after` and `error`. If an extension point is not specified, it defaults to a no-op function.
+
+##### `extensions.create(value, key)`
+
+Called at the very beginning of each iteration with the `value` being iterated and the `key` from the array or object. If `create` returns a value (`storage`), it is passed to the `before`, `after` and `error` extension points.
+
+If a value is not returned, an empty object is used as `storage` for each other extension point.
+
+This is useful for tracking information across an iteration.
+
+##### `extensions.before(storage)`
+
+Called immediately before each iteration with the `storage` value returned from the `create` extension point.
+
+##### `extensions.after(result, storage)`
+
+Called immediately after each iteration with the `result` of the iteration and the `storage` value returned from the `create` extension point.
+
+##### `extensions.error(error, storage)`
+
+Called immediately after a failed iteration with the `error` of the iteration and the `storage` value returned from the `create` extension point.
+
+#### `callback(error, results)`
+
+A function that is called after all iterations have completed or one iteration has errored.
+
+If all iterations completed successfully, the `error` argument will be empty and the `results` will be a mapping of the `iterator` results.
+
+If an iteration errored, the `error` argument will be passed from that iteration and the `results` will be whatever partial results had completed successfully before the error occurred.
+
+## License
+
+MIT
+
+[downloads-image]: http://img.shields.io/npm/dm/now-and-later.svg
+[npm-url]: https://www.npmjs.com/package/now-and-later
+[npm-image]: http://img.shields.io/npm/v/now-and-later.svg
+
+[travis-url]: https://travis-ci.org/gulpjs/now-and-later
+[travis-image]: http://img.shields.io/travis/gulpjs/now-and-later.svg?label=travis-ci
+
+[appveyor-url]: https://ci.appveyor.com/project/gulpjs/now-and-later
+[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/now-and-later.svg?label=appveyor
+
+[coveralls-url]: https://coveralls.io/r/gulpjs/now-and-later
+[coveralls-image]: http://img.shields.io/coveralls/gulpjs/now-and-later/master.svg
+
+[gitter-url]: https://gitter.im/gulpjs/gulp
+[gitter-image]: https://badges.gitter.im/gulpjs/gulp.svg
diff --git a/node_modules/now-and-later/index.js b/node_modules/now-and-later/index.js
new file mode 100644
index 0000000..692f0b7
--- /dev/null
+++ b/node_modules/now-and-later/index.js
@@ -0,0 +1,6 @@
+'use strict';
+
+module.exports = {
+  map: require('./lib/map'),
+  mapSeries: require('./lib/mapSeries'),
+};
diff --git a/node_modules/now-and-later/lib/helpers.js b/node_modules/now-and-later/lib/helpers.js
new file mode 100644
index 0000000..b0e913c
--- /dev/null
+++ b/node_modules/now-and-later/lib/helpers.js
@@ -0,0 +1,41 @@
+'use strict';
+
+function noop() {}
+
+var defaultExts = {
+  create: noop,
+  before: noop,
+  after: noop,
+  error: noop,
+};
+
+function defaultExtensions(extensions) {
+  extensions = extensions || {};
+  return {
+    create: extensions.create || defaultExts.create,
+    before: extensions.before || defaultExts.before,
+    after: extensions.after || defaultExts.after,
+    error: extensions.error || defaultExts.error,
+  };
+}
+
+function initializeResults(values) {
+  var keys = Object.keys(values);
+  var results = Array.isArray(values) ? [] : {};
+
+  var idx = 0;
+  var length = keys.length;
+
+  for (idx = 0; idx < length; idx++) {
+    var key = keys[idx];
+    results[key] = undefined;
+  }
+
+  return results;
+}
+
+module.exports = {
+  defaultExtensions: defaultExtensions,
+  noop: noop,
+  initializeResults: initializeResults,
+};
diff --git a/node_modules/now-and-later/lib/map.js b/node_modules/now-and-later/lib/map.js
new file mode 100644
index 0000000..cd278fe
--- /dev/null
+++ b/node_modules/now-and-later/lib/map.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var once = require('once');
+
+var helpers = require('./helpers');
+
+function map(values, iterator, extensions, done) {
+  // Allow for extensions to not be specified
+  if (typeof extensions === 'function') {
+    done = extensions;
+    extensions = {};
+  }
+
+  // Handle no callback case
+  if (typeof done !== 'function') {
+    done = helpers.noop;
+  }
+
+  done = once(done);
+
+  // Will throw if non-object
+  var keys = Object.keys(values);
+  var length = keys.length;
+  var count = length;
+  var idx = 0;
+  // Return the same type as passed in
+  var results = helpers.initializeResults(values);
+
+  var exts = helpers.defaultExtensions(extensions);
+
+  if (length === 0) {
+    return done(null, results);
+  }
+
+  for (idx = 0; idx < length; idx++) {
+    var key = keys[idx];
+    next(key);
+  }
+
+  function next(key) {
+    var value = values[key];
+
+    var storage = exts.create(value, key) || {};
+
+    exts.before(storage);
+    iterator(value, key, once(handler));
+
+    function handler(err, result) {
+      if (err) {
+        exts.error(err, storage);
+        return done(err, results);
+      }
+
+      exts.after(result, storage);
+      results[key] = result;
+      if (--count === 0) {
+        done(err, results);
+      }
+    }
+  }
+}
+
+module.exports = map;
diff --git a/node_modules/now-and-later/lib/mapSeries.js b/node_modules/now-and-later/lib/mapSeries.js
new file mode 100644
index 0000000..02cce77
--- /dev/null
+++ b/node_modules/now-and-later/lib/mapSeries.js
@@ -0,0 +1,63 @@
+'use strict';
+
+var once = require('once');
+
+var helpers = require('./helpers');
+
+function mapSeries(values, iterator, extensions, done) {
+  // Allow for extensions to not be specified
+  if (typeof extensions === 'function') {
+    done = extensions;
+    extensions = {};
+  }
+
+  // Handle no callback case
+  if (typeof done !== 'function') {
+    done = helpers.noop;
+  }
+
+  done = once(done);
+
+  // Will throw if non-object
+  var keys = Object.keys(values);
+  var length = keys.length;
+  var idx = 0;
+  // Return the same type as passed in
+  var results = helpers.initializeResults(values);
+
+  var exts = helpers.defaultExtensions(extensions);
+
+  if (length === 0) {
+    return done(null, results);
+  }
+
+  var key = keys[idx];
+  next(key);
+
+  function next(key) {
+    var value = values[key];
+
+    var storage = exts.create(value, key) || {};
+
+    exts.before(storage);
+    iterator(value, key, once(handler));
+
+    function handler(err, result) {
+      if (err) {
+        exts.error(err, storage);
+        return done(err, results);
+      }
+
+      exts.after(result, storage);
+      results[key] = result;
+
+      if (++idx >= length) {
+        done(err, results);
+      } else {
+        next(keys[idx]);
+      }
+    }
+  }
+}
+
+module.exports = mapSeries;
diff --git a/node_modules/now-and-later/package.json b/node_modules/now-and-later/package.json
new file mode 100644
index 0000000..dbf9ff1
--- /dev/null
+++ b/node_modules/now-and-later/package.json
@@ -0,0 +1,93 @@
+{
+  "_from": "now-and-later@^2.0.0",
+  "_id": "now-and-later@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",
+  "_location": "/now-and-later",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "now-and-later@^2.0.0",
+    "name": "now-and-later",
+    "escapedName": "now-and-later",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/vinyl-sourcemap"
+  ],
+  "_resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
+  "_shasum": "8e579c8685764a7cc02cb680380e94f43ccb1f7c",
+  "_spec": "now-and-later@^2.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\vinyl-sourcemap",
+  "author": {
+    "name": "Gulp Team",
+    "email": "team@gulpjs.com",
+    "url": "http://gulpjs.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/gulpjs/now-and-later/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com"
+    }
+  ],
+  "dependencies": {
+    "once": "^1.3.2"
+  },
+  "deprecated": false,
+  "description": "Map over an array or object of values in parallel or series, passing each through the async iterator, with optional lifecycle hooks.",
+  "devDependencies": {
+    "eslint": "^1.7.3",
+    "eslint-config-gulp": "^2.0.0",
+    "expect": "^1.19.0",
+    "istanbul": "^0.4.3",
+    "istanbul-coveralls": "^1.0.3",
+    "jscs": "^2.3.5",
+    "jscs-preset-gulp": "^1.0.0",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">= 0.10"
+  },
+  "files": [
+    "index.js",
+    "lib",
+    "LICENSE"
+  ],
+  "homepage": "https://github.com/gulpjs/now-and-later#readme",
+  "keywords": [
+    "async",
+    "async.js",
+    "map",
+    "control",
+    "flow",
+    "extension",
+    "tracing",
+    "debug",
+    "aop",
+    "aspect",
+    "timing",
+    "tracing"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "now-and-later",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gulpjs/now-and-later.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover _mocha --report lcovonly",
+    "coveralls": "npm run cover && istanbul-coveralls",
+    "lint": "eslint . && jscs index.js lib/ test/",
+    "pretest": "npm run lint",
+    "test": "mocha --async-only"
+  },
+  "version": "2.0.1"
+}
