diff --git a/deep-extend/deep-extend-tests.ts b/deep-extend/deep-extend-tests.ts
new file mode 100644
index 0000000000..f5e35af352
--- /dev/null
+++ b/deep-extend/deep-extend-tests.ts
@@ -0,0 +1,36 @@
+///
+
+import deepExtend = require('deep-extend');
+var obj1 = {
+ a: 1,
+ b: 2,
+ d: {
+ a: 1,
+ b: [true],
+ c: { test1: 123, test2: 321 }
+ },
+ f: 5,
+ g: 123,
+ i: 321,
+ j: [1, 2]
+};
+var obj2 = {
+ b: 3,
+ c: 5,
+ d: {
+ b: { first: 'one', second: 'two' },
+ c: { test2: 222 }
+ },
+ e: { one: 1, two: 2 },
+ f: [42],
+ g: function(){},
+ h: /abc/g,
+ i: null as {aaa: boolean},
+ j: [3, 4]
+};
+
+deepExtend(obj1, obj2);
+deepExtend(obj1, obj2, {ccc: 3});
+deepExtend(obj1, obj2, {ccc: 3}, {ddd: 4});
+
+
diff --git a/deep-extend/deep-extend.d.ts b/deep-extend/deep-extend.d.ts
new file mode 100644
index 0000000000..164e337a95
--- /dev/null
+++ b/deep-extend/deep-extend.d.ts
@@ -0,0 +1,15 @@
+// Type definitions for open 0.4.1
+// Project: https://github.com/unclechu/node-deep-extend
+// Definitions by: rhysd
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare module 'deep-extend' {
+ /*
+ * Recursive object extending.
+ */
+ function deepExtend(target: T, source: U): T & U;
+ function deepExtend(target: T, source1: U, source2: V): T & U & V;
+ function deepExtend(target: T, source1: U, source2: V, source3: W): T & U & V & W;
+ function deepExtend(target: any, ...sources: any[]): any;
+ export = deepExtend;
+}