diff --git a/es6-collections/es6-collections-tests.ts b/es6-collections/es6-collections-tests.ts
new file mode 100644
index 000000000..256994272
--- /dev/null
+++ b/es6-collections/es6-collections-tests.ts
@@ -0,0 +1,59 @@
+///
+
+interface Point { x: number; y: number; }
+let a: any;
+let s: string;
+let b: boolean;
+let i: number;
+let pt: Point;
+let arrayOfPoint: Point[];
+let arrayOfStringPoint: [string, Point][];
+let arrayOfPointString: [Point, string][];
+let map: Map;
+let set: Set;
+let weakMap: WeakMap;
+let weakSet: WeakSet;
+let iteratorOfString: Iterator;
+let iteratorOfStringPoint: Iterator<[String, Point]>;
+let iteratorOfPoint: Iterator;
+let iteratorOfPointPoint: Iterator<[Point, Point]>;
+
+map = new Map();
+map = new Map(arrayOfStringPoint);
+map.clear();
+b = map.delete(s);
+map.forEach((value: Point, key: string, map: Map) => { }, a);
+pt = map.get(s);
+b = map.has(s);
+map = map.set(s, pt);
+iteratorOfStringPoint = map.entries();
+iteratorOfString = map.keys();
+iteratorOfPoint = map.values();
+i = map.size;
+
+set = new Set();
+set = new Set(arrayOfPoint);
+set.clear();
+b = set.delete(pt);
+set.forEach((value: Point, key: Point, set: Set) => { }, a);
+b = set.has(pt);
+set = set.add(pt);
+iteratorOfPointPoint = set.entries();
+iteratorOfPoint = set.keys();
+iteratorOfPoint = set.values();
+i = set.size;
+
+weakMap = new WeakMap();
+weakMap = new WeakMap(arrayOfPointString);
+weakMap.clear();
+b = weakMap.delete(pt);
+s = weakMap.get(pt);
+b = weakMap.has(pt);
+weakMap = weakMap.set(pt, s);
+
+weakSet = new WeakSet();
+weakSet = new WeakSet(arrayOfPoint);
+weakSet.clear();
+b = weakSet.delete(pt);
+b = weakSet.has(pt);
+weakSet = weakSet.add(pt);
\ No newline at end of file
diff --git a/es6-collections/es6-collections-tests.ts.tscparams b/es6-collections/es6-collections-tests.ts.tscparams
new file mode 100644
index 000000000..4169d3605
--- /dev/null
+++ b/es6-collections/es6-collections-tests.ts.tscparams
@@ -0,0 +1 @@
+--noImplicitAny --module commonjs --target es5
\ No newline at end of file
diff --git a/es6-collections/es6-collections.d.ts b/es6-collections/es6-collections.d.ts
new file mode 100644
index 000000000..54bcbca01
--- /dev/null
+++ b/es6-collections/es6-collections.d.ts
@@ -0,0 +1,113 @@
+// Type definitions for es6-collections v0.5.1
+// Project: https://github.com/WebReflection/es6-collections/
+// Definitions by: Ron Buckton
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+/* *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+interface IteratorResult {
+ done: boolean;
+ value?: T;
+}
+
+interface Iterator {
+ next(value?: any): IteratorResult;
+ return?(value?: any): IteratorResult;
+ throw?(e?: any): IteratorResult;
+}
+
+interface ForEachable {
+ forEach(callbackfn: (value: T) => void): void;
+}
+
+interface Map {
+ clear(): void;
+ delete(key: K): boolean;
+ forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void;
+ get(key: K): V;
+ has(key: K): boolean;
+ set(key: K, value?: V): Map;
+ entries(): Iterator<[K, V]>;
+ keys(): Iterator;
+ values(): Iterator;
+ size: number;
+}
+
+interface MapConstructor {
+ new (): Map;
+ new (iterable: ForEachable<[K, V]>): Map;
+ prototype: Map;
+}
+
+declare var Map: MapConstructor;
+
+interface Set {
+ add(value: T): Set;
+ clear(): void;
+ delete(value: T): boolean;
+ forEach(callbackfn: (value: T, index: T, set: Set) => void, thisArg?: any): void;
+ has(value: T): boolean;
+ entries(): Iterator<[T, T]>;
+ keys(): Iterator;
+ values(): Iterator;
+ size: number;
+}
+
+interface SetConstructor {
+ new (): Set;
+ new (iterable: ForEachable): Set;
+ prototype: Set;
+}
+
+declare var Set: SetConstructor;
+
+interface WeakMap {
+ delete(key: K): boolean;
+ clear(): void;
+ get(key: K): V;
+ has(key: K): boolean;
+ set(key: K, value?: V): WeakMap;
+}
+
+interface WeakMapConstructor {
+ new (): WeakMap;
+ new (iterable: ForEachable<[K, V]>): WeakMap;
+ prototype: WeakMap;
+}
+
+declare var WeakMap: WeakMapConstructor;
+
+interface WeakSet {
+ delete(value: T): boolean;
+ clear(): void;
+ add(value: T): WeakSet;
+ has(value: T): boolean;
+}
+
+interface WeakSetConstructor {
+ new (): WeakSet;
+ new (iterable: ForEachable): WeakSet;
+ prototype: WeakSet;
+}
+
+declare var WeakSet: WeakSetConstructor;
+
+declare module "es6-collections" {
+ var Map: MapConstructor;
+ var Set: SetConstructor;
+ var WeakMap: WeakMapConstructor;
+ var WeakSet: WeakSetConstructor;
+}
\ No newline at end of file