Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/console/console.c	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -483,8 +483,8 @@
 	/* Connect to keyboard driver */
 
-	kbd_phone = ipc_connect_me_to(PHONE_NS, SERVICE_KEYBOARD, 0);
+	kbd_phone = ipc_connect_me_to(PHONE_NS, SERVICE_KEYBOARD, 0, 0);
 	while (kbd_phone < 0) {
 		usleep(10000);
-		kbd_phone = ipc_connect_me_to(PHONE_NS, SERVICE_KEYBOARD, 0);
+		kbd_phone = ipc_connect_me_to(PHONE_NS, SERVICE_KEYBOARD, 0, 0);
 	}
 	
@@ -495,8 +495,8 @@
 	/* Connect to framebuffer driver */
 	
-	fb_info.phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0);
+	fb_info.phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0, 0);
 	while (fb_info.phone < 0) {
 		usleep(10000);
-		fb_info.phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0);
+		fb_info.phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0, 0);
 	}
 	
Index: uspace/srv/devmap/devmap.c
===================================================================
--- uspace/srv/devmap/devmap.c	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/devmap/devmap.c	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -449,6 +449,4 @@
  * Find device driver owning requested device and forward
  * the message to it.
- *
- *
  */
 static void devmap_forward(ipc_callid_t callid, ipc_call_t *call)
@@ -460,5 +458,5 @@
 	 * Get handle from request
 	 */
-	handle = IPC_GET_ARG1(*call);
+	handle = IPC_GET_ARG2(*call);
 	dev = devmap_device_find_handle(handle);
 
@@ -470,7 +468,6 @@
 	} 
 
-	/* FIXME: is this correct method how to pass argument on forwarding ?*/
 	ipc_forward_fast(callid, dev->driver->phone, (ipcarg_t)(dev->handle),
-	    0, IPC_FF_NONE);
+	    IPC_GET_ARG3(*call), 0, IPC_FF_NONE);
 	return;
 }
@@ -670,11 +667,4 @@
 			continue; /* Exit thread */
 
-		case DEVMAP_DEVICE_CONNECT_ME_TO:
-			/* Connect client to selected device */
-			printf("DEVMAP: connect to device %d.\n",
-			    IPC_GET_ARG1(call));
-			devmap_forward(callid, &call);
-			break;
-
 		case DEVMAP_DEVICE_GET_HANDLE:
  			devmap_get_handle(callid, &call);
@@ -710,4 +700,10 @@
 		devmap_connection_client(iid, icall);
 		break;
+	case DEVMAP_CONNECT_TO_DEVICE:
+			/* Connect client to selected device */
+		printf("DEVMAP: connect to device %d.\n",
+		    IPC_GET_ARG2(*icall));
+		devmap_forward(iid, icall);
+		break;
 	default:
 		ipc_answer_0(iid, ENOENT); /* No such interface */
Index: uspace/srv/devmap/devmap.h
===================================================================
--- uspace/srv/devmap/devmap.h	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/devmap/devmap.h	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -42,5 +42,4 @@
 	DEVMAP_DRIVER_REGISTER = IPC_FIRST_USER_METHOD,
 	DEVMAP_DRIVER_UNREGISTER,
-	DEVMAP_DEVICE_CONNECT_ME_TO,
 	DEVMAP_DEVICE_REGISTER,
 	DEVMAP_DEVICE_UNREGISTER,
@@ -83,10 +82,16 @@
 } devmap_device_t;
 
-/** Interface provided by DevMap. 
- *
+/** Interface provided by devmap. 
+ * Every process that connects to devmap must ask one of following
+ * interfaces otherwise connection will be refused.
  */
 typedef enum {
-	DEVMAP_DRIVER = 1,
-	DEVMAP_CLIENT
+		/** Connect as device driver */
+	DEVMAP_DRIVER = 1,	
+		/** Connect as client */
+	DEVMAP_CLIENT,
+		/** Create new connection to instance of device that
+		 * is specified by second argument of call. */
+	DEVMAP_CONNECT_TO_DEVICE
 } devmap_interface_t;
 
Index: uspace/srv/fs/fat/fat.c
===================================================================
--- uspace/srv/fs/fat/fat.c	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/fs/fat/fat.c	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -127,8 +127,8 @@
 	printf("FAT: HelenOS FAT file system server.\n");
 
-	vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0);
+	vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
 	while (vfs_phone < EOK) {
 		usleep(10000);
-		vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0);
+		vfs_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VFS, 0, 0);
 	}
 	
Index: uspace/srv/ns/ns.c
===================================================================
--- uspace/srv/ns/ns.c	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/ns/ns.c	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -213,6 +213,6 @@
 	}
 	hs = hash_table_get_instance(hlp, hashed_service_t, link);
-	return ipc_forward_fast(callid, hs->phone, IPC_GET_ARG2(*call), 0,
-	    IPC_FF_NONE);
+	return ipc_forward_fast(callid, hs->phone, IPC_GET_ARG2(*call), 
+		IPC_GET_ARG3(*call), 0, IPC_FF_NONE);
 }
 
Index: uspace/srv/vfs/vfs_read.c
===================================================================
--- uspace/srv/vfs/vfs_read.c	(revision 263e1ec099c7943773adb288f2db953489a71583)
+++ uspace/srv/vfs/vfs_read.c	(revision b61d47d14bdea0c512d1a9a0ce603ef37ac239bc)
@@ -97,5 +97,5 @@
 	 */
 	ipc_forward_fast(callid, fs_phone, IPC_GET_METHOD(call),
-	    IPC_GET_ARG1(call), IPC_FF_ROUTE_FROM_ME);
+	    IPC_GET_ARG1(call), 0, IPC_FF_ROUTE_FROM_ME);
 
 	vfs_release_phone(fs_phone);
