diff --git a/favico.js/favico.js-tests.ts b/favico.js/favico.js-tests.ts
new file mode 100644
index 0000000000..74130d5877
--- /dev/null
+++ b/favico.js/favico.js-tests.ts
@@ -0,0 +1,68 @@
+///
+
+
+// constructor options
+
+var plain = (): favicojs.Favico => new Favico({
+});
+
+var repositioned = (): favicojs.Favico => new Favico({
+ position: 'upleft'
+});
+
+var shaped = (): favicojs.Favico => new Favico({
+ type: 'rectangle'
+});
+
+var usingCustomFont = (): favicojs.Favico => new Favico({
+ fontFamily: 'FontAwesome',
+ elementId: 'badgefont'
+});
+
+var colored = (): favicojs.Favico => new Favico({
+ bgColor: '#5CB85C',
+ textColor: '#ff0'
+});
+
+var domBound = (): favicojs.Favico => new Favico({
+ element: document.getElementById('favico')
+});
+
+var iconUrlHandler = (url: string): void => {
+ console.log(url);
+};
+var withDataUrl = (): favicojs.Favico => new Favico({
+ dataUrl: iconUrlHandler
+});
+
+
+var favicons: favicojs.Favico[] = [
+ plain(),
+ repositioned(),
+ shaped(),
+ usingCustomFont(),
+ colored(),
+ domBound(),
+ withDataUrl(),
+];
+
+
+// public methods
+
+favicons.map(favico => {
+
+ // badge
+ favico.badge(2);
+ favico.badge(3, 'slide');
+ favico.badge(3000, {animation: 'none', type: 'rectangle'});
+ favico.reset();
+
+ // image
+ favico.image(document.getElementById('image'));
+
+ // video
+ favico.video(document.getElementById('video'));
+
+ // webcam
+ favico.webcam();
+});
diff --git a/favico.js/favico.js.d.ts b/favico.js/favico.js.d.ts
new file mode 100644
index 0000000000..37121f9c89
--- /dev/null
+++ b/favico.js/favico.js.d.ts
@@ -0,0 +1,43 @@
+// Type definitions for favico.js
+// Project: http://lab.ejci.net/favico.js/
+// Definitions by: Yu Matsushita
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+
+declare module favicojs {
+
+ interface FavicoJsStatic {
+ new (opt?: FavicoJsOptions): Favico;
+ }
+
+ interface FavicoJsOptions {
+ bgColor?: string;
+ textColor?: string;
+ fontFamily?: string;
+ fontStyle?: string;
+ type?: string;
+ position?: string;
+ animation?: string;
+ elementId?: string;
+ element?: HTMLElement;
+ dataUrl?: (url: string) => any;
+ }
+
+ interface Favico {
+
+ badge(number: number): void;
+ badge(number: number, animation: string): void;
+ badge(number: number, opts: FavicoJsOptions): void;
+
+ reset(): void;
+
+ image(imageElement: HTMLElement): void;
+
+ video(imageElement: HTMLElement): void;
+
+ webcam(): void;
+ }
+}
+
+
+declare var Favico: favicojs.FavicoJsStatic;