diff --git a/modules/catkin_ws/src/NetworkingLib/include/NetworkingLib/DatagramReceiver.h b/modules/catkin_ws/src/NetworkingLib/include/NetworkingLib/DatagramReceiver.h
index dc16c5d8b0d09e8a9085d0e08e2a3d62fc574931..4751dfe70e7a71a2bbf1223c3a12af97fcc60d2b 100644
--- a/modules/catkin_ws/src/NetworkingLib/include/NetworkingLib/DatagramReceiver.h
+++ b/modules/catkin_ws/src/NetworkingLib/include/NetworkingLib/DatagramReceiver.h
@@ -95,6 +95,9 @@ private:
 
     void newSocket()
     {
+        if (!socket.is_open())
+            return;
+
         socket = Socket(net.getIoService(), Udp::v4());
         socket.set_option(boost::asio::socket_base::reuse_address{true});
         socket.set_option(boost::asio::socket_base::broadcast{true});
diff --git a/modules/catkin_ws/src/PCGui/PCGui/CMakeLists.txt b/modules/catkin_ws/src/PCGui/PCGui/CMakeLists.txt
index abe911b55f9e17352dc88937a6dfc85813119fd2..8ee382bb03aaf943d8caa356a71d3993c93a563a 100644
--- a/modules/catkin_ws/src/PCGui/PCGui/CMakeLists.txt
+++ b/modules/catkin_ws/src/PCGui/PCGui/CMakeLists.txt
@@ -46,7 +46,7 @@ add_executable(MessageGui ${SOURCE_FILES}
         include/MessageGui/MessageList.h
         include/MessageGui/SignalProducer.h
         include/MessageGui/SignalConsumer.h
-        include/MessageGui/Utils.h
+        include/Utils.h
         include/MessageGui/MostRecentMessageFiltertProxyModel.h
         include/MessageGui/MessageRole.h
         include/MessageGui/Message.h
diff --git a/modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/MostRecentMessageFiltertProxyModel.h b/modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/MostRecentMessageFiltertProxyModel.h
index 58c137a3250f7bb79f31eff052b560465d6402d4..d719b216f29ff7abce6f1033a67000ac10217e7d 100644
--- a/modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/MostRecentMessageFiltertProxyModel.h
+++ b/modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/MostRecentMessageFiltertProxyModel.h
@@ -46,9 +46,9 @@ class MostRecentMessageFilterProxyModel : public QSortFilterProxyModel
 {
 Q_OBJECT
 
-    Q_PROPERTY(int count READ count NOTIFY countChanged)
-    Q_PROPERTY(QObject * source READ source WRITE setSource)
-    Q_PROPERTY(bool enabled READ enabled WRITE enable )
+Q_PROPERTY(int count READ count NOTIFY countChanged)
+Q_PROPERTY(QObject * source READ source WRITE setSource)
+Q_PROPERTY(bool enabled READ enabled WRITE enable )
 
 public:
     explicit MostRecentMessageFilterProxyModel(QObject * parent = nullptr);
@@ -74,9 +74,10 @@ protected slots:
     void onRowsRemoved(const QModelIndex & parent, int first, int last);
 
 protected:
-    QHash<int, QByteArray> roleNames() const;
 
-    bool filterAcceptsRow(int sourceRow, const QModelIndex & sourceParent) const override;
+    bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+
+    QHash<int, QByteArray> roleNames() const;
 
 private:
 
diff --git a/modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/Utils.h b/modules/catkin_ws/src/PCGui/PCGui/include/Utils.h
similarity index 100%
rename from modules/catkin_ws/src/PCGui/PCGui/include/MessageGui/Utils.h
rename to modules/catkin_ws/src/PCGui/PCGui/include/Utils.h
diff --git a/modules/catkin_ws/src/PCGui/PCGui/src/MessageGui/MostRecentMessageFilterProxyModel.cpp b/modules/catkin_ws/src/PCGui/PCGui/src/MessageGui/MostRecentMessageFilterProxyModel.cpp
index e135b9501254c7809331a91bd4f43c16a1141d42..f286d46cc75e7c1de45baedd802623bc60b19007 100644
--- a/modules/catkin_ws/src/PCGui/PCGui/src/MessageGui/MostRecentMessageFilterProxyModel.cpp
+++ b/modules/catkin_ws/src/PCGui/PCGui/src/MessageGui/MostRecentMessageFilterProxyModel.cpp
@@ -26,9 +26,9 @@ void MostRecentMessageFilterProxyModel::setSource(QObject * source)
 
     setSourceModel(qobject_cast<QAbstractItemModel *>(source));
 
-    connect(this, SIGNAL(rowsInserted(QModelIndex, int, int)),
+    connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex, int, int)),
             this, SLOT(onRowsInserted(const QModelIndex &, int, int)));
-    connect(this, SIGNAL(rowsRemoved(QModelIndex, int, int)),
+    connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)),
             this, SLOT(onRowsRemoved(const QModelIndex &, int, int)));
 
     endResetModel();
@@ -39,6 +39,9 @@ int MostRecentMessageFilterProxyModel::count() const
     return rowCount();
 }
 
+#include <QDebug>
+#include <include/Utils.h>
+
 void MostRecentMessageFilterProxyModel::enable(bool flag)
 {
     enabledFlag = flag;
@@ -65,12 +68,8 @@ void MostRecentMessageFilterProxyModel::onRowsInserted(const QModelIndex & paren
     invalidateFilter();
 }
 
-#include <QDebug>
-
 void MostRecentMessageFilterProxyModel::onRowsRemoved(const QModelIndex & parent, int first, int last)
 {
-    for (int i = first; i <= last; i++)
-        qDebug() << "ID to remove: " << idFromRow(i, parent);
 }
 
 MessageKey MostRecentMessageFilterProxyModel::messageKeyFromRow(int row, const QModelIndex & parent) const
@@ -89,15 +88,13 @@ int MostRecentMessageFilterProxyModel::idFromRow(int row, const QModelIndex & pa
 
 bool MostRecentMessageFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex & sourceParent) const
 {
-    if (!enabled() || !sourceModel()->index(sourceRow, 0, sourceParent).isValid() ||
-        sourceRow < 0 || sourceRow >= rowCount())
+    if (!enabled())
         return true;
 
     auto key = messageKeyFromRow(sourceRow, sourceParent);
-    auto id = idFromRow(sourceRow, sourceParent);
-
-    if (id != mostRecent.at(key))
-        qDebug() << "ID not accepted: " << id;
+    if (!utils::contains(mostRecent, key))
+        return true;
 
+    auto id = idFromRow(sourceRow, sourceParent);
     return id == mostRecent.at(key);
 }
diff --git a/modules/catkin_ws/src/car/src/logging/Logging.cpp b/modules/catkin_ws/src/car/src/logging/Logging.cpp
index eee4cc0a85dcb803850620f96903259fa5d7c93a..47834f74a277c3d400291532c8e33c2ce57c633c 100644
--- a/modules/catkin_ws/src/car/src/logging/Logging.cpp
+++ b/modules/catkin_ws/src/car/src/logging/Logging.cpp
@@ -46,7 +46,7 @@ void Logging::camDataCallback(const camDataMsg::ConstPtr & inMsg)
 
 void Logging::environmentDataCallback(const environmentDataMsg::ConstPtr & inMsg)
 {
-    *messageServer << message::Message{"environment", "distance", std::to_string(inMsg->distance)};
+    *messageServer << message::Message{"environmentData", "distance", std::to_string(inMsg->distance)};
 }
 
 void Logging::laneDataCallback(const laneDataMsg::ConstPtr & inMsg)
diff --git a/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp b/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
index 847e7b1757f923de43974c8233c05e81e2badf24..4137e638dcc6d19140fda78d176b13d682d03b52 100644
--- a/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
+++ b/modules/catkin_ws/src/car/src/ultrasonic/Ultrasonic.cpp
@@ -22,14 +22,16 @@ void Ultrasonic::onInit()
     messageOStream.write("onInit", "START");
 
     ussData = nh.advertise<ussDataMsg>("ussData", 1);
-    sensor.init();
+    //sensor.init();
     timer = networking::time::Timer::create(net);
     timer->startPeriodicTimeout(
         std::chrono::milliseconds(UltrasonicSensor::DELAY),
         [&]
         {
             ussDataMsg msg;
-            auto distance = streamMedianFilter.moveWindow(sensor.getDistance());
+            //auto distance = streamMedianFilter.moveWindow(sensor.getDistance());
+            static int distance = 0;
+            distance++;
             msg.distance = distance;
             msg.timestamp = ros::Time::now();
             ussData.publish(msg);
diff --git a/scripts/AdHoc_Wifi/root@10.5.37.177 b/scripts/AdHoc_Wifi/root@10.5.37.177
new file mode 100644
index 0000000000000000000000000000000000000000..86051ddfba5cd0c11521bf158baf5cc8732123f5
--- /dev/null
+++ b/scripts/AdHoc_Wifi/root@10.5.37.177
@@ -0,0 +1,14 @@
+# Switch from AdHoc Network to eduroam
+
+IFACE="wlan0"
+
+# Reset wifi card
+sudo ifconfig IFACE down
+sudo iw IFACE set type managed
+sudo ifconfig IFACE up
+sleep 0.5
+
+# Connect to wifi and obtain IP address
+sudo wpa_cli
+sudo dhclient -r
+sudo dhclient