diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..ee0b197
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+
+# 0.1.0 (2018-02-26)
+
+
+### Features
+
+* **core:** CHECKOUT-2739 Add `ScriptLoader` responsible for loading JS files asynchronously ([06620da](https://github.com/bigcommerce/script-loader-js/commit/06620da))
diff --git a/lib/create-script-loader.d.ts b/lib/create-script-loader.d.ts
new file mode 100644
index 0000000..6877eb4
--- /dev/null
+++ b/lib/create-script-loader.d.ts
@@ -0,0 +1,2 @@
+import ScriptLoader from './script-loader';
+export default function createScriptLoader(): ScriptLoader;
diff --git a/lib/create-script-loader.js b/lib/create-script-loader.js
new file mode 100644
index 0000000..2dcba10
--- /dev/null
+++ b/lib/create-script-loader.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var script_loader_1 = require("./script-loader");
+function createScriptLoader() {
+ return new script_loader_1.default(document);
+}
+exports.default = createScriptLoader;
+//# sourceMappingURL=create-script-loader.js.map
\ No newline at end of file
diff --git a/lib/create-script-loader.js.map b/lib/create-script-loader.js.map
new file mode 100644
index 0000000..86dd578
--- /dev/null
+++ b/lib/create-script-loader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"create-script-loader.js","sourceRoot":"","sources":["../src/create-script-loader.ts"],"names":[],"mappings":";;AAAA,iDAA2C;AAE3C;IACI,MAAM,CAAC,IAAI,uBAAY,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAFD,qCAEC"}
\ No newline at end of file
diff --git a/lib/index.d.ts b/lib/index.d.ts
new file mode 100644
index 0000000..353618f
--- /dev/null
+++ b/lib/index.d.ts
@@ -0,0 +1,2 @@
+export { default as ScriptLoader } from './script-loader';
+export { default as createScriptLoader } from './create-script-loader';
diff --git a/lib/index.js b/lib/index.js
new file mode 100644
index 0000000..8ccf4f1
--- /dev/null
+++ b/lib/index.js
@@ -0,0 +1,7 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var script_loader_1 = require("./script-loader");
+exports.ScriptLoader = script_loader_1.default;
+var create_script_loader_1 = require("./create-script-loader");
+exports.createScriptLoader = create_script_loader_1.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/lib/index.js.map b/lib/index.js.map
new file mode 100644
index 0000000..129e564
--- /dev/null
+++ b/lib/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,iDAA0D;AAAjD,uCAAA,OAAO,CAAgB;AAChC,+DAAuE;AAA9D,oDAAA,OAAO,CAAsB"}
\ No newline at end of file
diff --git a/lib/script-loader.d.ts b/lib/script-loader.d.ts
new file mode 100644
index 0000000..d46c68c
--- /dev/null
+++ b/lib/script-loader.d.ts
@@ -0,0 +1,5 @@
+export default class ScriptLoader {
+ private _document;
+ constructor(_document: Document);
+ loadScript(src: string): Promise;
+}
diff --git a/lib/script-loader.js b/lib/script-loader.js
new file mode 100644
index 0000000..442e142
--- /dev/null
+++ b/lib/script-loader.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var ScriptLoader = (function () {
+ function ScriptLoader(_document) {
+ this._document = _document;
+ }
+ ScriptLoader.prototype.loadScript = function (src) {
+ var _this = this;
+ return new Promise(function (resolve, reject) {
+ var script = _this._document.createElement('script');
+ script.onload = function (event) { return resolve(event); };
+ script.onreadystatechange = function (event) { return resolve(event); };
+ script.onerror = function (event) { return reject(event); };
+ script.async = true;
+ script.src = src;
+ _this._document.body.appendChild(script);
+ });
+ };
+ return ScriptLoader;
+}());
+exports.default = ScriptLoader;
+//# sourceMappingURL=script-loader.js.map
\ No newline at end of file
diff --git a/lib/script-loader.js.map b/lib/script-loader.js.map
new file mode 100644
index 0000000..c6f83ba
--- /dev/null
+++ b/lib/script-loader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"script-loader.js","sourceRoot":"","sources":["../src/script-loader.ts"],"names":[],"mappings":";;AAAA;IACI,sBACY,SAAmB;QAAnB,cAAS,GAAT,SAAS,CAAU;IAC5B,CAAC;IAEJ,iCAAU,GAAV,UAAW,GAAW;QAAtB,iBAYC;QAXG,MAAM,CAAC,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAM,MAAM,GAAG,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAA4B,CAAC;YAEjF,MAAM,CAAC,MAAM,GAAG,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,CAAC;YAC1C,MAAM,CAAC,kBAAkB,GAAG,UAAC,KAAK,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,EAAd,CAAc,CAAC;YACtD,MAAM,CAAC,OAAO,GAAG,UAAC,KAAK,IAAK,OAAA,MAAM,CAAC,KAAK,CAAC,EAAb,CAAa,CAAC;YAC1C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YAEjB,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC;IACL,mBAAC;AAAD,CAAC,AAlBD,IAkBC"}
\ No newline at end of file
diff --git a/package.json b/package.json
index 4c4bd9c..f3d84c7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@bigcommerce/script-loader",
- "version": "0.0.0",
+ "version": "0.1.0",
"description": "A library for loading JavaScript files asynchronously",
"main": "lib/index.js",
"types": "lib/index.d.ts",