diff --git a/groundStation/gui/MicroCART/MicroCART.pro b/groundStation/gui/MicroCART/MicroCART.pro
index 874beeab9d98f9f1a9314e2c86726d21ab7191bc..7bcc5c3748235674e09ec499d8dc0d2552a006a2 100644
--- a/groundStation/gui/MicroCART/MicroCART.pro
+++ b/groundStation/gui/MicroCART/MicroCART.pro
@@ -14,9 +14,11 @@ TEMPLATE = app
 
 SOURCES += main.cpp\
         mainwindow.cpp \
-    wrappers.c
+    wrappers.c \
+    trackerworker.cpp
 
 HEADERS  += mainwindow.h \
-    wrappers.h
+    wrappers.h \
+    trackerworker.h
 
 FORMS    += mainwindow.ui
diff --git a/groundStation/gui/MicroCART/MicroCART.pro.user b/groundStation/gui/MicroCART/MicroCART.pro.user
index c1342b36d003a09aa132d2bc51876da03961598d..d8c1922ddcfb5df26cdd3db8ab7cedc4d600084b 100644
--- a/groundStation/gui/MicroCART/MicroCART.pro.user
+++ b/groundStation/gui/MicroCART/MicroCART.pro.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.2.2, 2017-02-23T15:17:30. -->
+<!-- Written by QtCreator 3.2.2, 2017-03-05T17:14:24. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -8,7 +8,7 @@
  </data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">0</value>
+  <value type="int">-1</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.EditorSettings</variable>
diff --git a/groundStation/gui/MicroCART/mainwindow.cpp b/groundStation/gui/MicroCART/mainwindow.cpp
index 01aa006e06ba3d63f34841a8bb6c11e1f165ffa2..bb6976bd55acd667e0c09f19a927b16d062b9728 100644
--- a/groundStation/gui/MicroCART/mainwindow.cpp
+++ b/groundStation/gui/MicroCART/mainwindow.cpp
@@ -1,13 +1,46 @@
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 
+#include <QFileDialog>
+#include <QThread>
+#include <QTimer>
+
 #include "wrappers.h"
+#include "trackerworker.h"
 
 MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::MainWindow)
 {
     ui->setupUi(this);
+
+    /* Create a thread for workers */
+    QThread* workerThread = new QThread(this);
+
+    /* Create a worker to update the tracker */
+    TrackerWorker * trackerWorker = new TrackerWorker();
+
+    /* Move it to the worker thread. This means that slots of this worker
+     * will run in the worker thread, and not block the UI */
+    trackerWorker->moveToThread(workerThread);
+
+    /* Connect tracker worker */
+    connect(trackerWorker, SIGNAL (finished(float, float, float, float, float, float)),
+            this, SLOT (updateTracker(float, float, float, float, float, float)));
+    connect(findChild<QPushButton *>("pbStart"), SIGNAL (clicked()), trackerWorker, SLOT (connectBackend()));
+    connect(findChild<QPushButton *>("pbConnect"), SIGNAL (clicked()), trackerWorker, SLOT (connectBackend()));
+
+    /* Create other workers and add them to the worker thread, then connect them */
+
+    /* Now we can activate the slots of the workers with impunity and not block the UI thread */
+    /* Connect refresh button and refresh timer to tracker worker */
+    QTimer * trackerTimer = new QTimer(this);
+    connect(trackerTimer, SIGNAL(timeout()), trackerWorker, SLOT(process()));
+    connect(findChild<QPushButton *>("pbRefresh"), SIGNAL (clicked()), trackerWorker, SLOT (process()));
+
+    /* Start the things */
+    trackerTimer->start(300);
+    workerThread->start();
 }
 
 MainWindow::~MainWindow()
@@ -15,26 +48,45 @@ MainWindow::~MainWindow()
     delete ui;
 }
 
+void MainWindow::updateTracker(float x, float y, float z, float p, float r, float yaw)
+{
+    findChild<QLineEdit *>("xLineEdit")->setText(QString::number(x));
+    findChild<QLineEdit *>("yLineEdit")->setText(QString::number(y));
+    findChild<QLineEdit *>("zLineEdit")->setText(QString::number(z));
+    findChild<QLineEdit *>("pLineEdit")->setText(QString::number(p));
+    findChild<QLineEdit *>("rLineEdit")->setText(QString::number(r));
+    findChild<QLineEdit *>("yLineEdit_2")->setText(QString::number(yaw));
+}
+
 void MainWindow::on_pbStart_clicked()
 {
-    this->backendPid = startBackend();
+    this->backendPid = startBackend(findChild<QLineEdit *>("backendPath")->text().toStdString().c_str());
     findChild<QPushButton *>("pbStart")->setEnabled(false);
     findChild<QPushButton *>("pbConnect")->setEnabled(false);
     findChild<QPushButton *>("pbStop")->setEnabled(true);
+    backendState = 1;
 }
 
 void MainWindow::on_pbConnect_clicked()
 {
-    // TODO: Connect to existing backend (what is connected?)
     findChild<QPushButton *>("pbStart")->setEnabled(false);
     findChild<QPushButton *>("pbConnect")->setEnabled(false);
     findChild<QPushButton *>("pbStop")->setEnabled(true);
+    backendState = 1;
 }
 
 void MainWindow::on_pbStop_clicked()
 {
     stopBackend(backendPid);
     findChild<QPushButton *>("pbStart")->setEnabled(true);
-    //findChild<QPushButton *>("pbConnect")->setEnabled(true);
+    findChild<QPushButton *>("pbConnect")->setEnabled(true);
     findChild<QPushButton *>("pbStop")->setEnabled(false);
+    backendState = 0;
+}
+
+void MainWindow::on_chooseBackend_clicked()
+{
+    QString backendPath = QFileDialog::getOpenFileName(this,
+         tr("Path to Backend Executable"));
+    findChild<QLineEdit *>("backendPath")->setText(backendPath);
 }
diff --git a/groundStation/gui/MicroCART/mainwindow.h b/groundStation/gui/MicroCART/mainwindow.h
index 08c56474fa70af9423135e32c9005ef2e0bae9bf..f54a88e37146462475bae4863964ea32c012c96d 100644
--- a/groundStation/gui/MicroCART/mainwindow.h
+++ b/groundStation/gui/MicroCART/mainwindow.h
@@ -22,6 +22,10 @@ private slots:
 
     void on_pbStop_clicked();
 
+    void on_chooseBackend_clicked();
+
+    void updateTracker(float x, float y, float z, float p, float r, float yaw);
+
 private:
     Ui::MainWindow *ui;
     pid_t backendPid;
diff --git a/groundStation/gui/MicroCART/mainwindow.ui b/groundStation/gui/MicroCART/mainwindow.ui
index c613f8104b06d6a5eae17f8a0cb43fc278f03154..f2e2ab683d36f62894f5611a0dc9ca6cfe768592 100644
--- a/groundStation/gui/MicroCART/mainwindow.ui
+++ b/groundStation/gui/MicroCART/mainwindow.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>481</width>
-    <height>347</height>
+    <width>569</width>
+    <height>427</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -19,8 +19,8 @@
      <rect>
       <x>10</x>
       <y>10</y>
-      <width>461</width>
-      <height>271</height>
+      <width>531</width>
+      <height>281</height>
      </rect>
     </property>
     <property name="sizePolicy">
@@ -29,6 +29,9 @@
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
+    <property name="currentIndex">
+     <number>1</number>
+    </property>
     <widget class="QWidget" name="backend">
      <attribute name="title">
       <string>Connection</string>
@@ -55,7 +58,7 @@
          <item>
           <widget class="QPushButton" name="pbConnect">
            <property name="enabled">
-            <bool>false</bool>
+            <bool>true</bool>
            </property>
            <property name="text">
             <string>Connect</string>
@@ -74,6 +77,20 @@
          </item>
         </layout>
        </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QPushButton" name="chooseBackend">
+           <property name="text">
+            <string>Choose Backend</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="backendPath"/>
+         </item>
+        </layout>
+       </item>
        <item>
         <spacer name="verticalSpacer">
          <property name="orientation">
@@ -100,19 +117,138 @@
       </layout>
      </widget>
     </widget>
-    <widget class="QWidget" name="tab_2">
+    <widget class="QWidget" name="status">
      <attribute name="title">
-      <string>Tab 2</string>
+      <string>Quad Status</string>
      </attribute>
+     <widget class="QWidget" name="horizontalLayoutWidget_2">
+      <property name="geometry">
+       <rect>
+        <x>-1</x>
+        <y>9</y>
+        <width>451</width>
+        <height>226</height>
+       </rect>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <item>
+        <layout class="QFormLayout" name="formLayout">
+         <property name="fieldGrowthPolicy">
+          <enum>QFormLayout::ExpandingFieldsGrow</enum>
+         </property>
+         <item row="0" column="0">
+          <widget class="QLabel" name="xLabel">
+           <property name="text">
+            <string>X</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLineEdit" name="xLineEdit">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="yLabel">
+           <property name="text">
+            <string>Y</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLineEdit" name="yLineEdit">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QLabel" name="zLabel">
+           <property name="text">
+            <string>Z</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QLineEdit" name="zLineEdit">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="3" column="0">
+          <widget class="QLabel" name="pLabel">
+           <property name="text">
+            <string>P</string>
+           </property>
+          </widget>
+         </item>
+         <item row="3" column="1">
+          <widget class="QLineEdit" name="pLineEdit">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="0">
+          <widget class="QLabel" name="rLabel">
+           <property name="text">
+            <string>R</string>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="1">
+          <widget class="QLineEdit" name="rLineEdit">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="5" column="0">
+          <widget class="QLabel" name="yLabel_2">
+           <property name="text">
+            <string>Y</string>
+           </property>
+          </widget>
+         </item>
+         <item row="5" column="1">
+          <widget class="QLineEdit" name="yLineEdit_2">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QFormLayout" name="formLayout_2"/>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </widget>
+   <widget class="QPushButton" name="pbRefresh">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>290</y>
+      <width>88</width>
+      <height>34</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Refresh</string>
+    </property>
+   </widget>
   </widget>
   <widget class="QMenuBar" name="menuBar">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>481</width>
+     <width>569</width>
      <height>30</height>
     </rect>
    </property>
diff --git a/groundStation/gui/MicroCART/trackerworker.cpp b/groundStation/gui/MicroCART/trackerworker.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..46bb0ab514a87cce4cc39c8ae052223c40340c9e
--- /dev/null
+++ b/groundStation/gui/MicroCART/trackerworker.cpp
@@ -0,0 +1,33 @@
+#include "trackerworker.h"
+#include <QThread>
+
+TrackerWorker::TrackerWorker() :
+    QObject(), run(true)
+{
+}
+
+TrackerWorker::~TrackerWorker()
+{
+}
+
+void TrackerWorker::connectBackend()
+{
+}
+
+void TrackerWorker::disconnectBackend()
+{
+}
+
+void TrackerWorker::process()
+{
+    /* Fake data. SAD! */
+    static float x = 1.0f, y = 2.0f, z = 3.0f, p = 4.0f, r = 5.0f, yaw = 6.0f;
+    x += 1.0;
+    y += 2.0;
+    z += 3.0;
+    p += 4.0;
+    r += 5.0;
+    yaw += 6.0;
+
+    emit finished(x, y, z, p, r, yaw);
+}
diff --git a/groundStation/gui/MicroCART/trackerworker.h b/groundStation/gui/MicroCART/trackerworker.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd72c9edf60b4dec586d6daa01ffb9f49c336d91
--- /dev/null
+++ b/groundStation/gui/MicroCART/trackerworker.h
@@ -0,0 +1,25 @@
+#ifndef TRACKERWORKER_H
+#define TRACKERWORKER_H
+
+#include <QObject>
+
+class TrackerWorker : public QObject
+{
+    Q_OBJECT
+public:
+    TrackerWorker();
+    ~TrackerWorker();
+
+signals:
+    void finished(float, float, float, float, float, float);
+
+public slots:
+    void process();
+    void connectBackend();
+    void disconnectBackend();
+
+private:
+    bool run;
+
+};
+#endif // TRACKERWORKER_H
diff --git a/groundStation/gui/MicroCART/wrappers.c b/groundStation/gui/MicroCART/wrappers.c
index 58f718fc86ba7516457e651f95678ca91eb6461c..f5e598c68b3b28b18537694edbaa60cd52bb14e8 100644
--- a/groundStation/gui/MicroCART/wrappers.c
+++ b/groundStation/gui/MicroCART/wrappers.c
@@ -13,13 +13,11 @@ int stopBackend(int pid)
     return status;
 }
 
-int startBackend()
+int startBackend(const char * backend)
 {
     int pid = fork();
     if (!pid) {
-        // TODO: Make dynamic
-        // TODO: Redirect stdout to pipe to GUI
-        execl("backEnd", "backEnd", NULL);
+        execl(backend, "backEnd", NULL);
         exit(0);
     }
     return pid;
diff --git a/groundStation/gui/MicroCART/wrappers.h b/groundStation/gui/MicroCART/wrappers.h
index 0ac1d1151499f54c12204b5153e1ccf43e469c03..eea3e1b1925af52a2a8fa62969694ea1abe043fe 100644
--- a/groundStation/gui/MicroCART/wrappers.h
+++ b/groundStation/gui/MicroCART/wrappers.h
@@ -6,7 +6,7 @@ extern "C"
 {
 #endif
 
-int startBackend(void);
+int startBackend(const char * backend);
 int stopBackend(int pid);
 
 #ifdef __cplusplus
diff --git a/groundStation/src/frontend/frontend_tracker.h b/groundStation/src/frontend/frontend_tracker.h
index 58284ca01dc1b4987b523fc125b60010209af930..cbf56dbb33beae39e43e2ef5e31c623a938b9001 100644
--- a/groundStation/src/frontend/frontend_tracker.h
+++ b/groundStation/src/frontend/frontend_tracker.h
@@ -3,6 +3,10 @@
 
 #include "frontend_common.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* Struct containing pos/att data */
 struct frontend_tracker_data {
 		double height;
@@ -24,4 +28,8 @@ struct frontend_tracker_data {
 int frontend_track(struct backend_conn * conn, 
 		struct frontend_tracker_data *data);
 
-#endif /* __FRONTEND_TRACKER_H */
\ No newline at end of file
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __FRONTEND_TRACKER_H */