diff --git a/etc/nginx/villas.conf b/etc/nginx/villas.conf
index 7bf7fb1798bdff7874ed33450a50eceaa9029f95..72c413e09ec3fdce30578c973ca1285279fa3a1e 100644
--- a/etc/nginx/villas.conf
+++ b/etc/nginx/villas.conf
@@ -1,3 +1,5 @@
+resolver 127.0.0.1 [::1]:5353 valid=30s;
+
 # If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
 # scheme used to connect to this server
 map $http_x_forwarded_proto $proxy_x_forwarded_proto {
diff --git a/etc/node/demo.conf b/etc/node/demo.conf
index 9a5f1c9425f9f8e360a59e3e777047a551df187b..f353320c2057d3e873cb8b56e02c9ed1eb062a5f 100644
--- a/etc/node/demo.conf
+++ b/etc/node/demo.conf
@@ -24,171 +24,243 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *********************************************************************************/
 
-stats = 5;
-
 hugepages = 1000;
 
+logging = {
+	level = "info"
+}
+
 nodes = {
 	sig = {
-		type = "signal",
+		type = "signal"
 
-		signal = "mixed",
-		values = 5,
+		signal = "mixed"
+		values = 5
 		rate = 20
-	},
+	}
 	ws_sig = {
-		type = "websocket",
+		type = "websocket"
 	}
 	dpsim1 = {
 		type = "mqtt"
-		format = "json",
+		format = "villas.binary"
 
-		username = "villas",
-	        password = "s3c0sim4!",
-		host = "broker",
-		port = 1883,
+		username = "villas"
+	        password = "s3c0sim4!"
+		host = "broker"
 
-		publish = "villas-dpsim1",
-		subscribe = "dpsim1-villas",
-	},
+		out = {
+			publish = "villas-dpsim1"
+		}
+		in = {
+			subscribe = "dpsim1-villas"
+		}
+	}
 	dpsim2 = {
 		type = "mqtt"
-		format = "json",
+		format = "json"
 
-		username = "villas",
-	        password = "s3c0sim4!",
-		host = "broker",
-		port = 1883,
+		username = "villas"
+	        password = "s3c0sim4!"
+		host = "broker"
 
-		publish = "villas-dpsim2",
-		subscribe = "dpsim2-villas",
-	},
+		out = {
+			publish = "villas-dpsim2"
+		}
+		in = {
+			subscribe = "dpsim2-villas"
+		}
+	}
 	opal = {
 		type = "mqtt"
-		format = "villas.binary",
+		format = "villas.binary"
 
-		username = "villas",
-	        password = "s3c0sim4!",
-		host = "broker",
-		port = 1883,
+		username = "villas"
+	        password = "s3c0sim4!"
+		host = "broker"
 
-		publish = "villas-opal",
-		subscribe = "opal-villas",
-	},
+		out = {
+			publish = "villas-opal"
+		}
+		in = {
+			subscribe = "opal-villas"
+		}
+	}
 	lo = {
 		type = "mqtt"
-		format = "villas.human",
+		format = "villas.human"
 
-		username = "villas",
-	        password = "s3c0sim4!",
-		host = "broker",
-		port = 1883,
+		username = "villas"
+	        password = "s3c0sim4!"
+		host = "broker"
 
-		publish = "lo",
-		subscribe = "lo",
-	},
+		out = {
+			publish = "lo"
+		}
+		in = {
+			subscribe = "lo"
+		}
+	}
 	ws_dpsim1 = {
 		type = "websocket"
 
-		hooks = (
-			{ type = "stats" }
-		)
-	},
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 	ws_dpsim2 = {
 		type = "websocket"
 
-		hooks = (
-			{ type = "stats" }
-		)
-	},
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 	ws_opal = {
 		type = "websocket"
 
-		hooks = (
-			{ type = "stats" }
-		)
-	},
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 	ws_lo = {
 		type = "websocket"
 		
-		hooks = (
-			{ type = "stats" }
-		)
-	},
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 	ws_playback = {
 		type = "websocket"
-	},
+	}
 	playback = {
 		type = "file"
 		uri = "/data/m2_sim_results_merged.csv"
-		eof = "rewind"
-	},
+
+		in = {
+			eof = "rewind"
+		}
+	}
 	ws_rtds = {
 		type = "websocket"
-	},
+	}
 	rtds = {
 		type = "socket"
-		layer = "udp"
 		format = "gtnet"
 
-		local = "*:12000"
-		remote = "137.226.133.156:12000"
-	},
+		in = {
+			address = "*:12000"
+		}
+		out = {
+			address = "134.130.169.99:12000"
+		}
+	}
 	ws_elsa = {
 		type = "websocket"
-	},
+
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 	elsa = {
 		type = "socket"
-		layer = "udp"
 		format = "gtnet"
-		local = "*:12001"
-		remote = "137.226.133.240:12001"
-	}	
+		
+		in = {
+			address = "*:12001"
+		}
+		out = {
+			address = "137.226.133.240:12002"
+		}
+	}
+	sogno_estimator = {
+		type = "mqtt"
+		format = "json"
+
+		username = "villas"
+	        password = "s3c0sim4!"
+		host = "broker"
+
+		in = {
+			subscribe = "sogno-estimator"
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
+	ws_sogno_estimator = {
+		type = "websocket"
+
+		in = {
+			hooks = (
+				{ type = "stats" }
+			)
+		}
+	}
 };
 
 ############       List of paths       ############
 
 paths = (
 	{
-		in = "playback",
+		in = "playback"
 		out = "ws_playback"
 	},
 	{
-		in = "sig",
+		in = "sig"
 		out = "ws_sig"
 	},
 	{
-		in = "ws_lo",
+		in = "ws_lo"
 		out = "lo"
 	},
 	{
-		in = "lo",
+		in = "lo"
 		out = "ws_lo"
 	},
 	{
-		in = "dpsim1",
-		out = "ws_dpsim1",
-		reverse = true,
+		in = "dpsim1"
+		out = "ws_dpsim1"
+		reverse = true
 		hooks = ( { type = "print" } )
 	},
 	{
-		in = "dpsim2",
-		out = "ws_dpsim2",
+		in = "dpsim2"
+		out = "ws_dpsim2"
 		reverse = true
 	},
 	{
-		in = "opal",
-		out = "ws_opal",
+		in = "opal"
+		out = "ws_opal"
 		reverse = true
 	},
 	{
-		in = "rtds",
-		out = "ws_rtds",
-		reverse = true
+		in = "rtds"
+		out = "ws_rtds"
 	},
 	{
-		in = "elsa",
-		out = "ws_elsa",
-		reverse = true
+		out = "rtds"
+		in = "ws_rtds"
+	},
+	{
+		in = "elsa"
+		out = "ws_elsa"
+	},
+	{
+		out = "elsa"
+		in = "ws_elsa"
+	},
+	{
+		in = "sogno_estimator"
+		out = "ws_sogno_estimator"
 	}
 );