Index: uspace/srv/net/netif/lo/Makefile
===================================================================
--- uspace/srv/net/netif/lo/Makefile	(revision 1b1164e8b3cea0b45a167fb0933b14cf0c22c374)
+++ uspace/srv/net/netif/lo/Makefile	(revision 7553689259226abd6df6f392d2e1e403f5957b81)
@@ -28,38 +28,25 @@
 #
 
-NET_BASE = ../..
 USPACE_PREFIX = ../../../..
 ROOT_PATH = $(USPACE_PREFIX)/..
+LIBS = $(LIBNET_PREFIX)/libnet.a $(LIBSOCKET_PREFIX)/libsocket.a
+EXTRA_CFLAGS = -I$(LIBNET_PREFIX)/include -I$(LIBSOCKET_PREFIX)/include
 
 COMMON_MAKEFILE = $(ROOT_PATH)/Makefile.common
 CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config
 
-BINARY = lo
-
 -include $(COMMON_MAKEFILE)
 -include $(CONFIG_MAKEFILE)
 
-SOURCES = \
-	lo.c \
-	$(NET_BASE)/module.c \
-	$(NET_BASE)/modules.c \
-	$(NET_BASE)/net/net_remote.c \
-	$(NET_BASE)/netif/netif.c \
-	$(NET_BASE)/structures/measured_strings.c \
-	$(NET_BASE)/structures/packet/packet.c \
-	$(NET_BASE)/structures/packet/packet_client.c \
-	$(NET_BASE)/structures/packet/packet_remote.c
+ifeq ($(CONFIG_NETWORKING),modular)
+	BINARY = lo
+endif
 
 ifeq ($(CONFIG_NETWORKING),module)
-	SOURCES += \
-		$(NET_BASE)/nil/nildummy/nildummy.c \
-		$(NET_BASE)/netif/netif_nil_bundle.c
+	LIBRARY = liblo
 endif
 
-ifeq ($(CONFIG_NETWORKING),modular)
-	SOURCES += \
-		$(NET_BASE)/nil/nil_remote.c \
-		$(NET_BASE)/netif/netif_standalone.c
-endif
+SOURCES = \
+	lo.c
 
 include $(USPACE_PREFIX)/Makefile.common
Index: uspace/srv/net/netif/lo/lo.c
===================================================================
--- uspace/srv/net/netif/lo/lo.c	(revision 1b1164e8b3cea0b45a167fb0933b14cf0c22c374)
+++ uspace/srv/net/netif/lo/lo.c	(revision 7553689259226abd6df6f392d2e1e403f5957b81)
@@ -43,18 +43,14 @@
 #include <ipc/services.h>
 
-#include "../../err.h"
-#include "../../messages.h"
-#include "../../modules.h"
-
-#include "../../structures/measured_strings.h"
-#include "../../structures/packet/packet_client.h"
-
-#include "../../include/device.h"
-#include "../../include/nil_interface.h"
-
-#include "../../nil/nil_messages.h"
-
-#include "../netif.h"
-#include "../netif_module.h"
+#include <net_err.h>
+#include <net_messages.h>
+#include <net_modules.h>
+#include <adt/measured_strings.h>
+#include <packet/packet_client.h>
+#include <net_device.h>
+#include <nil_interface.h>
+#include <nil_messages.h>
+#include <netif.h>
+#include <netif_module.h>
 
 /** Default hardware address.
@@ -90,9 +86,4 @@
  */
 int create(device_id_t device_id, device_ref * device);
-
-/** Prints the module name.
- *  @see NAME
- */
-void module_print_name(void);
 
 int netif_specific_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
@@ -167,8 +158,4 @@
 }
 
-void module_print_name(void){
-	printf("%s", NAME);
-}
-
 int netif_probe_message(device_id_t device_id, int irq, uintptr_t io){
 	ERROR_DECLARE;
@@ -220,4 +207,72 @@
 }
 
+#ifdef CONFIG_NETWORKING_modular
+
+#include <netif_standalone.h>
+
+/** Default thread for new connections.
+ *
+ *  @param[in] iid The initial message identifier.
+ *  @param[in] icall The initial message call structure.
+ *
+ */
+static void netif_client_connection(ipc_callid_t iid, ipc_call_t * icall)
+{
+	/*
+	 * Accept the connection
+	 *  - Answer the first IPC_M_CONNECT_ME_TO call.
+	 */
+	ipc_answer_0(iid, EOK);
+	
+	while(true) {
+		ipc_call_t answer;
+		int answer_count;
+		
+		/* Clear the answer structure */
+		refresh_answer(&answer, &answer_count);
+		
+		/* Fetch the next message */
+		ipc_call_t call;
+		ipc_callid_t callid = async_get_call(&call);
+		
+		/* Process the message */
+		int res = netif_module_message(callid, &call, &answer, &answer_count);
+		
+		/* End if said to either by the message or the processing result */
+		if ((IPC_GET_METHOD(call) == IPC_M_PHONE_HUNGUP) || (res == EHANGUP))
+			return;
+		
+		/* Answer the message */
+		answer_call(callid, res, &answer, answer_count);
+	}
+}
+
+/** Starts the module.
+ *
+ *  @param argc The count of the command line arguments. Ignored parameter.
+ *  @param argv The command line parameters. Ignored parameter.
+ *
+ *  @returns EOK on success.
+ *  @returns Other error codes as defined for each specific module start function.
+ *
+ */
+int main(int argc, char *argv[])
+{
+	ERROR_DECLARE;
+	
+	/* Print the module label */
+	printf("Task %d - %s\n", task_get_id(), NAME);
+	
+	/* Start the module */
+	if (ERROR_OCCURRED(netif_module_start(netif_client_connection))) {
+		printf(" - ERROR %i\n", ERROR_CODE);
+		return ERROR_CODE;
+	}
+	
+	return EOK;
+}
+
+#endif /* CONFIG_NETWORKING_modular */
+
 /** @}
  */
