diff --git a/gulp-remember/gulp-remember-tests.ts b/gulp-remember/gulp-remember-tests.ts
new file mode 100644
index 000000000..804832c5d
--- /dev/null
+++ b/gulp-remember/gulp-remember-tests.ts
@@ -0,0 +1,25 @@
+///
+///
+
+import * as gulp from "gulp";
+import remember = require("gulp-remember");
+
+// Usage
+gulp.src("*.ts")
+ .pipe(remember());
+
+gulp.src("*.ts")
+ .pipe(remember("ts-cache"));
+
+// Drops a file from a remember cache
+remember.forget("main.ts");
+remember.forget("ts-cache", "main.ts");
+
+// Drops all files from a remember cache
+remember.forgetAll();
+remember.forgetAll("ts-cache");
+
+// Get a raw remember cache
+remember.cacheFor();
+remember.cacheFor("ts-cache");
+remember.cacheFor("ts-cache")["main.ts"];
diff --git a/gulp-remember/gulp-remember.d.ts b/gulp-remember/gulp-remember.d.ts
new file mode 100644
index 000000000..f606646e2
--- /dev/null
+++ b/gulp-remember/gulp-remember.d.ts
@@ -0,0 +1,59 @@
+// Type definitions for gulp-remember
+// Project: https://github.com/ahaurw01/gulp-remember
+// Definitions by: Thomas Corbière
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module "gulp-remember"
+{
+ interface ICache
+ {
+ [path: string]: NodeJS.ReadWriteStream;
+ }
+
+ interface IGulpRemember
+ {
+ /**
+ * Return a through stream that will:
+ * 1. Remember all files that ever pass through it.
+ * 2. Add all remembered files back into the stream when not present.
+ * @param cacheName Name to give your cache
+ */
+ (cacheName?: string): NodeJS.ReadWriteStream;
+
+ /**
+ * Forget about a file.
+ * A warning is logged if either the named cache or file do not exist.
+ * @param path Path of the file to forget
+ */
+ forget(path: string): void;
+
+ /**
+ * Forget about a file.
+ * A warning is logged if either the named cache or file do not exist.
+ * @param cacheName Name of the cache from which to drop the file
+ * @param path Path of the file to forget
+ */
+ forget(cacheName: string, path: string): void;
+
+ /**
+ * Forget all files in one cache.
+ * A warning is logged if the cache does not exist.
+ *
+ * @param cacheName Name of the cache to wipe
+ */
+ forgetAll(cacheName?: string): void;
+
+ /**
+ * Return a raw cache by name.
+ * Useful for checking state. Manually adding or removing files is NOT recommended.
+ *
+ * @param cacheName Name of the cache to retrieve
+ */
+ cacheFor(cacheName?: string): ICache;
+ }
+
+ const remember: IGulpRemember;
+ export = remember;
+}