diff --git a/requirements.txt b/requirements.txt
index 9f60220873fe4098af77b2dc185b0a34e7987d92..46e280fc32f1c6405f67db428a6ff29e2e7aacb7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,8 +1,17 @@
-Cython==0.21
-Kivy==1.9.0-dev
+Cython==0.21.2
+docutils==0.12
+Kivy==1.9.0.dev0
 Kivy-Garden==0.1.1
-argparse==1.2.1
-distribute==0.6.24
-pygame==1.9.1release
-requests==2.4.3
-wsgiref==0.1.2
+mcpi==0.1.1
+numpy==1.6.2
+picamera==1.8
+pifacecommon==4.0.0
+pifacedigitalio==3.0.4
+pygame===1.9.1release
+pyglet==1.1.4
+Pygments==2.0.1
+pygobject==3.8.2
+pyserial==2.5
+requests==2.5.1
+RPi.GPIO==0.5.8
+smbus==1.1
diff --git a/testbox.py b/testbox.py
index 54481ac9b1da069f0ca046862307fbc9b81bd684..a864ffe30eb46abbad05a267fe671d312dbf5899 100644
--- a/testbox.py
+++ b/testbox.py
@@ -1,5 +1,5 @@
-#import kivy
 import os
+import netifaces
 
 os.environ['SDL_VIDEODRIVER'] = 'fbcon'
 os.environ['SDL_FBDEV'] = '/dev/fb1'
@@ -52,6 +52,7 @@ class MyApp(App):
             self.layout.add_widget(self.pb[channel])
         self.meter = Meter(self.channels)
         Clock.schedule_interval(self.measure, 0.01)
+        Clock.schedule_interval(self.get_IP_address, 2)
         return self.layout
     def measure(self, dt):
         measurements = self.meter.measure()
@@ -94,7 +95,27 @@ class MyApp(App):
             # Nothing was found connected
             self.layout.clear_widgets()
             self.layout.add_widget(Label(text="Connect something!", font_size=48))
-
+            poweroff_button = Button(text="[color=ff0000]Shut Down[/color]", font_size=24, markup=True)
+            poweroff_button.bind(on_press=self.poweroff)
+            self.layout.add_widget(poweroff_button)
+            # Display IP address if we have one
+            if hasattr(self, 'ip_address_string') and self.ip_address_string:
+                self.layout.add_widget(Label(
+                    text="[color=3333ff]IP: {0}[/color]"\
+                        .format(self.ip_address_string),
+                    font_size=36,
+                    markup=True
+                    ))
+    def get_IP_address(self, dt):
+        try:
+            gateway_interface = netifaces.gateways()[netifaces.AF_INET][0][1]
+            ip_addresses = netifaces.ifaddresses(gateway_interface)
+            internet_ip_addresses = [addr['addr'] for addr in ip_addresses[netifaces.AF_INET]]
+            self.ip_address_string = ", ".join(internet_ip_addresses)
+        except KeyError:
+            self.ip_address_string = None
+    def poweroff(self, dt):
+        os.system('poweroff')
 
 if __name__ == '__main__':
     MyApp().run()