diff --git a/Makefile b/Makefile
index 472de79..7791d24 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
 install:
 	@echo "Start compiling..."
-	g++ ./src/necronda-server.cpp -o ./bin/necronda-server
+	g++ src/necronda-server.cpp -o bin/necronda-server -std=c++17 -fPIC
 	@echo "Finished compiling!"
diff --git a/src/necronda-server.cpp b/src/necronda-server.cpp
index 7828adf..c8036f4 100644
--- a/src/necronda-server.cpp
+++ b/src/necronda-server.cpp
@@ -7,19 +7,50 @@
 
 #include <iostream>
 
-#include "http/HttpHeader.cpp"
+#include "network/Connection.cpp"
+#include "network/http/HttpHeader.cpp"
 
 
 using namespace std;
 
 int main() {
-    cout << "Hello, World!1" << endl;
-	HttpHeader *header = new HttpHeader();
+	cout << "Necronda Server 3.0" << endl << "by Lorenz Stechauner" << endl << endl;
 
-	header->setField("Content-Length", "80");
-	header->setField("Hermann", "500");
+	unsigned short PORT = 8080;
 
-	cout << header->getField("Content-Length")  << " " << header->getField("Hermand") << endl;
-    return 0;
+	Connection *s;
+	try {
+		s = new Connection();
+	} catch (char *msg) {
+		cout << "Unable to create socket: " << msg << endl;
+		exit(1);
+	}
+
+	try {
+		s->bind(PORT);
+	} catch (char *msg) {
+		cout << "Unable to bind socket to port " << PORT << ": " << msg << endl;
+		exit(2);
+	}
+
+	try {
+		s->listen(256);
+	} catch (char *msg) {
+		cout << "Unable to listen on socket: " << msg << endl;
+		exit(3);
+	}
+
+	while (true) {
+		try {
+			Connection *client = s->accept();
+			cout << client->getPeerAddress()->toString() << ":" << client->getPeerPort() << " <-> "
+				 << client->getSocketAddress()->toString() << ":" << client->getSocketPort() << endl;
+		} catch (char *msg) {
+			cout << msg << endl;
+			break;
+		}
+	}
+
+	return 0;
 }