diff --git a/pi-spi/pi-spi-tests.ts b/pi-spi/pi-spi-tests.ts
new file mode 100644
index 000000000..9ec08f1ba
--- /dev/null
+++ b/pi-spi/pi-spi-tests.ts
@@ -0,0 +1,29 @@
+///
+
+import * as piSPI from 'pi-spi';
+
+var spi:piSPI.SPI = piSPI.initialize("test");
+var b:Buffer = new Buffer("Hello, World!");
+var cb = function(error:Error, data:Buffer):void { };
+
+spi.bitOrder(piSPI.order.LSB_FIRST);
+spi.bitOrder(piSPI.order.MSB_FIRST);
+console.log(spi.bitOrder());
+
+
+spi.dataMode(piSPI.mode.CPHA);
+spi.dataMode(piSPI.mode.CPOL);
+console.log(spi.dataMode());
+
+
+spi.clockSpeed(4e6);
+console.log(spi.clockSpeed());
+
+
+spi.write(b, cb);
+spi.read(13, cb);
+
+spi.transfer(b, cb);
+spi.transfer(b, 13, cb);
+
+spi.close();
diff --git a/pi-spi/pi-spi.d.ts b/pi-spi/pi-spi.d.ts
new file mode 100644
index 000000000..c535bd0bb
--- /dev/null
+++ b/pi-spi/pi-spi.d.ts
@@ -0,0 +1,46 @@
+// Type definitions for pi-spi
+// Project: https://github.com/natevw/pi-spi
+// Definitions by: Marcel Ernst
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+declare namespace __PI_SPI {
+
+ enum mode {
+ CPHA = 0x01,
+ CPOL = 0x02
+ }
+
+ enum order {
+ MSB_FIRST = 0,
+ LSB_FIRST = 1
+ }
+
+ function initialize(device:string):__PI_SPI.SPI;
+
+ class SPI {
+ clockSpeed():number;
+ clockSpeed(speed:number):void;
+
+ dataMode():number;
+ dataMode(mode:mode):void;
+
+ bitOrder():number;
+ bitOrder(order:order):void;
+
+
+ write(writebuf:Buffer, cb:(error:Error,data:Buffer) => void):void;
+ read(readcount:number, cb:(error:Error,data:Buffer) => void):void;
+
+ transfer(writebuf:Buffer, cb:(error:Error,data:Buffer) => void ):void;
+ transfer(writebuf:Buffer, readcount:number, cb:(error:Error,data:Buffer) => void ):void;
+
+ close():void;
+ }
+}
+
+
+declare module "pi-spi" {
+ export = __PI_SPI;
+}
\ No newline at end of file