Index: uspace/lib/net/il/ip_remote.c
===================================================================
--- uspace/lib/net/il/ip_remote.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/il/ip_remote.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -28,11 +28,14 @@
 
 /** @addtogroup ip
- *  @{
+ * @{
  */
 
 /** @file
- *  IP interface implementation for standalone remote modules.
- *  @see ip_interface.h
- *  @see il_interface.h
+ *
+ * IP interface implementation for standalone remote modules.
+ *
+ * @see ip_interface.h
+ * @see il_interface.h
+ *
  */
 
@@ -48,68 +51,91 @@
 #include <ip_messages.h>
 
-int ip_add_route_req(int ip_phone, device_id_t device_id, in_addr_t address, in_addr_t netmask, in_addr_t gateway){
-	return (int) async_req_4_0(ip_phone, NET_IP_ADD_ROUTE, (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr, (ipcarg_t) address.s_addr, (ipcarg_t) netmask.s_addr);
+int ip_add_route_req(int ip_phone, device_id_t device_id, in_addr_t address,
+    in_addr_t netmask, in_addr_t gateway)
+{
+	return (int) async_req_4_0(ip_phone, NET_IP_ADD_ROUTE,
+	    (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr,
+	    (ipcarg_t) address.s_addr, (ipcarg_t) netmask.s_addr);
 }
 
-int ip_bind_service(services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg){
-	return (int) bind_service(service, (ipcarg_t) protocol, me, service, receiver);
+int ip_bind_service(services_t service, int protocol, services_t me,
+    async_client_conn_t receiver, tl_received_msg_t tl_received_msg)
+{
+	return (int) bind_service(service, (ipcarg_t) protocol, me, service,
+	    receiver);
 }
 
-int ip_connect_module(services_t service){
+int ip_connect_module(services_t service)
+{
 	return connect_to_service(SERVICE_IP);
 }
 
-int ip_device_req(int ip_phone, device_id_t device_id, services_t service){
+int ip_device_req(int ip_phone, device_id_t device_id, services_t service)
+{
 	return generic_device_req(ip_phone, NET_IL_DEVICE, device_id, 0, service);
 }
 
-int ip_get_route_req(int ip_phone, ip_protocol_t protocol, const struct sockaddr * destination, socklen_t addrlen, device_id_t * device_id, ip_pseudo_header_ref * header, size_t * headerlen){
-	aid_t message_id;
-	ipcarg_t result;
+int ip_get_route_req(int ip_phone, ip_protocol_t protocol,
+    const struct sockaddr *destination, socklen_t addrlen,
+    device_id_t *device_id, ip_pseudo_header_ref *header, size_t *headerlen)
+{
+	if ((!destination) || (addrlen == 0))
+		return EINVAL;
+	
+	if ((!device_id) || (header) || (headerlen))
+		return EBADMEM;
+	
+	*header = NULL;
+	
 	ipc_call_t answer;
-
-	if(!(destination && (addrlen > 0))){
-		return EINVAL;
-	}
-	if(!(device_id && header && headerlen)){
-		return EBADMEM;
-	}
-
-	*header = NULL;
-	message_id = async_send_1(ip_phone, NET_IP_GET_ROUTE, (ipcarg_t) protocol, &answer);
-	if((async_data_write_start(ip_phone, destination, addrlen) == EOK)
-		&& (async_data_read_start(ip_phone, headerlen, sizeof(*headerlen)) == EOK)
-		&& (*headerlen > 0)){
+	aid_t message_id = async_send_1(ip_phone, NET_IP_GET_ROUTE,
+	    (ipcarg_t) protocol, &answer);
+	
+	if ((async_data_write_start(ip_phone, destination, addrlen) == EOK)
+	    && (async_data_read_start(ip_phone, headerlen, sizeof(*headerlen)) == EOK)
+	    && (*headerlen > 0)) {
 		*header = (ip_pseudo_header_ref) malloc(*headerlen);
-		if(*header){
-			if(async_data_read_start(ip_phone, * header, * headerlen) != EOK){
+		if (*header) {
+			if (async_data_read_start(ip_phone, *header, *headerlen) != EOK)
 				free(*header);
-			}
 		}
 	}
+	
+	ipcarg_t result;
 	async_wait_for(message_id, &result);
-
-	if((result != EOK) && (*header)){
+	
+	if ((result != EOK) && (*header))
 		free(*header);
-	}else{
+	else
 		*device_id = IPC_GET_DEVICE(&answer);
-	}
+	
 	return (int) result;
 }
 
-int ip_packet_size_req(int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension){
-	return generic_packet_size_req(ip_phone, NET_IL_PACKET_SPACE, device_id, packet_dimension);
+int ip_packet_size_req(int ip_phone, device_id_t device_id,
+    packet_dimension_ref packet_dimension)
+{
+	return generic_packet_size_req(ip_phone, NET_IL_PACKET_SPACE, device_id,
+	    packet_dimension);
 }
 
-int ip_received_error_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t target, services_t error){
-	return generic_received_msg(ip_phone, NET_IP_RECEIVED_ERROR, device_id, packet_get_id(packet), target, error);
+int ip_received_error_msg(int ip_phone, device_id_t device_id,
+    packet_t packet, services_t target, services_t error)
+{
+	return generic_received_msg(ip_phone, NET_IP_RECEIVED_ERROR, device_id,
+	    packet_get_id(packet), target, error);
 }
 
-int ip_send_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t sender, services_t error){
-	return generic_send_msg(ip_phone, NET_IL_SEND, device_id, packet_get_id(packet), sender, error);
+int ip_send_msg(int ip_phone, device_id_t device_id, packet_t packet,
+    services_t sender, services_t error)
+{
+	return generic_send_msg(ip_phone, NET_IL_SEND, device_id,
+	    packet_get_id(packet), sender, error);
 }
 
-int ip_set_gateway_req(int ip_phone, device_id_t device_id, in_addr_t gateway){
-	return (int) async_req_2_0(ip_phone, NET_IP_SET_GATEWAY, (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr);
+int ip_set_gateway_req(int ip_phone, device_id_t device_id, in_addr_t gateway)
+{
+	return (int) async_req_2_0(ip_phone, NET_IP_SET_GATEWAY,
+	    (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr);
 }
 
Index: uspace/lib/net/include/netif.h
===================================================================
--- uspace/lib/net/include/netif.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/include/netif.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -129,16 +129,23 @@
 extern packet_t netif_packet_get_1(size_t content);
 
-/** Processes the netif module messages.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
- *  @see netif_interface.h
- *  @see IS_NET_NETIF_MESSAGE()
+/** Process the netif module messages.
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each specific module message function.
+ *
+ * @see netif_interface.h
+ * @see IS_NET_NETIF_MESSAGE()
+ *
  */
-extern int netif_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);
+extern int netif_message(const char *, ipc_callid_t, ipc_call_t *,
+    ipc_call_t *, int *);
 
 /** Initializes the netif module.
Index: uspace/lib/net/include/netif_nil_bundle.h
===================================================================
--- uspace/lib/net/include/netif_nil_bundle.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/include/netif_nil_bundle.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -37,7 +37,7 @@
 #include <async.h>
 
-extern int netif_nil_module_message(ipc_callid_t callid, ipc_call_t *call,
-    ipc_call_t *answer, int *answer_count);
-extern int netif_nil_module_start(async_client_conn_t client_connection);
+extern int netif_nil_module_message(const char *, ipc_callid_t, ipc_call_t *,
+    ipc_call_t *, int *);
+extern int netif_nil_module_start(async_client_conn_t);
 
 #endif
Index: uspace/lib/net/include/netif_standalone.h
===================================================================
--- uspace/lib/net/include/netif_standalone.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/include/netif_standalone.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -37,7 +37,7 @@
 #include <async.h>
 
-extern int netif_module_message(ipc_callid_t callid, ipc_call_t *call,
-    ipc_call_t *answer, int *answer_count);
-extern int netif_module_start(async_client_conn_t client_connection);
+extern int netif_module_message(const char *, ipc_callid_t, ipc_call_t *,
+    ipc_call_t *, int *);
+extern int netif_module_start(async_client_conn_t);
 
 #endif
Index: uspace/lib/net/include/nil_module.h
===================================================================
--- uspace/lib/net/include/nil_module.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/include/nil_module.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -42,23 +42,35 @@
 
 /** Module initialization.
- *  Is called by the module_start() function.
- *  @param[in] net_phone The networking moduel phone.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for each specific module initialize function.
+ *
+ * Is called by the module_start() function.
+ *
+ * @param[in] net_phone The networking moduel phone.
+ *
+ * @return EOK on success.
+ * @return Other error codes as defined for each specific module initialize function.
+ *
  */
-extern int nil_initialize(int net_phone);
+extern int nil_initialize(int);
 
 /** Message processing function.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
- *  @see nil_interface.h
- *  @see IS_NET_NIL_MESSAGE()
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each specific
+ *         module message function.
+ *
+ * @see nil_interface.h
+ * @see IS_NET_NIL_MESSAGE()
+ *
  */
-extern int nil_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);
+extern int nil_message(const char *, ipc_callid_t, ipc_call_t *, ipc_call_t *,
+    int *);
 
 #endif
Index: uspace/lib/net/include/nil_standalone.h
===================================================================
--- uspace/lib/net/include/nil_standalone.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/include/nil_standalone.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -37,7 +37,7 @@
 #include <async.h>
 
-extern int nil_module_message(ipc_callid_t callid, ipc_call_t *call,
-    ipc_call_t *answer, int *answer_count);
-extern int nil_module_start(async_client_conn_t client_connection);
+extern int nil_module_message(const char *, ipc_callid_t, ipc_call_t *,
+    ipc_call_t *, int *);
+extern int nil_module_start(async_client_conn_t);
 
 #endif
Index: uspace/lib/net/netif/netif.c
===================================================================
--- uspace/lib/net/netif/netif.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/netif/netif.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -176,34 +176,40 @@
 }
 
-/** Registers the device notification receiver, the network interface layer module.
- *  @param[in] device_id The device identifier.
- *  @param[in] phone The network interface layer module phone.
- *  @returns EOK on success.
- *  @returns ENOENT if there is no such device.
- *  @returns ELIMIT if there is another module registered.
- */
-static int register_message(device_id_t device_id, int phone){
-	ERROR_DECLARE;
-
+/** Register the device notification receiver, the network interface layer module.
+ *
+ * @param[in] name      Module name.
+ * @param[in] device_id The device identifier.
+ * @param[in] phone     The network interface layer module phone.
+ *
+ * @return EOK on success.
+ * @return ENOENT if there is no such device.
+ * @return ELIMIT if there is another module registered.
+ *
+ */
+static int register_message(const char *name, device_id_t device_id, int phone)
+{
+	ERROR_DECLARE;
+	
 	device_ref device;
-
 	ERROR_PROPAGATE(find_device(device_id, &device));
-	if(device->nil_phone > 0){
+	if(device->nil_phone > 0)
 		return ELIMIT;
-	}
+	
 	device->nil_phone = phone;
-	printf("New receiver of the device %d registered:\n\tphone\t= %d\n", device->device_id, device->nil_phone);
-	return EOK;
-}
-
-int netif_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	ERROR_DECLARE;
-
+	printf("%s: Receiver of device %d registered (phone: %d)\n",
+	    name, device->device_id, device->nil_phone);
+	return EOK;
+}
+
+int netif_message(const char *name, ipc_callid_t callid, ipc_call_t *call,
+    ipc_call_t *answer, int *answer_count)
+{
+	ERROR_DECLARE;
+	
 	size_t length;
 	device_stats_t stats;
 	packet_t packet;
 	measured_string_t address;
-
-//	printf("message %d - %d\n", IPC_GET_METHOD(*call), NET_NETIF_FIRST);
+	
 	*answer_count = 0;
 	switch(IPC_GET_METHOD(*call)){
@@ -211,24 +217,29 @@
 			return EOK;
 		case NET_NETIF_PROBE:
-			return netif_probe_req(0, IPC_GET_DEVICE(call), NETIF_GET_IRQ(call), NETIF_GET_IO(call));
+			return netif_probe_req(0, IPC_GET_DEVICE(call),
+			    NETIF_GET_IRQ(call), NETIF_GET_IO(call));
 		case IPC_M_CONNECT_TO_ME:
 			fibril_rwlock_write_lock(&netif_globals.lock);
-			ERROR_CODE = register_message(IPC_GET_DEVICE(call), IPC_GET_PHONE(call));
+			ERROR_CODE = register_message(name, IPC_GET_DEVICE(call),
+			    IPC_GET_PHONE(call));
 			fibril_rwlock_write_unlock(&netif_globals.lock);
 			return ERROR_CODE;
 		case NET_NETIF_SEND:
-			ERROR_PROPAGATE(packet_translate(netif_globals.net_phone, &packet, IPC_GET_PACKET(call)));
-			return netif_send_msg(0, IPC_GET_DEVICE(call), packet, IPC_GET_SENDER(call));
+			ERROR_PROPAGATE(packet_translate(netif_globals.net_phone,
+			    &packet, IPC_GET_PACKET(call)));
+			return netif_send_msg(0, IPC_GET_DEVICE(call), packet,
+			    IPC_GET_SENDER(call));
 		case NET_NETIF_START:
 			return netif_start_req(0, IPC_GET_DEVICE(call));
 		case NET_NETIF_STATS:
 			fibril_rwlock_read_lock(&netif_globals.lock);
-			if(! ERROR_OCCURRED(async_data_read_receive(&callid, &length))){
-				if(length < sizeof(device_stats_t)){
+			if (!ERROR_OCCURRED(async_data_read_receive(&callid, &length))) {
+				if (length < sizeof(device_stats_t))
 					ERROR_CODE = EOVERFLOW;
-				}else{
-					if(! ERROR_OCCURRED(netif_get_device_stats(IPC_GET_DEVICE(call), &stats))){
-						ERROR_CODE = async_data_read_finalize(callid, &stats, sizeof(device_stats_t));
-					}
+				else {
+					if (!ERROR_OCCURRED(netif_get_device_stats(
+					    IPC_GET_DEVICE(call), &stats)))
+						ERROR_CODE = async_data_read_finalize(callid, &stats,
+						    sizeof(device_stats_t));
 				}
 			}
@@ -239,10 +250,11 @@
 		case NET_NETIF_GET_ADDR:
 			fibril_rwlock_read_lock(&netif_globals.lock);
-			if(! ERROR_OCCURRED(netif_get_addr_message(IPC_GET_DEVICE(call), &address))){
+			if (!ERROR_OCCURRED(netif_get_addr_message(IPC_GET_DEVICE(call),
+			    &address)))
 				ERROR_CODE = measured_strings_reply(&address, 1);
-			}
 			fibril_rwlock_read_unlock(&netif_globals.lock);
 			return ERROR_CODE;
 	}
+	
 	return netif_specific_message(callid, call, answer, answer_count);
 }
Index: uspace/lib/net/netif/netif_nil_bundle.c
===================================================================
--- uspace/lib/net/netif/netif_nil_bundle.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/netif/netif_nil_bundle.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -45,19 +45,26 @@
 #include <netif.h>
 
-/** Distributes the messages between the module parts.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
+/** Distribute the messages between the module parts.
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual
+ *                          answer in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each specific module message function.
+ *
  */
-int netif_nil_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	if(IS_NET_NIL_MESSAGE(call) || (IPC_GET_METHOD(*call) == IPC_M_CONNECT_TO_ME)){
-		return nil_message(callid, call, answer, answer_count);
-	}else{
-		return netif_message(callid, call, answer, answer_count);
-	}
+int netif_nil_module_message(const char *name, ipc_callid_t callid,
+    ipc_call_t *call, ipc_call_t *answer, int *answer_count)
+{
+	if (IS_NET_NIL_MESSAGE(call)
+	    || (IPC_GET_METHOD(*call) == IPC_M_CONNECT_TO_ME))
+		return nil_message(name, callid, call, answer, answer_count);
+	else
+		return netif_message(name, callid, call, answer, answer_count);
 }
 
Index: uspace/lib/net/netif/netif_standalone.c
===================================================================
--- uspace/lib/net/netif/netif_standalone.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/lib/net/netif/netif_standalone.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -41,15 +41,22 @@
 #include <netif_standalone.h>
 
-/** Delegates the messages to the netif_message() function.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
+/** Delegate the messages to the netif_message() function.
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each specific module message function.
+ *
  */
-int netif_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	return netif_message(callid, call, answer, answer_count);
+int netif_module_message(const char *name, ipc_callid_t callid,
+    ipc_call_t *call, ipc_call_t *answer, int *answer_count)
+{
+	return netif_message(name, callid, call, answer, answer_count);
 }
 
Index: uspace/srv/hw/netif/dp8390/dp8390_module.c
===================================================================
--- uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/hw/netif/dp8390/dp8390_module.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -59,5 +59,5 @@
 /** DP8390 module name.
  */
-#define NAME	"dp8390 network interface"
+#define NAME  "dp8390"
 
 /** Returns the device from the interrupt call.
@@ -302,8 +302,16 @@
 }
 
-int change_state(device_ref device, device_state_t state){
-	device->state = state;
-	printf("State changed to %s\n", (state == NETIF_ACTIVE) ? "ACTIVE" : "STOPPED");
-	return state;
+int change_state(device_ref device, device_state_t state)
+{
+	if (device->state != state) {
+		device->state = state;
+		
+		printf("%s: State changed to %s\n", NAME,
+		    (state == NETIF_ACTIVE) ? "active" : "stopped");
+		
+		return state;
+	}
+	
+	return EOK;
 }
 
@@ -346,5 +354,6 @@
 		
 		/* Process the message */
-		int res = netif_module_message(callid, &call, &answer, &answer_count);
+		int res = netif_module_message(NAME, callid, &call, &answer,
+		    &answer_count);
 		
 		/* End if said to either by the message or the processing result */
@@ -370,13 +379,8 @@
 	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)))
+		return ERROR_CODE;
 	
-	/* Start the module */
-	if (ERROR_OCCURRED(netif_module_start(netif_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
-		return ERROR_CODE;
-	}
-	
 	return EOK;
 }
Index: uspace/srv/net/il/arp/arp.c
===================================================================
--- uspace/srv/net/il/arp/arp.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/il/arp/arp.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -68,5 +68,5 @@
 /** ARP module name.
  */
-#define NAME	"ARP protocol"
+#define NAME  "arp"
 
 /** ARP global data.
@@ -338,5 +338,6 @@
 			return ERROR_CODE;
 		}
-		printf("New device registered:\n\tid\t= %d\n\ttype\t= 0x%x\n\tservice\t= %d\n\tproto\t= %d\n", device->device_id, device->hardware, device->service, protocol);
+		printf("%s: Device registered (id: %d, type: 0x%x, service: %d, proto: %d)\n",
+		    NAME, device->device_id, device->hardware, device->service, protocol);
 	}
 	fibril_rwlock_write_unlock(&arp_globals.lock);
@@ -673,13 +674,8 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
+	/* Start the module */
+	if (ERROR_OCCURRED(il_module_start(il_client_connection)))
+		return ERROR_CODE;
 	
-	/* Start the module */
-	if (ERROR_OCCURRED(il_module_start(il_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
-		return ERROR_CODE;
-	}
-	
 	return EOK;
 }
Index: uspace/srv/net/il/ip/ip.c
===================================================================
--- uspace/srv/net/il/ip/ip.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/il/ip/ip.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -79,5 +79,5 @@
 /** IP module name.
  */
-#define NAME	"IP protocol"
+#define NAME  "ip"
 
 /** IP version 4.
@@ -430,5 +430,4 @@
 	ip_route_ref route;
 	int index;
-	char * data;
 
 	ip_netif = (ip_netif_ref) malloc(sizeof(ip_netif_t));
@@ -454,25 +453,28 @@
 	}
 	// print the settings
-	printf("New device registered:\n\tid\t= %d\n\tphone\t= %d\n\tIPV\t= %d\n", ip_netif->device_id, ip_netif->phone, ip_netif->ipv);
-	printf("\tconfiguration\t= %s\n", ip_netif->dhcp ? "dhcp" : "static");
+	printf("%s: Device registered (id: %d, phone: %d, ipv: %d, conf: %s)\n",
+	    NAME, ip_netif->device_id, ip_netif->phone, ip_netif->ipv,
+	    ip_netif->dhcp ? "dhcp" : "static");
+	
 	// TODO ipv6 addresses
-	data = (char *) malloc(INET_ADDRSTRLEN);
-	if(data){
-		for(index = 0; index < ip_routes_count(&ip_netif->routes); ++ index){
-			route = ip_routes_get_index(&ip_netif->routes, index);
-			if(route){
-				printf("\tRouting %d:\n", index);
-				inet_ntop(AF_INET, (uint8_t *) &route->address.s_addr, data, INET_ADDRSTRLEN);
-				printf("\t\taddress\t= %s\n", data);
-				inet_ntop(AF_INET, (uint8_t *) &route->netmask.s_addr, data, INET_ADDRSTRLEN);
-				printf("\t\tnetmask\t= %s\n", data);
-				inet_ntop(AF_INET, (uint8_t *) &route->gateway.s_addr, data, INET_ADDRSTRLEN);
-				printf("\t\tgateway\t= %s\n", data);
-			}
-		}
-		inet_ntop(AF_INET, (uint8_t *) &ip_netif->broadcast.s_addr, data, INET_ADDRSTRLEN);
-		printf("\t\tbroadcast\t= %s\n", data);
-		free(data);
-	}
+	
+	char address[INET_ADDRSTRLEN];
+	char netmask[INET_ADDRSTRLEN];
+	char gateway[INET_ADDRSTRLEN];
+	
+	for (index = 0; index < ip_routes_count(&ip_netif->routes); ++ index){
+		route = ip_routes_get_index(&ip_netif->routes, index);
+		if (route) {
+			inet_ntop(AF_INET, (uint8_t *) &route->address.s_addr, address, INET_ADDRSTRLEN);
+			inet_ntop(AF_INET, (uint8_t *) &route->netmask.s_addr, netmask, INET_ADDRSTRLEN);
+			inet_ntop(AF_INET, (uint8_t *) &route->gateway.s_addr, gateway, INET_ADDRSTRLEN);
+			printf("%s: Route %d (address: %s, netmask: %s, gateway: %s)\n",
+			    NAME, index, address, netmask, gateway);
+		}
+	}
+	
+	inet_ntop(AF_INET, (uint8_t *) &ip_netif->broadcast.s_addr, address, INET_ADDRSTRLEN);
+	printf("%s: Broadcast (%s)\n", NAME, address);
+	
 	fibril_rwlock_write_unlock(&ip_globals.netifs_lock);
 	return EOK;
@@ -595,5 +597,5 @@
 	}
 	netif->packet_dimension.content = mtu;
-	printf("ip - device %d changed mtu to %d\n\n", device_id, mtu);
+	printf("%s: Device %d changed MTU to %d\n", NAME, device_id, mtu);
 	fibril_rwlock_write_unlock(&ip_globals.netifs_lock);
 	return EOK;
@@ -611,5 +613,5 @@
 	}
 	netif->state = state;
-	printf("ip - device %d changed state to %d\n\n", device_id, state);
+	printf("%s: Device %d changed state to %d\n", NAME, device_id, state);
 	fibril_rwlock_write_unlock(&ip_globals.netifs_lock);
 	return EOK;
@@ -646,5 +648,8 @@
 		return index;
 	}
-	printf("New protocol registered:\n\tprotocol\t= %d\n\tphone\t= %d\n", proto->protocol, proto->phone);
+	
+	printf("%s: Protocol registered (protocol: %d, phone: %d)\n",
+	    NAME, proto->protocol, proto->phone);
+	
 	fibril_rwlock_write_unlock(&ip_globals.protos_lock);
 	return EOK;
@@ -1677,12 +1682,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(il_module_start(il_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(il_module_start(il_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/net/net.c
===================================================================
--- uspace/srv/net/net/net.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/net/net.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -28,9 +28,10 @@
 
 /** @addtogroup net
- *  @{
+ * @{
  */
 
 /** @file
- *  Networking subsystem central module implementation.
+ * Networking subsystem central module implementation.
+ *
  */
 
@@ -64,232 +65,564 @@
 #include "net.h"
 
+/** Networking module name.
+ *
+ */
+#define NAME  "net"
+
 /** File read buffer size.
- */
-#define BUFFER_SIZE	256
-
-/** Networking module name.
- */
-#define NAME	"Networking"
+ *
+ */
+#define BUFFER_SIZE  256
 
 /** Networking module global data.
- */
-net_globals_t	net_globals;
-
-/** Generates new system-unique device identifier.
- *  @returns The system-unique devic identifier.
- */
-device_id_t generate_new_device_id(void);
-
-/** Returns the configured values.
- *  The network interface configuration is searched first.
- *  @param[in] netif_conf The network interface configuration setting.
- *  @param[out] configuration The found configured values.
- *  @param[in] count The desired settings count.
- *  @param[out] data The found configuration settings data.
- *  @returns EOK.
- */
-int net_get_conf(measured_strings_ref netif_conf, measured_string_ref configuration, size_t count, char ** data);
-
-/** Initializes the networking module.
- *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
- *  @returns EOK on success.
- *  @returns ENOMEM if there is not enough memory left.
- */
-int net_initialize(async_client_conn_t client_connection);
-
-/** \todo
- */
-int parse_line(measured_strings_ref configuration, char * line);
-
-/** Reads the networking subsystem global configuration.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for the add_configuration() function.
- */
-int read_configuration(void);
-
-/** \todo
- */
-int read_configuration_file(const char * directory, const char * filename, measured_strings_ref configuration);
-
-/** Reads the network interface specific configuration.
- *  @param[in] name The network interface name.
- *  @param[in,out] netif The network interface structure.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for the add_configuration() function.
- */
-int read_netif_configuration(const char * name, netif_ref netif);
-
-/** Starts the network interface according to its configuration.
- *  Registers the network interface with the subsystem modules.
- *  Starts the needed subsystem modules.
- *  @param[in] netif The network interface specific data.
- *  @returns EOK on success.
- *  @returns EINVAL if there are some settings missing.
- *  @returns ENOENT if the internet protocol module is not known.
- *  @returns Other error codes as defined for the netif_probe_req() function.
- *  @returns Other error codes as defined for the nil_device_req() function.
- *  @returns Other error codes as defined for the needed internet layer registering function.
- */
-int start_device(netif_ref netif);
-
-/** Reads the configuration and starts all network interfaces.
- *  @returns EOK on success.
- *  @returns EXDEV if there is no available system-unique device identifier.
- *  @returns EINVAL if any of the network interface names are not configured.
- *  @returns ENOMEM if there is not enough memory left.
- *  @returns Other error codes as defined for the read_configuration() function.
- *  @returns Other error codes as defined for the read_netif_configuration() function.
- *  @returns Other error codes as defined for the start_device() function.
- */
-int startup(void);
-
-GENERIC_CHAR_MAP_IMPLEMENT(measured_strings, measured_string_t)
-
-DEVICE_MAP_IMPLEMENT(netifs, netif_t)
-
-int add_configuration(measured_strings_ref configuration, const char * name, const char * value){
-	ERROR_DECLARE;
-
-	measured_string_ref setting;
-
-	setting = measured_string_create_bulk(value, 0);
-	if(! setting){
+ *
+ */
+net_globals_t net_globals;
+
+GENERIC_CHAR_MAP_IMPLEMENT(measured_strings, measured_string_t);
+DEVICE_MAP_IMPLEMENT(netifs, netif_t);
+
+/** Add the configured setting to the configuration map.
+ *
+ * @param[in] configuration The configuration map.
+ * @param[in] name          The setting name.
+ * @param[in] value         The setting value.
+ *
+ * @returns EOK on success.
+ * @returns ENOMEM if there is not enough memory left.
+ *
+ */
+int add_configuration(measured_strings_ref configuration, const char *name,
+    const char *value)
+{
+	ERROR_DECLARE;
+	
+	measured_string_ref setting =
+	    measured_string_create_bulk(value, 0);
+	
+	if (!setting)
 		return ENOMEM;
-	}
-	// add the configuration setting
-	if(ERROR_OCCURRED(measured_strings_add(configuration, name, 0, setting))){
+	
+	/* Add the configuration setting */
+	if (ERROR_OCCURRED(measured_strings_add(configuration, name, 0, setting))) {
 		free(setting);
 		return ERROR_CODE;
 	}
-	return EOK;
-}
-
-device_id_t generate_new_device_id(void){
+	
+	return EOK;
+}
+
+/** Generate new system-unique device identifier.
+ *
+ * @returns The system-unique devic identifier.
+ *
+ */
+static device_id_t generate_new_device_id(void)
+{
 	return device_assign_devno();
 }
 
-/** Starts the networking module.
- *  Initializes the client connection serving function, initializes the module, registers the module service and starts the async manager, processing IPC messages in an infinite loop.
- *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
- *  @returns EOK on successful module termination.
- *  @returns Other error codes as defined for the net_initialize() function.
- *  @returns Other error codes as defined for the REGISTER_ME() macro function.
- */
-static int net_module_start(async_client_conn_t client_connection){
-	ERROR_DECLARE;
-
-	ipcarg_t phonehash;
-
-	async_set_client_connection(client_connection);
-	ERROR_PROPAGATE(pm_init());
-	if(ERROR_OCCURRED(net_initialize(client_connection))
-		|| ERROR_OCCURRED(REGISTER_ME(SERVICE_NETWORKING, &phonehash))){
-		pm_destroy();
+static int parse_line(measured_strings_ref configuration, char *line)
+{
+	ERROR_DECLARE;
+	
+	/* From the beginning */
+	char *name = line;
+	
+	/* Skip comments and blank lines */
+	if ((*name == '#') || (*name == '\0'))
+		return EOK;
+	
+	/* Skip spaces */
+	while (isspace(*name))
+		name++;
+	
+	/* Remember the name start */
+	char *value = name;
+	
+	/* Skip the name */
+	while (isalnum(*value) || (*value == '_'))
+		value++;
+	
+	if (*value == '=') {
+		/* Terminate the name */
+		*value = '\0';
+	} else {
+		/* Terminate the name */
+		*value = '\0';
+		
+		/* Skip until '=' */
+		value++;
+		while ((*value) && (*value != '='))
+			value++;
+		
+		/* Not found? */
+		if (*value != '=')
+			return EINVAL;
+	}
+	
+	value++;
+	
+	/* Skip spaces */
+	while (isspace(*value))
+		value++;
+	
+	/* Create a bulk measured string till the end */
+	measured_string_ref setting =
+	    measured_string_create_bulk(value, 0);
+	if (!setting)
+		return ENOMEM;
+	
+	/* Add the configuration setting */
+	if (ERROR_OCCURRED(measured_strings_add(configuration, name, 0, setting))) {
+		free(setting);
 		return ERROR_CODE;
 	}
-
-	async_manager();
-
-	pm_destroy();
-	return EOK;
-}
-
-int net_connect_module(services_t service){
-	return EOK;
-}
-
-void net_free_settings(measured_string_ref settings, char * data){
-}
-
-int net_get_conf(measured_strings_ref netif_conf, measured_string_ref configuration, size_t count, char ** data){
-	measured_string_ref setting;
-	size_t index;
-
-	if(data){
-		*data = NULL;
-	}
-
-	for(index = 0; index < count; ++ index){
-		setting = measured_strings_find(netif_conf, configuration[index].value, 0);
-		if(! setting){
-			setting = measured_strings_find(&net_globals.configuration, configuration[index].value, 0);
+	
+	return EOK;
+}
+
+static int read_configuration_file(const char *directory, const char *filename,
+    measured_strings_ref configuration)
+{
+	ERROR_DECLARE;
+	
+	printf("%s: Reading configuration file %s/%s\n", NAME, directory, filename);
+	
+	/* Construct the full filename */
+	char line[BUFFER_SIZE];
+	if (snprintf(line, BUFFER_SIZE, "%s/%s", directory, filename) > BUFFER_SIZE)
+		return EOVERFLOW;
+	
+	/* Open the file */
+	FILE *cfg = fopen(line, "r");
+	if (!cfg)
+		return ENOENT;
+	
+	/*
+	 * Read the configuration line by line
+	 * until an error or the end of file
+	 */
+	unsigned int line_number = 0;
+	size_t index = 0;
+	while ((!ferror(cfg)) && (!feof(cfg))) {
+		int read = fgetc(cfg);
+		if ((read > 0) && (read != '\n') && (read != '\r')) {
+			if (index >= BUFFER_SIZE) {
+				line[BUFFER_SIZE - 1] = '\0';
+				fprintf(stderr, "%s: Configuration line %u too long: %s\n",
+				    NAME, line_number, line);
+				
+				/* No space left in the line buffer */
+				return EOVERFLOW;
+			} else {
+				/* Append the character */
+				line[index] = (char) read;
+				index++;
+			}
+		} else {
+			/* On error or new line */
+			line[index] = '\0';
+			line_number++;
+			if (ERROR_OCCURRED(parse_line(configuration, line)))
+				fprintf(stderr, "%s: Configuration error on line %u: %s\n",
+				    NAME, line_number, line);
+			
+			index = 0;
 		}
-		if(setting){
-			configuration[index].length = setting->length;
-			configuration[index].value = setting->value;
-		}else{
-			configuration[index].length = 0;
-			configuration[index].value = NULL;
-		}
-	}
-	return EOK;
-}
-
-int net_get_conf_req(int net_phone, measured_string_ref * configuration, size_t count, char ** data){
-	if(!(configuration && (count > 0))){
-		return EINVAL;
-	}
-
-	return net_get_conf(NULL, * configuration, count, data);
-}
-
-int net_get_device_conf_req(int net_phone, device_id_t device_id, measured_string_ref * configuration, size_t count, char ** data){
-	netif_ref netif;
-
-	if(!(configuration && (count > 0))){
-		return EINVAL;
-	}
-
-	netif = netifs_find(&net_globals.netifs, device_id);
-	if(netif){
-		return net_get_conf(&netif->configuration, * configuration, count, data);
-	}else{
-		return net_get_conf(NULL, * configuration, count, data);
-	}
-}
-
-int net_initialize(async_client_conn_t client_connection){
-	ERROR_DECLARE;
-
+	}
+	
+	fclose(cfg);
+	return EOK;
+}
+
+/** Read the network interface specific configuration.
+ *
+ * @param[in]     name  The network interface name.
+ * @param[in,out] netif The network interface structure.
+ *
+ * @returns EOK on success.
+ * @returns Other error codes as defined for the add_configuration() function.
+ *
+ */
+static int read_netif_configuration(const char *name, netif_t *netif)
+{
+	return read_configuration_file(CONF_DIR, name, &netif->configuration);
+}
+
+/** Read the networking subsystem global configuration.
+ *
+ * @returns EOK on success.
+ * @returns Other error codes as defined for the add_configuration() function.
+ *
+ */
+static int read_configuration(void)
+{
+	return read_configuration_file(CONF_DIR, CONF_GENERAL_FILE,
+	    &net_globals.configuration);
+}
+
+/** Initialize the networking module.
+ *
+ * @param[in] client_connection The client connection processing
+ *                              function. The module skeleton propagates
+ *                              its own one.
+ *
+ * @returns EOK on success.
+ * @returns ENOMEM if there is not enough memory left.
+ *
+ */
+static int net_initialize(async_client_conn_t client_connection)
+{
+	ERROR_DECLARE;
+	
 	netifs_initialize(&net_globals.netifs);
 	char_map_initialize(&net_globals.netif_names);
 	modules_initialize(&net_globals.modules);
 	measured_strings_initialize(&net_globals.configuration);
-
-	// TODO dynamic configuration
+	
+	// TODO: dynamic configuration
 	ERROR_PROPAGATE(read_configuration());
-
-	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules, LO_NAME, LO_FILENAME, SERVICE_LO, 0, connect_to_service));
-	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules, DP8390_NAME, DP8390_FILENAME, SERVICE_DP8390, 0, connect_to_service));
-	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules, ETHERNET_NAME, ETHERNET_FILENAME, SERVICE_ETHERNET, 0, connect_to_service));
-	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules, NILDUMMY_NAME, NILDUMMY_FILENAME, SERVICE_NILDUMMY, 0, connect_to_service));
-
-	// build specific initialization
+	
+	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules,
+	    LO_NAME, LO_FILENAME, SERVICE_LO, 0, connect_to_service));
+	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules,
+	    DP8390_NAME, DP8390_FILENAME, SERVICE_DP8390, 0, connect_to_service));
+	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules,
+	    ETHERNET_NAME, ETHERNET_FILENAME, SERVICE_ETHERNET, 0,
+	    connect_to_service));
+	ERROR_PROPAGATE(add_module(NULL, &net_globals.modules,
+	    NILDUMMY_NAME, NILDUMMY_FILENAME, SERVICE_NILDUMMY, 0,
+	    connect_to_service));
+	
+	/* Build specific initialization */
 	return net_initialize_build(client_connection);
 }
 
-int net_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	ERROR_DECLARE;
-
+/** Start the networking module.
+ *
+ * Initializes the client connection serving function,
+ * initializes the module, registers the module service
+ * and starts the async manager, processing IPC messages
+ * in an infinite loop.
+ *
+ * @param[in] client_connection The client connection
+ *                              processing function. The
+ *                              module skeleton propagates
+ *                              its own one.
+ *
+ * @returns EOK on successful module termination.
+ * @returns Other error codes as defined for the net_initialize() function.
+ * @returns Other error codes as defined for the REGISTER_ME() macro function.
+ *
+ */
+static int net_module_start(async_client_conn_t client_connection)
+{
+	ERROR_DECLARE;
+	
+	async_set_client_connection(client_connection);
+	ERROR_PROPAGATE(pm_init());
+	
+	ipcarg_t phonehash;
+	
+	if (ERROR_OCCURRED(net_initialize(client_connection))
+	    || ERROR_OCCURRED(REGISTER_ME(SERVICE_NETWORKING, &phonehash))){
+		pm_destroy();
+		return ERROR_CODE;
+	}
+	
+	async_manager();
+	
+	pm_destroy();
+	return EOK;
+}
+
+/** Return the configured values.
+ *
+ * The network interface configuration is searched first.
+ &
+ * @param[in]  netif_conf    The network interface configuration setting.
+ * @param[out] configuration The found configured values.
+ * @param[in]  count         The desired settings count.
+ * @param[out] data          The found configuration settings data.
+ *
+ * @returns EOK.
+ *
+ */
+static int net_get_conf(measured_strings_ref netif_conf,
+    measured_string_ref configuration, size_t count, char **data)
+{
+	if (data)
+		*data = NULL;
+	
+	size_t index;
+	for (index = 0; index < count; index++) {
+		measured_string_ref setting =
+		    measured_strings_find(netif_conf, configuration[index].value, 0);
+		if (!setting)
+			setting = measured_strings_find(&net_globals.configuration,
+			    configuration[index].value, 0);
+		
+		if (setting) {
+			configuration[index].length = setting->length;
+			configuration[index].value = setting->value;
+		} else {
+			configuration[index].length = 0;
+			configuration[index].value = NULL;
+		}
+	}
+	
+	return EOK;
+}
+
+int net_get_conf_req(int net_phone, measured_string_ref *configuration,
+    size_t count, char **data)
+{
+	if (!(configuration && (count > 0)))
+		return EINVAL;
+	
+	return net_get_conf(NULL, *configuration, count, data);
+}
+
+int net_get_device_conf_req(int net_phone, device_id_t device_id,
+    measured_string_ref *configuration, size_t count, char **data)
+{
+	if ((!configuration) || (count == 0))
+		return EINVAL;
+
+	netif_t *netif = netifs_find(&net_globals.netifs, device_id);
+	if (netif)
+		return net_get_conf(&netif->configuration, *configuration, count, data);
+	else
+		return net_get_conf(NULL, *configuration, count, data);
+}
+
+void net_free_settings(measured_string_ref settings, char *data)
+{
+}
+
+/** Start the network interface according to its configuration.
+ *
+ * Register the network interface with the subsystem modules.
+ * Start the needed subsystem modules.
+ *
+ * @param[in] netif The network interface specific data.
+ *
+ * @returns EOK on success.
+ * @returns EINVAL if there are some settings missing.
+ * @returns ENOENT if the internet protocol module is not known.
+ * @returns Other error codes as defined for the netif_probe_req() function.
+ * @returns Other error codes as defined for the nil_device_req() function.
+ * @returns Other error codes as defined for the needed internet layer
+ *          registering function.
+ *
+ */
+static int start_device(netif_t *netif)
+{
+	ERROR_DECLARE;
+	
+	/* Mandatory netif */
+	measured_string_ref setting =
+	    measured_strings_find(&netif->configuration, CONF_NETIF, 0);
+	
+	netif->driver = get_running_module(&net_globals.modules, setting->value);
+	if (!netif->driver) {
+		fprintf(stderr, "%s: Failed to start network interface driver '%s'\n",
+		    NAME, setting->value);
+		return EINVAL;
+	}
+	
+	/* Optional network interface layer */
+	setting = measured_strings_find(&netif->configuration, CONF_NIL, 0);
+	if (setting) {
+		netif->nil = get_running_module(&net_globals.modules, setting->value);
+		if (!netif->nil) {
+			fprintf(stderr, "%s: Failed to start network interface layer '%s'\n",
+			    NAME, setting->value);
+			return EINVAL;
+		}
+	} else
+		netif->nil = NULL;
+	
+	/* Mandatory internet layer */
+	setting = measured_strings_find(&netif->configuration, CONF_IL, 0);
+	netif->il = get_running_module(&net_globals.modules, setting->value);
+	if (!netif->il) {
+		fprintf(stderr, "%s: Failed to start internet layer '%s'\n",
+		    NAME, setting->value);
+		return EINVAL;
+	}
+	
+	/* Hardware configuration */
+	setting = measured_strings_find(&netif->configuration, CONF_IRQ, 0);
+	int irq = setting ? strtol(setting->value, NULL, 10) : 0;
+	
+	setting = measured_strings_find(&netif->configuration, CONF_IO, 0);
+	int io = setting ? strtol(setting->value, NULL, 16) : 0;
+	
+	ERROR_PROPAGATE(netif_probe_req(netif->driver->phone, netif->id, irq, io));
+	
+	/* Network interface layer startup */
+	services_t internet_service;
+	if (netif->nil) {
+		setting = measured_strings_find(&netif->configuration, CONF_MTU, 0);
+		if (!setting)
+			setting = measured_strings_find(&net_globals.configuration,
+			    CONF_MTU, 0);
+		
+		int mtu = setting ? strtol(setting->value, NULL, 10) : 0;
+		
+		ERROR_PROPAGATE(nil_device_req(netif->nil->phone, netif->id, mtu,
+		    netif->driver->service));
+		
+		internet_service = netif->nil->service;
+	} else
+		internet_service = netif->driver->service;
+	
+	/* Inter-network layer startup */
+	switch (netif->il->service) {
+		case SERVICE_IP:
+			ERROR_PROPAGATE(ip_device_req(netif->il->phone, netif->id,
+			    internet_service));
+			break;
+		default:
+			return ENOENT;
+	}
+	
+	ERROR_PROPAGATE(netif_start_req(netif->driver->phone, netif->id));
+	return EOK;
+}
+
+/** Read the configuration and start all network interfaces.
+ *
+ * @returns EOK on success.
+ * @returns EXDEV if there is no available system-unique device identifier.
+ * @returns EINVAL if any of the network interface names are not configured.
+ * @returns ENOMEM if there is not enough memory left.
+ * @returns Other error codes as defined for the read_configuration()
+ *          function.
+ * @returns Other error codes as defined for the read_netif_configuration()
+ *          function.
+ * @returns Other error codes as defined for the start_device() function.
+ *
+ */
+static int startup(void)
+{
+	ERROR_DECLARE;
+	
+	const char *conf_files[] = {"lo", "ne2k"};
+	size_t count = sizeof(conf_files) / sizeof(char *);
+	
+	size_t i;
+	for (i = 0; i < count; i++) {
+		netif_t *netif = (netif_t *) malloc(sizeof(netif_t));
+		if (!netif)
+			return ENOMEM;
+		
+		netif->id = generate_new_device_id();
+		if (!netif->id)
+			return EXDEV;
+		
+		ERROR_PROPAGATE(measured_strings_initialize(&netif->configuration));
+		
+		/* Read configuration files */
+		if (ERROR_OCCURRED(read_netif_configuration(conf_files[i], netif))) {
+			measured_strings_destroy(&netif->configuration);
+			free(netif);
+			return ERROR_CODE;
+		}
+		
+		/* Mandatory name */
+		measured_string_ref setting =
+		    measured_strings_find(&netif->configuration, CONF_NAME, 0);
+		if (!setting) {
+			fprintf(stderr, "%s: Network interface name is missing\n", NAME);
+			measured_strings_destroy(&netif->configuration);
+			free(netif);
+			return EINVAL;
+		}
+		netif->name = setting->value;
+		
+		/* Add to the netifs map */
+		int index = netifs_add(&net_globals.netifs, netif->id, netif);
+		if (index < 0) {
+			measured_strings_destroy(&netif->configuration);
+			free(netif);
+			return index;
+		}
+		
+		/*
+		 * Add to the netif names map and start network interfaces
+		 * and needed modules.
+		 */
+		if ((ERROR_OCCURRED(char_map_add(&net_globals.netif_names,
+		    netif->name, 0, index))) || (ERROR_OCCURRED(start_device(netif)))) {
+			measured_strings_destroy(&netif->configuration);
+			netifs_exclude_index(&net_globals.netifs, index);
+			return ERROR_CODE;
+		}
+		
+		/* Increment modules' usage */
+		netif->driver->usage++;
+		if (netif->nil)
+			netif->nil->usage++;
+		netif->il->usage++;
+		
+		printf("%s: Network interface started (name: %s, id: %d, driver: %s, "
+		    "nil: %s, il: %s)\n", NAME, netif->name, netif->id,
+		    netif->driver->name,  netif->nil ? netif->nil->name : "[none]",
+		    netif->il->name);
+	}
+	
+	return EOK;
+}
+
+/** Process the networking message.
+ *
+ * @param[in] callid        The message identifier.
+ * @param[in] call          The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @returns EOK on success.
+ * @returns ENOTSUP if the message is not known.
+ *
+ * @see net_interface.h
+ * @see IS_NET_NET_MESSAGE()
+ *
+ */
+int net_message(ipc_callid_t callid, ipc_call_t *call, ipc_call_t *answer,
+    int *answer_count)
+{
+	ERROR_DECLARE;
+	
 	measured_string_ref strings;
-	char * data;
-
+	char *data;
+	
 	*answer_count = 0;
-	switch(IPC_GET_METHOD(*call)){
+	switch (IPC_GET_METHOD(*call)) {
 		case IPC_M_PHONE_HUNGUP:
 			return EOK;
 		case NET_NET_GET_DEVICE_CONF:
-			ERROR_PROPAGATE(measured_strings_receive(&strings, &data, IPC_GET_COUNT(call)));
-			net_get_device_conf_req(0, IPC_GET_DEVICE(call), &strings, IPC_GET_COUNT(call), NULL);
-			// strings should not contain received data anymore
+			ERROR_PROPAGATE(measured_strings_receive(&strings, &data,
+			    IPC_GET_COUNT(call)));
+			net_get_device_conf_req(0, IPC_GET_DEVICE(call), &strings,
+			    IPC_GET_COUNT(call), NULL);
+			
+			/* Strings should not contain received data anymore */
 			free(data);
+			
 			ERROR_CODE = measured_strings_reply(strings, IPC_GET_COUNT(call));
 			free(strings);
 			return ERROR_CODE;
 		case NET_NET_GET_CONF:
-			ERROR_PROPAGATE(measured_strings_receive(&strings, &data, IPC_GET_COUNT(call)));
+			ERROR_PROPAGATE(measured_strings_receive(&strings, &data,
+			    IPC_GET_COUNT(call)));
 			net_get_conf_req(0, &strings, IPC_GET_COUNT(call), NULL);
-			// strings should not contain received data anymore
+			
+			/* Strings should not contain received data anymore */
 			free(data);
+			
 			ERROR_CODE = measured_strings_reply(strings, IPC_GET_COUNT(call));
 			free(strings);
@@ -301,273 +634,11 @@
 }
 
-int parse_line(measured_strings_ref configuration, char * line){
-	ERROR_DECLARE;
-
-	measured_string_ref setting;
-	char * name;
-	char * value;
-
-	// from the beginning
-	name = line;
-
-	// skip comments and blank lines
-	if((*name == '#') || (*name == '\0')){
-		return EOK;
-	}
-	// skip spaces
-	while(isspace(*name)){
-		++ name;
-	}
-
-	// remember the name start
-	value = name;
-	// skip the name
-	while(isalnum(*value) || (*value == '_')){
-		// make uppercase
-//		*value = toupper(*value);
-		++ value;
-	}
-
-	if(*value == '='){
-		// terminate the name
-		*value = '\0';
-	}else{
-		// terminate the name
-		*value = '\0';
-		// skip until '='
-		++ value;
-		while((*value) && (*value != '=')){
-			++ value;
-		}
-		// not found?
-		if(*value != '='){
-			return EINVAL;
-		}
-	}
-
-	++ value;
-	// skip spaces
-	while(isspace(*value)){
-		++ value;
-	}
-	// create a bulk measured string till the end
-	setting = measured_string_create_bulk(value, 0);
-	if(! setting){
-		return ENOMEM;
-	}
-
-	// add the configuration setting
-	if(ERROR_OCCURRED(measured_strings_add(configuration, name, 0, setting))){
-		free(setting);
-		return ERROR_CODE;
-	}
-	return EOK;
-}
-
-int read_configuration(void){
-	// read the general configuration file
-	return read_configuration_file(CONF_DIR, CONF_GENERAL_FILE, &net_globals.configuration);
-}
-
-int read_configuration_file(const char * directory, const char * filename, measured_strings_ref configuration){
-	ERROR_DECLARE;
-
-	size_t index = 0;
-	char line[BUFFER_SIZE];
-	FILE * cfg;
-	int read;
-	int line_number = 0;
-
-	// construct the full filename
-	printf("Reading file %s/%s\n", directory, filename);
-	if(snprintf(line, BUFFER_SIZE, "%s/%s", directory, filename) > BUFFER_SIZE){
-		return EOVERFLOW;
-	}
-	// open the file
-	cfg = fopen(line, "r");
-	if(! cfg){
-		return ENOENT;
-	}
-
-	// read the configuration line by line
-	// until an error or the end of file
-	while((! ferror(cfg)) && (! feof(cfg))){
-		read = fgetc(cfg);
-		if((read > 0) && (read != '\n') && (read != '\r')){
-			if(index >= BUFFER_SIZE){
-				line[BUFFER_SIZE - 1] = '\0';
-				printf("line %d too long: %s\n", line_number, line);
-				// no space left in the line buffer
-				return EOVERFLOW;
-			}else{
-				// append the character
-				line[index] = (char) read;
-				++ index;
-			}
-		}else{
-			// on error or new line
-			line[index] = '\0';
-			++ line_number;
-			if(ERROR_OCCURRED(parse_line(configuration, line))){
-				printf("error on line %d: %s\n", line_number, line);
-				//fclose(cfg);
-				//return ERROR_CODE;
-			}
-			index = 0;
-		}
-	}
-	fclose(cfg);
-	return EOK;
-}
-
-int read_netif_configuration(const char * name, netif_ref netif){
-	// read the netif configuration file
-	return read_configuration_file(CONF_DIR, name, &netif->configuration);
-}
-
-int start_device(netif_ref netif){
-	ERROR_DECLARE;
-
-	measured_string_ref setting;
-	services_t internet_service;
-	int irq;
-	int io;
-	int mtu;
-
-	// mandatory netif
-	setting = measured_strings_find(&netif->configuration, CONF_NETIF, 0);
-	netif->driver = get_running_module(&net_globals.modules, setting->value);
-	if(! netif->driver){
-		printf("Failed to start the network interface driver %s\n", setting->value);
-		return EINVAL;
-	}
-
-	// optional network interface layer
-	setting = measured_strings_find(&netif->configuration, CONF_NIL, 0);
-	if(setting){
-		netif->nil = get_running_module(&net_globals.modules, setting->value);
-		if(! netif->nil){
-			printf("Failed to start the network interface layer %s\n", setting->value);
-			return EINVAL;
-		}
-	}else{
-		netif->nil = NULL;
-	}
-
-	// mandatory internet layer
-	setting = measured_strings_find(&netif->configuration, CONF_IL, 0);
-	netif->il = get_running_module(&net_globals.modules, setting->value);
-	if(! netif->il){
-		printf("Failed to start the internet layer %s\n", setting->value);
-		return EINVAL;
-	}
-
-	// hardware configuration
-	setting = measured_strings_find(&netif->configuration, CONF_IRQ, 0);
-	irq = setting ? strtol(setting->value, NULL, 10) : 0;
-	setting = measured_strings_find(&netif->configuration, CONF_IO, 0);
-	io = setting ? strtol(setting->value, NULL, 16) : 0;
-	ERROR_PROPAGATE(netif_probe_req(netif->driver->phone, netif->id, irq, io));
-
-	// network interface layer startup
-	if(netif->nil){
-		setting = measured_strings_find(&netif->configuration, CONF_MTU, 0);
-		if(! setting){
-			setting = measured_strings_find(&net_globals.configuration, CONF_MTU, 0);
-		}
-		mtu = setting ? strtol(setting->value, NULL, 10) : 0;
-		ERROR_PROPAGATE(nil_device_req(netif->nil->phone, netif->id, mtu, netif->driver->service));
-		internet_service = netif->nil->service;
-	}else{
-		internet_service = netif->driver->service;
-	}
-
-	// inter-network layer startup
-	switch(netif->il->service){
-		case SERVICE_IP:
-			ERROR_PROPAGATE(ip_device_req(netif->il->phone, netif->id, internet_service));
-			break;
-		default:
-			return ENOENT;
-	}
-	ERROR_PROPAGATE(netif_start_req(netif->driver->phone, netif->id));
-	return EOK;
-}
-
-int startup(void){
-	ERROR_DECLARE;
-
-	const char * conf_files[] = {"lo", "ne2k"};
-
-	int count = sizeof(conf_files) / sizeof(char *);
-	int index;
-	netif_ref netif;
-	int i;
-	measured_string_ref setting;
-
-	for(i = 0; i < count; ++ i){
-		netif = (netif_ref) malloc(sizeof(netif_t));
-		if(! netif){
-			return ENOMEM;
-		}
-
-		netif->id = generate_new_device_id();
-		if(! netif->id){
-			return EXDEV;
-		}
-		ERROR_PROPAGATE(measured_strings_initialize(&netif->configuration));
-
-		// read configuration files
-		if(ERROR_OCCURRED(read_netif_configuration(conf_files[i], netif))){
-			measured_strings_destroy(&netif->configuration);
-			free(netif);
-			return ERROR_CODE;
-		}
-
-		// mandatory name
-		setting = measured_strings_find(&netif->configuration, CONF_NAME, 0);
-		if(! setting){
-			printf("The name is missing\n");
-			measured_strings_destroy(&netif->configuration);
-			free(netif);
-			return EINVAL;
-		}
-		netif->name = setting->value;
-
-		// add to the netifs map
-		index = netifs_add(&net_globals.netifs, netif->id, netif);
-		if(index < 0){
-			measured_strings_destroy(&netif->configuration);
-			free(netif);
-			return index;
-		}
-
-		// add to the netif names map
-		if(ERROR_OCCURRED(char_map_add(&net_globals.netif_names, netif->name, 0, index))
-		// start network interfaces and needed modules
-			|| ERROR_OCCURRED(start_device(netif))){
-			measured_strings_destroy(&netif->configuration);
-			netifs_exclude_index(&net_globals.netifs, index);
-			return ERROR_CODE;
-		}
-
-		// increment modules' usage
-		++ netif->driver->usage;
-		if(netif->nil){
-			++ netif->nil->usage;
-		}
-		++ netif->il->usage;
-		printf("New network interface started:\n\tname\t= %s\n\tid\t= %d\n\tdriver\t= %s\n\tnil\t= %s\n\til\t= %s\n", netif->name, netif->id, netif->driver->name, netif->nil ? netif->nil->name : NULL, netif->il->name);
-	}
-	return EOK;
-}
-
 /** Default thread for new connections.
  *
- *  @param[in] iid The initial message identifier.
- *  @param[in] icall The initial message call structure.
- *
- */
-static void net_client_connection(ipc_callid_t iid, ipc_call_t * icall)
+ * @param[in] iid The initial message identifier.
+ * @param[in] icall The initial message call structure.
+ *
+ */
+static void net_client_connection(ipc_callid_t iid, ipc_call_t *icall)
 {
 	/*
@@ -577,9 +648,8 @@
 	ipc_answer_0(iid, EOK);
 	
-	while(true) {
+	while (true) {
+		/* Clear the answer structure */
 		ipc_call_t answer;
 		int answer_count;
-		
-		/* Clear the answer structure */
 		refresh_answer(&answer, &answer_count);
 		
@@ -600,23 +670,10 @@
 }
 
-/** 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(net_module_start(net_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+		fprintf(stderr, "%s: net_module_start error %i\n", NAME, ERROR_CODE);
 		return ERROR_CODE;
 	}
Index: uspace/srv/net/net/net.h
===================================================================
--- uspace/srv/net/net/net.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/net/net.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -28,9 +28,10 @@
 
 /** @addtogroup net
- *  @{
+ * @{
  */
 
 /** @file
- *  Networking subsystem central module.
+ * Networking subsystem central module.
+ *
  */
 
@@ -48,197 +49,92 @@
 
 /** @name Modules definitions
+ * @{
  */
-/*@{*/
 
-/** DP8390 network interface module full path filename.
+#define DP8390_FILENAME  "/srv/dp8390"
+#define DP8390_NAME      "dp8390"
+
+#define ETHERNET_FILENAME  "/srv/eth"
+#define ETHERNET_NAME      "eth"
+
+#define IP_FILENAME  "/srv/ip"
+#define IP_NAME      "ip"
+
+#define LO_FILENAME  "/srv/lo"
+#define LO_NAME      "lo"
+
+#define NILDUMMY_FILENAME  "/srv/nildummy"
+#define NILDUMMY_NAME      "nildummy"
+
+/** @}
  */
-#define DP8390_FILENAME		"/srv/dp8390"
-
-/** DP8390 network interface module name.
- */
-#define DP8390_NAME			"dp8390"
-
-/** Ethernet module full path filename.
- */
-#define ETHERNET_FILENAME	"/srv/eth"
-
-/** Ethernet module name.
- */
-#define ETHERNET_NAME		"ethernet"
-
-/** IP module full path filename.
- */
-#define IP_FILENAME			"/srv/ip"
-
-/** IP module name.
- */
-#define IP_NAME				"ip"
-
-/** Loopback network interface module full path filename.
- */
-#define LO_FILENAME			"/srv/lo"
-
-/** Loopback network interface module name.
- */
-#define LO_NAME				"lo"
-
-/** Ethernet module full path filename.
- */
-#define NILDUMMY_FILENAME	"/srv/nildummy"
-
-/** Ethernet module name.
- */
-#define NILDUMMY_NAME		"nildummy"
-
-/*@}*/
 
 /** @name Configuration setting names definitions
+ * @{
  */
-/*@{*/
 
-/** Internet protocol module name configuration label.
+#define CONF_IL     "IL"     /**< Internet protocol module name configuration label. */
+#define CONF_IO     "IO"     /**< Device input/output address configuration label. */
+#define CONF_IRQ    "IRQ"    /**< Interrupt number configuration label. */
+#define CONF_MTU    "MTU"    /**< Maximum transmission unit configuration label. */
+#define CONF_NAME   "NAME"   /**< Network interface name configuration label. */
+#define CONF_NETIF  "NETIF"  /**< Network interface module name configuration label. */
+#define CONF_NIL    "NIL"    /**< Network interface layer module name configuration label. */
+
+/** @}
  */
-#define CONF_IL				"IL"
 
-/** Device input/output address configuration label.
- */
-#define CONF_IO				"IO"
-
-/** Interrupt number configuration label.
- */
-#define CONF_IRQ			"IRQ"
-
-/** Maximum transmission unit configuration label.
- */
-#define CONF_MTU			"MTU"
-
-/** Network interface name configuration label.
- */
-#define CONF_NAME			"NAME"
-
-/** Network interface module name configuration label.
- */
-#define CONF_NETIF			"NETIF"
-
-/** Network interface layer module name configuration label.
- */
-#define CONF_NIL			"NIL"
-
-/*@}*/
-
-/** Configuration directory.
- */
-#define CONF_DIR			"/cfg/net"
-
-/** General configuration file.
- */
-#define CONF_GENERAL_FILE	"general"
-
-/** Type definition of the networking module global data.
- *  @see net_globals
- */
-typedef struct net_globals	net_globals_t;
-
-/** Type definition of the network interface specific data.
- *  @see netif
- */
-typedef struct netif	netif_t;
-
-/** Type definition of the network interface specific data pointer.
- *  @see netif
- */
-typedef netif_t *		netif_ref;
+#define CONF_DIR           "/cfg/net"  /**< Configuration directory. */
+#define CONF_GENERAL_FILE  "general"   /**< General configuration file. */
 
 /** Configuration settings.
- *  Maps setting names to the values.
- *  @see generic_char_map.h
+ *
+ * Maps setting names to the values.
+ * @see generic_char_map.h
+ *
  */
-GENERIC_CHAR_MAP_DECLARE(measured_strings, measured_string_t)
+GENERIC_CHAR_MAP_DECLARE(measured_strings, measured_string_t);
+
+/** Present network interface device.
+ *
+ */
+typedef struct {
+	measured_strings_t configuration;  /**< Configuration. */
+	
+	/** Serving network interface driver module index. */
+	module_ref driver;
+	
+	device_id_t id;  /**< System-unique network interface identifier. */
+	module_ref il;   /**< Serving internet layer module index. */
+	char *name;      /**< System-unique network interface name. */
+	module_ref nil;  /**< Serving link layer module index. */
+} netif_t;
 
 /** Present network interfaces.
- *  Maps devices to the networking device specific data.
- *  @see device.h
+ *
+ * Maps devices to the networking device specific data.
+ * @see device.h
+ *
  */
-DEVICE_MAP_DECLARE(netifs, netif_t)
+DEVICE_MAP_DECLARE(netifs, netif_t);
 
-/** Networking module global variables.
+/** Networking module global data.
+ *
  */
-struct net_globals{
-	/** Global configuration.
-	 */
-	measured_strings_t configuration;
-	/** Available modules.
-	 */
-	modules_t modules;
-	/** Network interface structure indices by names.
-	 */
+typedef struct {
+	measured_strings_t configuration;  /**< Global configuration. */
+	modules_t modules;                 /**< Available modules. */
+	
+	/** Network interface structure indices by names. */
 	char_map_t netif_names;
-	/** Present network interfaces.
-	 */
+	
+	/** Present network interfaces. */
 	netifs_t netifs;
-};
+} net_globals_t;
 
-/** Present network interface device.
- */
-struct netif{
-	/** Configuration.
-	 */
-	measured_strings_t configuration;
-	/** Serving network interface driver module index.
-	 */
-	module_ref driver;
-	/** System-unique network interface identifier.
-	 */
-	device_id_t id;
-	/** Serving internet layer module index.
-	 */
-	module_ref il;
-	/** System-unique network interface name.
-	 */
-	char * name;
-	/** Serving link layer module index.
-	 */
-	module_ref nil;
-};
-
-/** Adds the configured setting to the configuration map.
- *  @param[in] configuration The configuration map.
- *  @param[in] name The setting name.
- *  @param[in] value The setting value.
- *  @returns EOK on success.
- *  @returns ENOMEM if there is not enough memory left.
- */
-int add_configuration(measured_strings_ref configuration, const char * name, const char * value);
-
-/** Processes the module message.
- *  Distributes the message to the right bundled module.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each bundled module message function.
- */
-int net_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);
-
-/** Initializes the networking module for the chosen subsystem build type.
- *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
- *  @returns EOK on success.
- *  @returns ENOMEM if there is not enough memory left.
- */
-int net_initialize_build(async_client_conn_t client_connection);
-
-/** Processes the networking message.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @see net_interface.h
- *  @see IS_NET_NET_MESSAGE()
- */
-int net_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);
+extern int add_configuration(measured_strings_ref, const char *, const char *);
+extern int net_module_message(ipc_callid_t, ipc_call_t *, ipc_call_t *, int *);
+extern int net_initialize_build(async_client_conn_t);
+extern int net_message(ipc_callid_t, ipc_call_t *, ipc_call_t *, int *);
 
 #endif
Index: uspace/srv/net/net/net_bundle.c
===================================================================
--- uspace/srv/net/net/net_bundle.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/net/net_bundle.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -60,4 +60,9 @@
 extern net_globals_t	net_globals;
 
+/** Initializes the networking module for the chosen subsystem build type.
+ *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
+ *  @returns EOK on success.
+ *  @returns ENOMEM if there is not enough memory left.
+ */
 int net_initialize_build(async_client_conn_t client_connection){
 	ERROR_DECLARE;
@@ -79,4 +84,14 @@
 }
 
+/** Processes the module message.
+ *  Distributes the message to the right bundled module.
+ *  @param[in] callid The message identifier.
+ *  @param[in] call The message parameters.
+ *  @param[out] answer The message answer parameters.
+ *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
+ *  @returns EOK on success.
+ *  @returns ENOTSUP if the message is not known.
+ *  @returns Other error codes as defined for each bundled module message function.
+ */
 int net_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
 	if((IPC_GET_METHOD(*call) == IPC_M_CONNECT_TO_ME)
Index: uspace/srv/net/net/net_standalone.c
===================================================================
--- uspace/srv/net/net/net_standalone.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/net/net_standalone.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -51,4 +51,9 @@
 extern net_globals_t	net_globals;
 
+/** Initializes the networking module for the chosen subsystem build type.
+ *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
+ *  @returns EOK on success.
+ *  @returns ENOMEM if there is not enough memory left.
+ */
 int net_initialize_build(async_client_conn_t client_connection){
 	ERROR_DECLARE;
@@ -73,4 +78,14 @@
 }
 
+/** Processes the module message.
+ *  Distributes the message to the right bundled module.
+ *  @param[in] callid The message identifier.
+ *  @param[in] call The message parameters.
+ *  @param[out] answer The message answer parameters.
+ *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
+ *  @returns EOK on success.
+ *  @returns ENOTSUP if the message is not known.
+ *  @returns Other error codes as defined for each bundled module message function.
+ */
 int net_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
 	if(IS_NET_PACKET_MESSAGE(call)){
Index: uspace/srv/net/netif/lo/lo.c
===================================================================
--- uspace/srv/net/netif/lo/lo.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/netif/lo/lo.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -64,5 +64,5 @@
 /** Loopback module name.
  */
-#define NAME	"lo - loopback interface"
+#define NAME  "lo"
 
 /** Network interface global data.
@@ -113,10 +113,15 @@
 }
 
-int change_state_message(device_ref device, device_state_t state){
-	if(device->state != state){
+int change_state_message(device_ref device, device_state_t state)
+{
+	if (device->state != state) {
 		device->state = state;
-		printf("State changed to %s\n", (state == NETIF_ACTIVE) ? "ACTIVE" : "STOPPED");
+		
+		printf("%s: State changed to %s\n", NAME,
+		    (state == NETIF_ACTIVE) ? "active" : "stopped");
+		
 		return state;
 	}
+	
 	return EOK;
 }
@@ -166,5 +171,5 @@
 	ERROR_PROPAGATE(create(device_id, &device));
 	// print the settings
-	printf("New device created:\n\tid\t= %d\n", device->device_id);
+	printf("%s: Device created (id: %d)\n", NAME, device->device_id);
 	return EOK;
 }
@@ -237,5 +242,6 @@
 		
 		/* Process the message */
-		int res = netif_module_message(callid, &call, &answer, &answer_count);
+		int res = netif_module_message(NAME, callid, &call, &answer,
+		    &answer_count);
 		
 		/* End if said to either by the message or the processing result */
@@ -261,12 +267,7 @@
 	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);
+	if (ERROR_OCCURRED(netif_module_start(netif_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/netstart/netstart.c
===================================================================
--- uspace/srv/net/netstart/netstart.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/netstart/netstart.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -79,15 +79,4 @@
 }
 
-/** Network startup entry point.
- *
- * @param[in] argc The number of command line parameters.
- * @param[in] argv The command line parameters.
- *
- * @returns EOK on success.
- * @returns EINVAL if the net module cannot be started.
- * @returns Other error codes as defined for the self_test() function.
- * @returns Other error codes as defined for the NET_NET_STARTUP message.
- *
- */
 int main(int argc, char *argv[])
 {
@@ -105,5 +94,5 @@
 	int net_phone = connect_to_service(SERVICE_NETWORKING);
 	if (ERROR_OCCURRED(ipc_call_sync_0_0(net_phone, NET_NET_STARTUP))) {
-		fprintf(stderr, "%s: Networking error %d\n", NAME, ERROR_CODE);
+		fprintf(stderr, "%s: Startup error %d\n", NAME, ERROR_CODE);
 		return ERROR_CODE;
 	}
Index: uspace/srv/net/netstart/self_test.c
===================================================================
--- uspace/srv/net/netstart/self_test.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/netstart/self_test.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -49,9 +49,8 @@
 #include "self_test.h"
 
-/** Test the function, compare the result and remember if the result differs.
- *
- *  @param[in] name          The test name.
- *  @param[in] function_call The function to be called and checked.
- *  @param[in] result        The expected result.
+/** Test the statement, compare the result and evaluate.
+ *
+ * @param[in] statement The statement to test.
+ * @param[in] result    The expected result.
  *
  */
@@ -85,4 +84,12 @@
 INT_MAP_IMPLEMENT(int_map, int);
 
+/** Self-test start function.
+ *
+ * Run all self-tests.
+ *
+ * @returns EOK on success.
+ * @returns The first error occurred.
+ *
+ */
 int self_test(void)
 {
Index: uspace/srv/net/nil/eth/eth.c
===================================================================
--- uspace/srv/net/nil/eth/eth.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/nil/eth/eth.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -60,4 +60,5 @@
 #include <adt/measured_strings.h>
 #include <packet/packet_client.h>
+#include <nil_module.h>
 
 #include "eth.h"
@@ -66,5 +67,5 @@
 /** The module name.
  */
-#define NAME	"Ethernet protocol"
+#define NAME  "eth"
 
 /** Reserved packet prefix length.
@@ -401,5 +402,10 @@
 			return index;
 		}
-		printf("New device registered:\n\tid\t= %d\n\tservice\t= %d\n\tMTU\t= %d\n\taddress\t= %X:%X:%X:%X:%X:%X\n\tflags\t= 0x%x\n", device->device_id, device->service, device->mtu, device->addr_data[0], device->addr_data[1], device->addr_data[2], device->addr_data[3], device->addr_data[4], device->addr_data[5], device->flags);
+		printf("%s: Device registered (id: %d, service: %d: mtu: %d, "
+		    "mac: %x:%x:%x:%x:%x:%x, flags: 0x%x)\n",
+		    NAME, device->device_id, device->service, device->mtu,
+		    device->addr_data[0], device->addr_data[1],
+		    device->addr_data[2], device->addr_data[3],
+		    device->addr_data[4], device->addr_data[5], device->flags);
 	}
 	fibril_rwlock_write_unlock(&eth_globals.devices_lock);
@@ -571,5 +577,8 @@
 		}
 	}
-	printf("New protocol registered:\n\tprotocol\t= 0x%x\n\tservice\t= %d\n\tphone\t= %d\n", proto->protocol, proto->service, proto->phone);
+	
+	printf("%s: Protocol registered (protocol: %d, service: %d, phone: %d)\n",
+	    NAME, proto->protocol, proto->service, proto->phone);
+	
 	fibril_rwlock_write_unlock(&eth_globals.protos_lock);
 	return EOK;
@@ -704,7 +713,9 @@
 }
 
-int nil_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
+int nil_message(const char *name, ipc_callid_t callid, ipc_call_t *call,
+    ipc_call_t *answer, int *answer_count)
+{
 	ERROR_DECLARE;
-
+	
 	measured_string_ref address;
 	packet_t packet;
@@ -713,17 +724,20 @@
 	size_t suffix;
 	size_t content;
-
-//	printf("message %d - %d\n", IPC_GET_METHOD(*call), NET_NIL_FIRST);
+	
 	*answer_count = 0;
-	switch(IPC_GET_METHOD(*call)){
+	switch (IPC_GET_METHOD(*call)) {
 		case IPC_M_PHONE_HUNGUP:
 			return EOK;
 		case NET_NIL_DEVICE:
-			return eth_device_message(IPC_GET_DEVICE(call), IPC_GET_SERVICE(call), IPC_GET_MTU(call));
+			return eth_device_message(IPC_GET_DEVICE(call),
+			    IPC_GET_SERVICE(call), IPC_GET_MTU(call));
 		case NET_NIL_SEND:
-			ERROR_PROPAGATE(packet_translate(eth_globals.net_phone, &packet, IPC_GET_PACKET(call)));
-			return eth_send_message(IPC_GET_DEVICE(call), packet, IPC_GET_SERVICE(call));
+			ERROR_PROPAGATE(packet_translate(eth_globals.net_phone, &packet,
+			    IPC_GET_PACKET(call)));
+			return eth_send_message(IPC_GET_DEVICE(call), packet,
+			    IPC_GET_SERVICE(call));
 		case NET_NIL_PACKET_SPACE:
-			ERROR_PROPAGATE(eth_packet_space_message(IPC_GET_DEVICE(call), &addrlen, &prefix, &content, &suffix));
+			ERROR_PROPAGATE(eth_packet_space_message(IPC_GET_DEVICE(call),
+			    &addrlen, &prefix, &content, &suffix));
 			IPC_SET_ADDR(answer, addrlen);
 			IPC_SET_PREFIX(answer, prefix);
@@ -733,12 +747,16 @@
 			return EOK;
 		case NET_NIL_ADDR:
-			ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call), ETH_LOCAL_ADDR, &address));
+			ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call),
+			    ETH_LOCAL_ADDR, &address));
 			return measured_strings_reply(address, 1);
 		case NET_NIL_BROADCAST_ADDR:
-			ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call), ETH_BROADCAST_ADDR, &address));
+			ERROR_PROPAGATE(eth_addr_message(IPC_GET_DEVICE(call),
+			    ETH_BROADCAST_ADDR, &address));
 			return measured_strings_reply(address, 1);
 		case IPC_M_CONNECT_TO_ME:
-			return eth_register_message(NIL_GET_PROTO(call), IPC_GET_PHONE(call));
-	}
+			return eth_register_message(NIL_GET_PROTO(call),
+			    IPC_GET_PHONE(call));
+	}
+	
 	return ENOTSUP;
 }
@@ -799,5 +817,6 @@
 		
 		/* Process the message */
-		int res = nil_module_message(callid, &call, &answer, &answer_count);
+		int res = nil_module_message(NAME, callid, &call, &answer,
+		    &answer_count);
 		
 		/* End if said to either by the message or the processing result */
@@ -823,12 +842,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(nil_module_start(nil_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(nil_module_start(nil_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/nil/eth/eth.h
===================================================================
--- uspace/srv/net/nil/eth/eth.h	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/nil/eth/eth.h	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -147,25 +147,4 @@
 };
 
-/** Module initialization.
- *  Is called by the module_start() function.
- *  @param[in] net_phone The networking moduel phone.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for each specific module initialize function.
- */
-extern int nil_initialize(int net_phone);
-
-/** Message processing function.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
- *  @see nil_interface.h
- *  @see IS_NET_NIL_MESSAGE()
- */
-extern int nil_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);
-
 #endif
 
Index: uspace/srv/net/nil/eth/eth_module.c
===================================================================
--- uspace/srv/net/nil/eth/eth_module.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/nil/eth/eth_module.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -46,4 +46,5 @@
 #include <net_interface.h>
 #include <packet/packet.h>
+#include <nil_module.h>
 #include <nil_standalone.h>
 
@@ -79,15 +80,23 @@
 }
 
-/** Passes the parameters to the module specific nil_message() function.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
+/** Pass the parameters to the module specific nil_message() function.
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each
+ *         specific module message function.
+ *
  */
-int nil_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	return nil_message(callid, call, answer, answer_count);
+int nil_module_message(const char *name, ipc_callid_t callid, ipc_call_t *call,
+    ipc_call_t *answer, int *answer_count)
+{
+	return nil_message(name, callid, call, answer, answer_count);
 }
 
Index: uspace/srv/net/nil/nildummy/nildummy.c
===================================================================
--- uspace/srv/net/nil/nildummy/nildummy.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/nil/nildummy/nildummy.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -60,5 +60,5 @@
 /** The module name.
  */
-#define NAME	"Dummy nil protocol"
+#define NAME  "nildummy"
 
 /** Default maximum transmission unit.
@@ -228,5 +228,6 @@
 			return index;
 		}
-		printf("New device registered:\n\tid\t= %d\n\tservice\t= %d\n\tMTU\t= %d\n", device->device_id, device->service, device->mtu);
+		printf("%s: Device registered (id: %d, service: %d, mtu: %d)\n",
+		    NAME, device->device_id, device->service, device->mtu);
 	}
 	fibril_rwlock_write_unlock(&nildummy_globals.devices_lock);
@@ -290,5 +291,8 @@
 	nildummy_globals.proto.service = service;
 	nildummy_globals.proto.phone = phone;
-	printf("New protocol registered:\n\tservice\t= %d\n\tphone\t= %d\n", nildummy_globals.proto.service, nildummy_globals.proto.phone);
+	
+	printf("%s: Protocol registered (service: %d, phone: %d)\n",
+	    NAME, nildummy_globals.proto.service, nildummy_globals.proto.phone);
+	
 	fibril_rwlock_write_unlock(&nildummy_globals.protos_lock);
 	return EOK;
@@ -312,7 +316,9 @@
 }
 
-int nil_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
+int nil_message(const char *name, ipc_callid_t callid, ipc_call_t *call,
+    ipc_call_t *answer, int *answer_count)
+{
 	ERROR_DECLARE;
-
+	
 	measured_string_ref address;
 	packet_t packet;
@@ -321,17 +327,20 @@
 	size_t suffix;
 	size_t content;
-
-//	printf("message %d - %d\n", IPC_GET_METHOD(*call), NET_NIL_FIRST);
+	
 	*answer_count = 0;
-	switch(IPC_GET_METHOD(*call)){
+	switch (IPC_GET_METHOD(*call)) {
 		case IPC_M_PHONE_HUNGUP:
 			return EOK;
 		case NET_NIL_DEVICE:
-			return nildummy_device_message(IPC_GET_DEVICE(call), IPC_GET_SERVICE(call), IPC_GET_MTU(call));
+			return nildummy_device_message(IPC_GET_DEVICE(call),
+			    IPC_GET_SERVICE(call), IPC_GET_MTU(call));
 		case NET_NIL_SEND:
-			ERROR_PROPAGATE(packet_translate(nildummy_globals.net_phone, &packet, IPC_GET_PACKET(call)));
-			return nildummy_send_message(IPC_GET_DEVICE(call), packet, IPC_GET_SERVICE(call));
+			ERROR_PROPAGATE(packet_translate(nildummy_globals.net_phone,
+			    &packet, IPC_GET_PACKET(call)));
+			return nildummy_send_message(IPC_GET_DEVICE(call), packet,
+			    IPC_GET_SERVICE(call));
 		case NET_NIL_PACKET_SPACE:
-			ERROR_PROPAGATE(nildummy_packet_space_message(IPC_GET_DEVICE(call), &addrlen, &prefix, &content, &suffix));
+			ERROR_PROPAGATE(nildummy_packet_space_message(IPC_GET_DEVICE(call),
+			    &addrlen, &prefix, &content, &suffix));
 			IPC_SET_ADDR(answer, addrlen);
 			IPC_SET_PREFIX(answer, prefix);
@@ -341,9 +350,12 @@
 			return EOK;
 		case NET_NIL_ADDR:
-			ERROR_PROPAGATE(nildummy_addr_message(IPC_GET_DEVICE(call), &address));
+			ERROR_PROPAGATE(nildummy_addr_message(IPC_GET_DEVICE(call),
+			    &address));
 			return measured_strings_reply(address, 1);
 		case IPC_M_CONNECT_TO_ME:
-			return nildummy_register_message(NIL_GET_PROTO(call), IPC_GET_PHONE(call));
-	}
+			return nildummy_register_message(NIL_GET_PROTO(call),
+			    IPC_GET_PHONE(call));
+	}
+	
 	return ENOTSUP;
 }
@@ -404,5 +416,6 @@
 		
 		/* Process the message */
-		int res = nil_module_message(callid, &call, &answer, &answer_count);
+		int res = nil_module_message(NAME, callid, &call, &answer,
+		    &answer_count);
 		
 		/* End if said to either by the message or the processing result */
@@ -428,12 +441,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(nil_module_start(nil_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(nil_module_start(nil_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/nil/nildummy/nildummy_module.c
===================================================================
--- uspace/srv/net/nil/nildummy/nildummy_module.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/nil/nildummy/nildummy_module.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -51,44 +51,60 @@
 #include "nildummy.h"
 
-/** Starts the dummy nil module.
- *  Initializes the client connection serving function, initializes the module, registers the module service and starts the async manager, processing IPC messages in an infinite loop.
- *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for the pm_init() function.
- *  @returns Other error codes as defined for the nil_initialize() function.
- *  @returns Other error codes as defined for the REGISTER_ME() macro function.
+/** Start the dummy nil module.
+ *
+ * Initialize the client connection serving function, initialize
+ * the module, register the module service and start the async
+ * manager, processing IPC messages in an infinite loop.
+ *
+ * @param[in] client_connection The client connection processing
+ *                              function. The module skeleton propagates
+ *                              its own one.
+ *
+ * @return EOK on success.
+ * @return Other error codes as defined for the pm_init() function.
+ * @return Other error codes as defined for the nil_initialize() function.
+ * @return Other error codes as defined for the REGISTER_ME() macro function.
+ *
  */
-int nil_module_start(async_client_conn_t client_connection){
+int nil_module_start(async_client_conn_t client_connection)
+{
 	ERROR_DECLARE;
-
+	
+	async_set_client_connection(client_connection);
+	int net_phone = net_connect_module(SERVICE_NETWORKING);
+	ERROR_PROPAGATE(pm_init());
+	
 	ipcarg_t phonehash;
-	int net_phone;
-
-	async_set_client_connection(client_connection);
-	net_phone = net_connect_module(SERVICE_NETWORKING);
-	ERROR_PROPAGATE(pm_init());
-	if(ERROR_OCCURRED(nil_initialize(net_phone))
-		|| ERROR_OCCURRED(REGISTER_ME(SERVICE_NILDUMMY, &phonehash))){
+	if (ERROR_OCCURRED(nil_initialize(net_phone))
+	    || ERROR_OCCURRED(REGISTER_ME(SERVICE_NILDUMMY, &phonehash))){
 		pm_destroy();
 		return ERROR_CODE;
 	}
-
+	
 	async_manager();
-
+	
 	pm_destroy();
 	return EOK;
 }
 
-/** Passes the parameters to the module specific nil_message() function.
- *  @param[in] callid The message identifier.
- *  @param[in] call The message parameters.
- *  @param[out] answer The message answer parameters.
- *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
- *  @returns EOK on success.
- *  @returns ENOTSUP if the message is not known.
- *  @returns Other error codes as defined for each specific module message function.
+/** Pass the parameters to the module specific nil_message() function.
+ *
+ * @param[in]  name         Module name.
+ * @param[in]  callid       The message identifier.
+ * @param[in]  call         The message parameters.
+ * @param[out] answer       The message answer parameters.
+ * @param[out] answer_count The last parameter for the actual answer
+ *                          in the answer parameter.
+ *
+ * @return EOK on success.
+ * @return ENOTSUP if the message is not known.
+ * @return Other error codes as defined for each specific
+ *          module message function.
+ *
  */
-int nil_module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
-	return nil_message(callid, call, answer, answer_count);
+int nil_module_message(const char *name, ipc_callid_t callid,
+    ipc_call_t *call, ipc_call_t *answer, int *answer_count)
+{
+	return nil_message(name, callid, call, answer, answer_count);
 }
 
Index: uspace/srv/net/tl/icmp/icmp.c
===================================================================
--- uspace/srv/net/tl/icmp/icmp.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/tl/icmp/icmp.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -873,12 +873,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(tl_module_start(tl_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(tl_module_start(tl_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/tl/tcp/tcp.c
===================================================================
--- uspace/srv/net/tl/tcp/tcp.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/tl/tcp/tcp.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -2051,12 +2051,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(tl_module_start(tl_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(tl_module_start(tl_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
Index: uspace/srv/net/tl/udp/udp.c
===================================================================
--- uspace/srv/net/tl/udp/udp.c	(revision 4dd8529d49f0dfcebe110b2d6421fc0ef334ff51)
+++ uspace/srv/net/tl/udp/udp.c	(revision 24ab58b348754b301fea741628d74d49704735d6)
@@ -753,12 +753,7 @@
 	ERROR_DECLARE;
 	
-	/* Print the module label */
-	printf("Task %d - %s\n", task_get_id(), NAME);
-	
 	/* Start the module */
-	if (ERROR_OCCURRED(tl_module_start(tl_client_connection))) {
-		printf(" - ERROR %i\n", ERROR_CODE);
+	if (ERROR_OCCURRED(tl_module_start(tl_client_connection)))
 		return ERROR_CODE;
-	}
 	
 	return EOK;
