diff --git a/PixelHub-Client/PixelHub-Client.ino b/PixelHub-Client/PixelHub-Client.ino
new file mode 100755
index 0000000..9017422
--- /dev/null
+++ b/PixelHub-Client/PixelHub-Client.ino
@@ -0,0 +1,95 @@
+/*
+ * Connecting to a WiFi network with WPA
+ ************************************************
+ * Originally adapted from https://www.arduino.cc/en/Tutorial/ConnectWithWPA
+ * by Starbeamrainbowlabs
+ */
+
+#include <ESP8266WiFi.h>
+
+char ssid[] = "ssid";
+char password[] = "password";
+
+// The address that the PixelHub beacon is broadcasting on.
+IPAddress beaconAddress(239, 62, 148, 30);
+// The port number that the PixelHub beacon is broadcasting on.
+unsigned int beaconPort = 5050;
+
+// A UDP Client to allow us to recieve UDP datagrams.
+WiFiUdp UdpClient;
+// A buffer to store recieved datagrams in.
+int datagramBufferSize = 256;
+byte datagramBuffer[datagramBufferSize];
+
+void setup()
+{
+  // Setup the serial connection
+  Serial.begin(4800);
+
+  Serial.println("Hello, world!");
+  
+  Serial.println("Beginning connection sequence.");
+  Serial.print("Attempting to connect to ");
+  Serial.print(ssid);
+  Serial.print(" - ");
+  
+  WiFi.begin(ssid, password);
+  
+  while(WiFi.status() != WL_CONNECTED)
+  {
+
+
+    //  Wait 10 seconds for the connection to start
+    delay(10000);
+  }
+  
+  Serial.println("success!");
+
+  printWiFiInfoLocal();
+}
+
+void loop()
+{
+  
+}
+
+void printWiFiInfoLocal()
+{
+  Serial.print("IP Address: ");
+  Serial.println(WiFi.localIP());
+}
+
+void findServer()
+{
+  Serial.print("Initialising PixelHub auto detection system - ");
+  Udp.beginMulticast(WiFi.localIP(), beaconAddress, beaconPort);
+  Serial.println("success!");
+
+  Serial.println("Listening for PixelHub beacon pings.");
+  while(true) {
+    int datagramSize = UdpClient.parsePacket();
+    if(!datagramSize) continue;
+    
+    Serial.print("Received datagram #");
+    Serial.print(datagramSize);
+    Serial.print(" bytes in size from ");
+    Serial.print(Udp.remoteIP());
+    Serial.print(":");
+    Serial.print(Udp.remotePort());
+    if(datagramSize > datagramBufferSize) {
+      Serial.println(", but the message is larger than the datagram buffer size.");
+      continue;
+    }
+    Serial.println(".");
+    
+    Udp.read(datagramBuffer, datagramSize);
+    
+    Serial.print("Content: ");
+    for(int i = 0; i < datagramSize; i++) {
+      Serial.print(datagramBuffer[i], HEX);
+      Serial.print(" ");
+    }
+    Serial.print("\n");
+  }
+}
+
diff --git a/PixelHub-Client/WiFiExample.ino b/PixelHub-Client/WiFiExample.ino
deleted file mode 100755
index 0db4a70..0000000
--- a/PixelHub-Client/WiFiExample.ino
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- 
- This example connects to an unencrypted Wifi network. 
- Then it prints the  MAC address of the Wifi shield,
- the IP address obtained, and other network details.
-
- Circuit:
- * WiFi shield attached
- 
- created 13 July 2010
- by dlf (Metodo2 srl)
- modified 31 May 2012
- by Tom Igoe
- */
- #include <WiFi.h>
-
-char ssid[] = "evenstar-2.4";     //  your network SSID (name) 
-char pass[] = "insertPasswordHere";  // your network password
-int status = WL_IDLE_STATUS;     // the Wifi radio's status
-
-void setup() {
-  //Initialize serial and wait for port to open:
-  Serial.begin(300); 
-  while (!Serial) {
-    ; // wait for serial port to connect. Needed for Leonardo only
-  }
-  
-  // check for the presence of the shield:
-  if (WiFi.status() == WL_NO_SHIELD) {
-    Serial.println("WiFi shield not present"); 
-    // don't continue:
-    while(true);
-  } 
-  
- // attempt to connect to Wifi network:
-  while ( status != WL_CONNECTED) { 
-    Serial.print("Attempting to connect to WPA SSID: ");
-    Serial.println(ssid);
-    // Connect to WPA/WPA2 network:    
-    status = WiFi.begin(ssid, pass);
-
-    // wait 10 seconds for connection:
-    delay(10000);
-  }
-   
-  // you're connected now, so print out the data:
-  Serial.print("You're connected to the network");
-  printCurrentNet();
-  printWifiData();
-
-}
-
-void loop() {
-  // check the network connection once every 10 seconds:
-  delay(10000);
-  printCurrentNet();
-}
-
-void printWifiData() {
-  // print your WiFi shield's IP address:
-  IPAddress ip = WiFi.localIP();
-    Serial.print("IP Address: ");
-  Serial.println(ip);
-  Serial.println(ip);
-  
-  // print your MAC address:
-  byte mac[6];  
-  WiFi.macAddress(mac);
-  Serial.print("MAC address: ");
-  Serial.print(mac[5],HEX);
-  Serial.print(":");
-  Serial.print(mac[4],HEX);
-  Serial.print(":");
-  Serial.print(mac[3],HEX);
-  Serial.print(":");
-  Serial.print(mac[2],HEX);
-  Serial.print(":");
-  Serial.print(mac[1],HEX);
-  Serial.print(":");
-  Serial.println(mac[0],HEX);
- 
-}
-
-void printCurrentNet() {
-  // print the SSID of the network you're attached to:
-  Serial.print("SSID: ");
-  Serial.println(WiFi.SSID());
-
-  // print the MAC address of the router you're attached to:
-  byte bssid[6];
-  WiFi.BSSID(bssid);    
-  Serial.print("BSSID: ");
-  Serial.print(bssid[5],HEX);
-  Serial.print(":");
-  Serial.print(bssid[4],HEX);
-  Serial.print(":");
-  Serial.print(bssid[3],HEX);
-  Serial.print(":");
-  Serial.print(bssid[2],HEX);
-  Serial.print(":");
-  Serial.print(bssid[1],HEX);
-  Serial.print(":");
-  Serial.println(bssid[0],HEX);
-
-  // print the received signal strength:
-  long rssi = WiFi.RSSI();
-  Serial.print("signal strength (RSSI):");
-  Serial.println(rssi);
-
-  // print the encryption type:
-  byte encryption = WiFi.encryptionType();
-  Serial.print("Encryption Type:");
-  Serial.println(encryption,HEX);
-  Serial.println();
-}
