diff --git a/lazypipe/lazypipe-tests.ts b/lazypipe/lazypipe-tests.ts
new file mode 100644
index 000000000..cd3d3a7fb
--- /dev/null
+++ b/lazypipe/lazypipe-tests.ts
@@ -0,0 +1,18 @@
+///
+///
+///
+///
+
+import * as gulp from "gulp";
+import minifyHtml = require("gulp-minify-html");
+import size = require("gulp-size");
+import lazypipe = require("lazypipe");
+
+const pipeline = lazypipe()
+ .pipe(size)
+ .pipe(minifyHtml, {})
+ .pipe(size);
+
+gulp.src("*.html")
+ .pipe(pipeline())
+ .pipe(gulp.dest("build"));
diff --git a/lazypipe/lazypipe.d.ts b/lazypipe/lazypipe.d.ts
new file mode 100644
index 000000000..c0fd43ac2
--- /dev/null
+++ b/lazypipe/lazypipe.d.ts
@@ -0,0 +1,31 @@
+// Type definitions for lazypipe
+// Project: https://github.com/OverZealous/lazypipe
+// Definitions by: Thomas Corbière
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module "lazypipe"
+{
+ interface IPipelineBuilder
+ {
+ /**
+ * Returns a stream where all the internal steps are processed sequentially
+ * and the final result is passed on.
+ */
+ (): NodeJS.ReadWriteStream;
+
+ /**
+ * Creates a new lazy pipeline with all the previous steps, and the new step added to the end.
+ * @param fn A stream creation function to call when the pipeline is created later.
+ * @param args Any remaining arguments are saved and passed into fn when the pipeline is created.
+ */
+ pipe(fn: Function, ...args: any[]): IPipelineBuilder;
+ }
+
+ /**
+ * Initializes a lazypipe.
+ */
+ function lazypipe(): IPipelineBuilder;
+ export = lazypipe;
+}