diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro
index 731315a..1d761bb 100644
--- a/qgroundcontrol.pro
+++ b/qgroundcontrol.pro
@@ -150,7 +150,8 @@ FORMS += src/ui/MainWindow.ui \
     src/ui/SlugsHilSim.ui \
     src/ui/SlugsPIDControl.ui \
     src/ui/SlugsVideoCamControl.ui \
-    src/ui/SlugsPadCameraControl.ui
+    src/ui/SlugsPadCameraControl.ui \
+    src/ui/uas/QGCUnconnectedInfoWidget.ui
 
 INCLUDEPATH += src \
     src/ui \
@@ -251,7 +252,8 @@ HEADERS += src/MG.h \
     src/ui/SlugsVideoCamControl.h \
     src/ui/SlugsPadCameraControl.h \
     src/ui/QGCMainWindowAPConfigurator.h \
-    src/comm/MAVLinkSwarmSimulationLink.h
+    src/comm/MAVLinkSwarmSimulationLink.h \
+    src/ui/uas/QGCUnconnectedInfoWidget.h
 
 contains(DEPENDENCIES_PRESENT, osg) { 
     message("Including headers for OpenSceneGraph")
@@ -363,7 +365,8 @@ SOURCES += src/main.cc \
     src/ui/SlugsVideoCamControl.cpp \
     src/ui/SlugsPadCameraControl.cpp \
     src/ui/QGCMainWindowAPConfigurator.cc \
-    src/comm/MAVLinkSwarmSimulationLink.cc
+    src/comm/MAVLinkSwarmSimulationLink.cc \
+    src/ui/uas/QGCUnconnectedInfoWidget.cc
 contains(DEPENDENCIES_PRESENT, osg) { 
     message("Including sources for OpenSceneGraph")
     
diff --git a/src/Core.cc b/src/Core.cc
index e49a06c..2beaf58 100644
--- a/src/Core.cc
+++ b/src/Core.cc
@@ -66,7 +66,7 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
 {
     this->setApplicationName(QGC_APPLICATION_NAME);
     this->setApplicationVersion(QGC_APPLICATION_VERSION);
-    this->setOrganizationName(QLatin1String("PIXHAWK Association Zurich"));
+    this->setOrganizationName(QLatin1String("OPENMAV"));
     this->setOrganizationDomain("http://qgroundcontrol.org");
 
     // Show splash screen
@@ -105,10 +105,6 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
     // Start the user interface
     splashScreen->showMessage(tr("Starting User Interface"), Qt::AlignLeft | Qt::AlignBottom, QColor(62, 93, 141));
     // Start UI
-    mainWindow = new MainWindow();
-
-    // Remove splash screen
-    splashScreen->finish(mainWindow);
 
     // Connect links
     // to make sure that all components are initialized when the
@@ -117,7 +113,21 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
     // Listen on Multicast-Address 239.255.77.77, Port 14550
     //QHostAddress * multicast_udp = new QHostAddress("239.255.77.77");
     //UDPLink* udpLink = new UDPLink(*multicast_udp, 14550);
-    mainWindow->addLink(udpLink);
+    //mainWindow->addLink(udpLink);
+
+#ifdef OPAL_RT
+    // Add OpalRT Link, but do not connect
+    OpalLink* opalLink = new OpalLink();
+    //mainWindow->addLink(opalLink);
+#endif
+    // MAVLinkSimulationLink* simulationLink = new MAVLinkSimulationLink(MG::DIR::getSupportFilesDirectory() + "/demo-log.txt");
+    MAVLinkSimulationLink* simulationLink = new MAVLinkSimulationLink(":/demo-log.txt");
+    //mainWindow->addLink(simulationLink);
+
+    mainWindow = MainWindow::instance();
+
+    // Remove splash screen
+    splashScreen->finish(mainWindow);
 
     // Check if link could be connected
     if (!udpLink->connect())
@@ -140,15 +150,6 @@ Core::Core(int &argc, char* argv[]) : QApplication(argc, argv)
             QTimer::singleShot(200, mainWindow, SLOT(close()));
         }
     }
-
-#ifdef OPAL_RT
-    // Add OpalRT Link, but do not connect
-    OpalLink* opalLink = new OpalLink();
-    mainWindow->addLink(opalLink);
-#endif
-    // MAVLinkSimulationLink* simulationLink = new MAVLinkSimulationLink(MG::DIR::getSupportFilesDirectory() + "/demo-log.txt");
-    MAVLinkSimulationLink* simulationLink = new MAVLinkSimulationLink(":/demo-log.txt");
-    mainWindow->addLink(simulationLink);
 }
 
 /**
diff --git a/src/comm/LinkManager.cc b/src/comm/LinkManager.cc
index 802cf17..c2cf73b 100644
--- a/src/comm/LinkManager.cc
+++ b/src/comm/LinkManager.cc
@@ -67,6 +67,7 @@ LinkManager::~LinkManager()
 void LinkManager::add(LinkInterface* link)
 {
     if(!link) return;
+    connect(link, SIGNAL(destroyed(QObject*)), this, SLOT(removeLink(QObject*)));
     links.append(link);
     emit newLink(link);
 }
@@ -127,6 +128,17 @@ bool LinkManager::disconnectLink(LinkInterface* link)
 	return link->disconnect();
 }
 
+void LinkManager::removeLink(QObject* link)
+{
+    LinkInterface* linkInterface = dynamic_cast<LinkInterface*>(link);
+    // Add link to link list
+    if (links.contains(linkInterface))
+    {
+        int linkIndex = links.indexOf(linkInterface);
+        links.removeAt(linkIndex);
+    }
+}
+
 bool LinkManager::removeLink(LinkInterface* link)
 {
         if(link)
diff --git a/src/comm/LinkManager.h b/src/comm/LinkManager.h
index 8d283c3..36ef64c 100644
--- a/src/comm/LinkManager.h
+++ b/src/comm/LinkManager.h
@@ -67,6 +67,7 @@ public slots:
     void add(LinkInterface* link);
     void addProtocol(LinkInterface* link, ProtocolInterface* protocol);
 
+    void removeLink(QObject* link);
     bool removeLink(LinkInterface* link);
 
     bool connectAll();
diff --git a/src/comm/MAVLinkSimulationLink.cc b/src/comm/MAVLinkSimulationLink.cc
index 35cd85a..6a909ed 100644
--- a/src/comm/MAVLinkSimulationLink.cc
+++ b/src/comm/MAVLinkSimulationLink.cc
@@ -934,6 +934,18 @@ bool MAVLinkSimulationLink::connect()
  * @return True if connection has been established, false if connection
  * couldn't be established.
  **/
+void MAVLinkSimulationLink::connectLink()
+{
+    this->connect();
+}
+
+/**
+ * Connect the link.
+ *
+ * @param connect true connects the link, false disconnects it
+ * @return True if connection has been established, false if connection
+ * couldn't be established.
+ **/
 bool MAVLinkSimulationLink::connectLink(bool connect)
 {
     _isConnected = connect;
diff --git a/src/comm/MAVLinkSimulationLink.h b/src/comm/MAVLinkSimulationLink.h
index fe92e5f..db40af5 100644
--- a/src/comm/MAVLinkSimulationLink.h
+++ b/src/comm/MAVLinkSimulationLink.h
@@ -87,6 +87,7 @@ public slots:
     void readBytes();
     virtual void mainloop();
     bool connectLink(bool connect);
+    void connectLink();
 
 
 protected:
diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc
index 5c58a34..87650a6 100644
--- a/src/uas/UAS.cc
+++ b/src/uas/UAS.cc
@@ -1532,7 +1532,7 @@ void UAS::addLink(LinkInterface* link)
         links->append(link);
     }
     //links->append(link);
-    qDebug() << link<<" ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK";
+    //qDebug() << link<<" ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK ADDED LINK";
 }
 
 /**
diff --git a/src/ui/DebugConsole.cc b/src/ui/DebugConsole.cc
index 9853826..36629e6 100644
--- a/src/ui/DebugConsole.cc
+++ b/src/ui/DebugConsole.cc
@@ -125,12 +125,28 @@ void DebugConsole::addLink(LinkInterface* link)
 
     // Register for name changes
     connect(link, SIGNAL(nameChanged(QString)), this, SLOT(updateLinkName(QString)));
+    connect(link, SIGNAL(destroyed(QObject*)), this, SLOT(removeLink(QObject*)));
+}
+
+void DebugConsole::removeLink(QObject* link)
+{
+    LinkInterface* linkInterface = dynamic_cast<LinkInterface*>(link);
+    // Add link to link list
+    if (links.contains(linkInterface))
+    {
+        int linkIndex = links.indexOf(linkInterface);
+
+        links.removeAt(linkIndex);
+
+        m_ui->linkComboBox->removeItem(linkIndex);
+    }
+    if (link == currLink) currLink = NULL;
 }
 
 void DebugConsole::linkSelected(int linkId)
 {
     // Disconnect
-    if (currLink != NULL)
+    if (currLink)
     {
         disconnect(currLink, SIGNAL(bytesReceived(LinkInterface*,QByteArray)), this, SLOT(receiveBytes(LinkInterface*, QByteArray)));
     }
diff --git a/src/ui/DebugConsole.h b/src/ui/DebugConsole.h
index ffc97c4..b68fa7c 100644
--- a/src/ui/DebugConsole.h
+++ b/src/ui/DebugConsole.h
@@ -59,6 +59,8 @@ public:
 public slots:
     /** @brief Add a link to the list of monitored links */
     void addLink(LinkInterface* link);
+    /** @brief Remove a link from the list */
+    void removeLink(QObject* link);
     /** @brief Update a link name */
     void updateLinkName(QString name);
     /** @brief Select a link for the active view */
diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc
index be6980c..2360cfc 100644
--- a/src/ui/MainWindow.cc
+++ b/src/ui/MainWindow.cc
@@ -38,6 +38,20 @@
 
 #include "LogCompressor.h"
 
+MainWindow* MainWindow::instance()
+{
+        static MainWindow* _instance = 0;
+        if(_instance == 0)
+        {
+                _instance = new MainWindow();
+
+                /* Set the application as parent to ensure that this object
+                 * will be destroyed when the main application exits */
+                //_instance->setParent(qApp);
+        }
+        return _instance;
+}
+
 /**
 * Create new mainwindow. The constructor instantiates all parts of the user
 * interface. It does NOT show the mainwindow. To display it, call the show()
@@ -82,35 +96,17 @@ MainWindow::MainWindow(QWidget *parent):
     connectCommonActions();
 
     // Load mavlink view as default widget set
-    loadMAVLinkView();
+    //loadMAVLinkView();
 
     // Adjust the size
     adjustSize();
 
-    // Load previous widget setup
-
-    //    // FIXME WORK IN PROGRESS
-    //    QSettings settings(QGC::COMPANYNAME, QGC::APPNAME);
-
-    //    QList<QDockWidget *> dockwidgets = qFindChildren<QDockWidget *>(this);
-    //    if (dockwidgets.size())
-    //    {
-    //        settings.beginGroup("mainwindow/dockwidgets");
-    //        for (int i = 0; i < dockwidgets.size(); ++i)
-    //        {
-    //            QDockWidget *dockWidget = dockwidgets.at(i);
-    //            if (dockWidget->parentWidget() == this)
-    //            {
-    //                if (settings.contains(dockWidget->windowTitle()))
-    //                {
-    //                    dockWidget->setVisible(settings.value(dockWidget->windowTitle(), dockWidget->isVisible()).toBool());
-    //                }
-    //            }
-    //        }
-    //        settings.endGroup();
-    //    }
-
-//    // Select the right perspective
+    // Populate link menu
+    QList<LinkInterface*> links = LinkManager::instance()->getLinks();
+    foreach(LinkInterface* link, links)
+    {
+        this->addLink(link);
+    }
 
     // Enable and update view
     this->show();
@@ -398,8 +394,10 @@ void MainWindow::addToToolsMenu ( QWidget* widget,
     if (!settings.contains(posKey)){
         settings.setValue(posKey,location);
         dockWidgetLocations[tool] = location;
-    } else {
-        dockWidgetLocations[tool] = static_cast <Qt::DockWidgetArea> (settings.value(posKey).toInt());
+    }
+    else
+    {
+        dockWidgetLocations[tool] = static_cast <Qt::DockWidgetArea> (settings.value(posKey, Qt::RightDockWidgetArea).toInt());
     }
 
     chKey = buildMenuKey(SUB_SECTION_CHECKED,tool, currentView);
@@ -412,7 +410,7 @@ void MainWindow::addToToolsMenu ( QWidget* widget,
     else
     {
         tempAction->setChecked(settings.value(chKey).toBool());
-        widget->setVisible(settings.value(chKey).toBool());
+        widget->setVisible(settings.value(chKey, false).toBool());
     }
 
     // connect the action
@@ -456,7 +454,16 @@ void MainWindow::showTheWidget (TOOLS_WIDGET_NAMES widget, VIEW_SECTIONS view)
     Qt::DockWidgetArea tempLocation;
     QDockWidget* tempWidget = static_cast <QDockWidget *>(dockWidgets[widget]);
 
-    tempVisible =  settings.value(buildMenuKey (SUB_SECTION_CHECKED,widget,view)).toBool();
+    tempVisible =  settings.value(buildMenuKey (SUB_SECTION_CHECKED,widget,view), false).toBool();
+
+    // Some widgets are per default visible. Overwrite the settings value if not present.
+    if (widget == MainWindow::MENU_UAS_LIST)
+    {
+        if (!settings.contains(buildMenuKey (SUB_SECTION_CHECKED,widget,view)))
+        {
+            tempVisible = true;
+        }
+    }
 
     if (tempWidget)
     {
@@ -466,9 +473,17 @@ void MainWindow::showTheWidget (TOOLS_WIDGET_NAMES widget, VIEW_SECTIONS view)
 
     //qDebug() <<  buildMenuKey (SUB_SECTION_CHECKED,widget,view) << tempVisible;
 
-    tempLocation = static_cast <Qt::DockWidgetArea>(settings.value(buildMenuKey (SUB_SECTION_LOCATION,widget, view)).toInt());
+    tempLocation = static_cast <Qt::DockWidgetArea>(settings.value(buildMenuKey (SUB_SECTION_LOCATION,widget, view), QVariant(Qt::RightDockWidgetArea)).toInt());
+
+    if (widget == MainWindow::MENU_UAS_LIST)
+    {
+        if (!settings.contains(buildMenuKey (SUB_SECTION_LOCATION,widget, view)))
+        {
+            tempLocation = Qt::RightDockWidgetArea;
+        }
+    }
 
-    if (tempWidget && tempVisible)
+    if ((tempWidget != NULL) && tempVisible)
     {
         addDockWidget(tempLocation, tempWidget);
         tempWidget->show();
diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h
index 4cc6644..1abf976 100644
--- a/src/ui/MainWindow.h
+++ b/src/ui/MainWindow.h
@@ -83,7 +83,7 @@ class MainWindow : public QMainWindow {
     Q_OBJECT
 
 public:
-    MainWindow(QWidget *parent = 0);
+    static MainWindow* instance();
     ~MainWindow();
 
 public slots:
@@ -188,6 +188,8 @@ public slots:
 
 protected:
 
+    MainWindow(QWidget *parent = 0);
+
     // These defines are used to save the settings when selecting with
     // which widgets populate the views
     // FIXME: DO NOT PUT CUSTOM VALUES IN THIS ENUM since it is iterated over
diff --git a/src/ui/uas/QGCUnconnectedInfoWidget.cc b/src/ui/uas/QGCUnconnectedInfoWidget.cc
new file mode 100644
index 0000000..7adbfef
--- /dev/null
+++ b/src/ui/uas/QGCUnconnectedInfoWidget.cc
@@ -0,0 +1,17 @@
+#include "QGCUnconnectedInfoWidget.h"
+#include "ui_QGCUnconnectedInfoWidget.h"
+
+QGCUnconnectedInfoWidget::QGCUnconnectedInfoWidget(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::QGCUnconnectedInfoWidget)
+{
+    ui->setupUi(this);
+
+    connect(ui->simulationButton, SIGNAL(clicked()), this, SIGNAL(simulation()));
+    connect(ui->connectButton, SIGNAL(clicked()), this, SIGNAL(addLink()));
+}
+
+QGCUnconnectedInfoWidget::~QGCUnconnectedInfoWidget()
+{
+    delete ui;
+}
diff --git a/src/ui/uas/QGCUnconnectedInfoWidget.h b/src/ui/uas/QGCUnconnectedInfoWidget.h
new file mode 100644
index 0000000..b5b282a
--- /dev/null
+++ b/src/ui/uas/QGCUnconnectedInfoWidget.h
@@ -0,0 +1,25 @@
+#ifndef QGCUNCONNECTEDINFOWIDGET_H
+#define QGCUNCONNECTEDINFOWIDGET_H
+
+#include <QWidget>
+
+namespace Ui {
+    class QGCUnconnectedInfoWidget;
+}
+
+class QGCUnconnectedInfoWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit QGCUnconnectedInfoWidget(QWidget *parent = 0);
+    ~QGCUnconnectedInfoWidget();
+
+    Ui::QGCUnconnectedInfoWidget *ui;
+
+signals:
+    void simulation();
+    void addLink();
+};
+
+#endif // QGCUNCONNECTEDINFOWIDGET_H
diff --git a/src/ui/uas/QGCUnconnectedInfoWidget.ui b/src/ui/uas/QGCUnconnectedInfoWidget.ui
new file mode 100644
index 0000000..9b3b50b
--- /dev/null
+++ b/src/ui/uas/QGCUnconnectedInfoWidget.ui
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QGCUnconnectedInfoWidget</class>
+ <widget class="QWidget" name="QGCUnconnectedInfoWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0" colspan="3">
+    <widget class="QTextEdit" name="textEdit">
+     <property name="verticalScrollBarPolicy">
+      <enum>Qt::ScrollBarAlwaysOff</enum>
+     </property>
+     <property name="horizontalScrollBarPolicy">
+      <enum>Qt::ScrollBarAlwaysOff</enum>
+     </property>
+     <property name="autoFormatting">
+      <set>QTextEdit::AutoAll</set>
+     </property>
+     <property name="undoRedoEnabled">
+      <bool>false</bool>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+     <property name="html">
+      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
+&lt;tr&gt;
+&lt;td style=&quot;border: none;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:14pt; font-weight:600;&quot;&gt;Unmanned System List&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:6pt; font-weight:600;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-weight:600;&quot;&gt;No Systems are connected yet.&lt;/span&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; Please either connect a link or use the simulation function to see QGroundControl in action.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt; font-style:italic;&quot;&gt;Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>40</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="1" column="1">
+    <widget class="QPushButton" name="simulationButton">
+     <property name="text">
+      <string>Simulate MAV</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="2">
+    <widget class="QPushButton" name="connectButton">
+     <property name="text">
+      <string>Connect Link</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/ui/uas/UASListWidget.cc b/src/ui/uas/UASListWidget.cc
index e4fb002..1d2c388 100644
--- a/src/ui/uas/UASListWidget.cc
+++ b/src/ui/uas/UASListWidget.cc
@@ -33,12 +33,17 @@ This file is part of the PIXHAWK project
 #include <QLabel>
 #include <QFileDialog>
 #include <QDebug>
+#include <QApplication>
 
 #include "MG.h"
 #include "UASListWidget.h"
 #include "UASManager.h"
 #include "UAS.h"
 #include "UASView.h"
+#include "QGCUnconnectedInfoWidget.h"
+#include "MainWindow.h"
+#include "MAVLinkSimulationLink.h"
+#include "LinkManager.h"
 
 UASListWidget::UASListWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui::UASList)
 {
@@ -48,6 +53,13 @@ UASListWidget::UASListWidget(QWidget *parent) : QWidget(parent), m_ui(new Ui::UA
     listLayout->setAlignment(Qt::AlignTop);
     this->setLayout(listLayout);
 
+    // Construct initial widget
+    uWidget = new QGCUnconnectedInfoWidget(this);
+    listLayout->addWidget(uWidget);
+
+    connect(uWidget, SIGNAL(addLink()), this, SLOT(addLink()));
+    connect(uWidget, SIGNAL(simulation()), this, SLOT(simulate()));
+
     this->setMinimumWidth(250);
 
     uasViews = QMap<UASInterface*, UASView*>();
@@ -72,11 +84,32 @@ void UASListWidget::changeEvent(QEvent *e)
     }
 }
 
+void UASListWidget::addLink()
+{
+    MainWindow::instance()->addLink();
+}
+
+void UASListWidget::simulate()
+{
+    // Try to get reference to MAVLinkSimulationlink
+    QList<LinkInterface*> links = LinkManager::instance()->getLinks();
+    foreach(LinkInterface* link, links)
+    {
+        MAVLinkSimulationLink* sim = dynamic_cast<MAVLinkSimulationLink*>(link);
+        if (sim)
+        {
+            sim->connectLink();
+        }
+    }
+}
+
 void UASListWidget::addUAS(UASInterface* uas)
 {
-    if (uasViews.size() == 0)
+    if (uasViews.isEmpty())
     {
-        // TODO Add label when no UAS is present yet.
+        listLayout->removeWidget(uWidget);
+        delete uWidget;
+        uWidget = NULL;
     }
 
     if (!uasViews.contains(uas))
diff --git a/src/ui/uas/UASListWidget.h b/src/ui/uas/UASListWidget.h
index 33d0c7b..a4150f8 100644
--- a/src/ui/uas/UASListWidget.h
+++ b/src/ui/uas/UASListWidget.h
@@ -36,6 +36,7 @@ This file is part of the QGROUNDCONTROL project
 #include <QVBoxLayout>
 #include "UASInterface.h"
 #include "UASView.h"
+#include "QGCUnconnectedInfoWidget.h"
 #include "ui_UASList.h"
 
 class UASListWidget : public QWidget
@@ -51,9 +52,14 @@ public slots:
     void activeUAS(UASInterface* uas);
     void removeUAS(UASInterface* uas);
 
+    // TODO Kind of hack, works flawless but is bad architecture
+    void addLink();
+    void simulate();
+
 protected:
     QMap<UASInterface*, UASView*> uasViews;
     QVBoxLayout* listLayout;
+    QGCUnconnectedInfoWidget* uWidget;
     void changeEvent(QEvent *e);
 
 private: