diff --git a/node_modules/pascalcase/LICENSE b/node_modules/pascalcase/LICENSE
new file mode 100644
index 0000000..65f90ac
--- /dev/null
+++ b/node_modules/pascalcase/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015, Jon Schlinkert.
+
+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/pascalcase/README.md b/node_modules/pascalcase/README.md
new file mode 100644
index 0000000..fa3fd00
--- /dev/null
+++ b/node_modules/pascalcase/README.md
@@ -0,0 +1,80 @@
+# pascalcase [![NPM version](https://badge.fury.io/js/pascalcase.svg)](http://badge.fury.io/js/pascalcase)
+
+> Convert a string to pascal-case.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/)
+
+```sh
+$ npm i pascalcase --save
+```
+
+## Usage
+
+```js
+var pascalcase = require('pascalcase');
+
+pascalcase('a');
+//=> 'A'
+
+pascalcase('foo bar baz');
+//=> 'FooBarBaz'
+
+pascalcase('foo_bar-baz');
+//=> 'FooBarBaz'
+
+pascalcase('foo.bar.baz');
+//=> 'FooBarBaz'
+
+pascalcase('foo/bar/baz');
+//=> 'FooBarBaz'
+
+pascalcase('foo[bar)baz');
+//=> 'FooBarBaz'
+
+pascalcase('#foo+bar*baz');
+//=> 'FooBarBaz'
+
+pascalcase('$foo~bar`baz');
+//=> 'FooBarBaz'
+
+pascalcase('_foo_bar-baz-');
+//=> 'FooBarBaz'
+```
+
+## Related projects
+
+* [justified](https://github.com/jonschlinkert/justified): Wrap words to a specified length and justified the text.
+* [pad-left](https://github.com/jonschlinkert/pad-left): Left pad a string with zeros or a specified string. Fastest implementation.
+* [pad-right](https://github.com/jonschlinkert/pad-right): Right pad a string with zeros or a specified string. Fastest implementation.
+* [repeat-string](https://github.com/jonschlinkert/repeat-string): Repeat the given string n times. Fastest implementation for repeating a string.
+* [word-wrap](https://github.com/jonschlinkert/word-wrap): Wrap words to a specified length.
+
+## Running tests
+
+Install dev dependencies:
+
+```sh
+$ npm i -d && npm test
+```
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/pascalcase/issues/new)
+
+## Author
+
+**Jon Schlinkert**
+
++ [github/jonschlinkert](https://github.com/jonschlinkert)
++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+
+## License
+
+Copyright © 2015 Jon Schlinkert
+Released under the MIT license.
+
+***
+
+_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on August 19, 2015._
\ No newline at end of file
diff --git a/node_modules/pascalcase/index.js b/node_modules/pascalcase/index.js
new file mode 100644
index 0000000..7e8159c
--- /dev/null
+++ b/node_modules/pascalcase/index.js
@@ -0,0 +1,21 @@
+/*!
+ * pascalcase <https://github.com/jonschlinkert/pascalcase>
+ *
+ * Copyright (c) 2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+function pascalcase(str) {
+  if (typeof str !== 'string') {
+    throw new TypeError('expected a string.');
+  }
+  str = str.replace(/([A-Z])/g, ' $1');
+  if (str.length === 1) { return str.toUpperCase(); }
+  str = str.replace(/^[\W_]+|[\W_]+$/g, '').toLowerCase();
+  str = str.charAt(0).toUpperCase() + str.slice(1);
+  return str.replace(/[\W_]+(\w|$)/g, function (_, ch) {
+    return ch.toUpperCase();
+  });
+}
+
+module.exports = pascalcase;
diff --git a/node_modules/pascalcase/package.json b/node_modules/pascalcase/package.json
new file mode 100644
index 0000000..afbbca3
--- /dev/null
+++ b/node_modules/pascalcase/package.json
@@ -0,0 +1,77 @@
+{
+  "_from": "pascalcase@^0.1.1",
+  "_id": "pascalcase@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+  "_location": "/pascalcase",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "pascalcase@^0.1.1",
+    "name": "pascalcase",
+    "escapedName": "pascalcase",
+    "rawSpec": "^0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "^0.1.1"
+  },
+  "_requiredBy": [
+    "/base"
+  ],
+  "_resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+  "_shasum": "b363e55e8006ca6fe21784d2db22bd15d7917f14",
+  "_spec": "pascalcase@^0.1.1",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\base",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/pascalcase/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Convert a string to pascal-case.",
+  "devDependencies": {
+    "mocha": "*",
+    "should": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/pascalcase",
+  "keywords": [
+    "camelcase",
+    "case",
+    "casing",
+    "pascal",
+    "pascal-case",
+    "pascalcase",
+    "string"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "pascalcase",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/pascalcase.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "related": {
+      "list": [
+        "pad-left",
+        "pad-right",
+        "word-wrap",
+        "repeat-string",
+        "justified"
+      ]
+    }
+  },
+  "version": "0.1.1"
+}
