diff --git a/drop/drop-tests.ts b/drop/drop-tests.ts
new file mode 100644
index 0000000000..b5ae47456c
--- /dev/null
+++ b/drop/drop-tests.ts
@@ -0,0 +1,28 @@
+///
+///
+
+var yellowBox = document.querySelector(".yellow");
+var greenBox = document.querySelector(".green");
+
+var d = new Drop({
+ position: "bottom left",
+ openOn: "click",
+ constrainToWindow: true,
+ constrainToScrollParent: true,
+ classes: "",
+ tetherOptions: {}
+});
+
+d.open();
+d.close();
+d.remove();
+d.toggle();
+d.position();
+d.destroy();
+
+d.on("open", () => null);
+d.on("close", () => null);
+d.once("close", () => null);
+d.off("close", () => null);
+d.off("open");
+
diff --git a/drop/drop.d.ts b/drop/drop.d.ts
new file mode 100644
index 0000000000..18568afdd6
--- /dev/null
+++ b/drop/drop.d.ts
@@ -0,0 +1,48 @@
+// Type definitions for Drop v0.5
+// Project: http://github.hubspot.com/drop/
+// Definitions by: Adi Dahiya
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module drop {
+
+ interface DropStatic {
+ new(options: IDropOptions): Drop;
+ }
+
+ interface IDropOptions {
+ target?: Element;
+ content?: Element | string | (() => string);
+ position?: string;
+ openOn?: string;
+ constrainToWindow?: boolean;
+ constrainToScrollParent?: boolean;
+ remove?: boolean;
+ tetherOptions?: tether.ITetherOptions;
+ }
+
+ interface Drop {
+ content: HTMLElement;
+ open(): void;
+ close(): void;
+ remove(): void;
+ toggle(): void;
+ position(): void;
+ destroy(): void;
+ /*
+ * Drop instances fire "open" and "close" events.
+ */
+ on(event: string, handler: Function, context?: any): void;
+ once(event: string, handler: Function, context?: any): void;
+ off(event: string, handler?: Function): void;
+ }
+
+}
+
+declare module "drop" {
+ export = drop;
+}
+
+declare var Drop: drop.DropStatic;
+