Index: uspace/lib/usbvirt/src/device.c
===================================================================
--- uspace/lib/usbvirt/src/device.c	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ uspace/lib/usbvirt/src/device.c	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -50,26 +50,25 @@
 /** Main IPC call handling from virtual host controller.
  *
- * @param iid   Caller identification
  * @param icall Initial incoming call
  * @param arg   Local argument
+ *
  */
-static void callback_connection(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
+static void callback_connection(ipc_call_t *icall, void *arg)
 {
 	assert(DEV != NULL);
 
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 
 	while (true) {
-		cap_call_handle_t chandle;
 		ipc_call_t call;
+		async_get_call(&call);
 
-		chandle = async_get_call(&call);
-		bool processed = usbvirt_ipc_handle_call(DEV, chandle, &call);
+		bool processed = usbvirt_ipc_handle_call(DEV, &call);
 		if (!processed) {
 			if (!IPC_GET_IMETHOD(call)) {
-				async_answer_0(chandle, EOK);
+				async_answer_0(&call, EOK);
 				return;
 			} else
-				async_answer_0(chandle, EINVAL);
+				async_answer_0(&call, EINVAL);
 		}
 	}
Index: uspace/lib/usbvirt/src/ipc_dev.c
===================================================================
--- uspace/lib/usbvirt/src/ipc_dev.c	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ uspace/lib/usbvirt/src/ipc_dev.c	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -44,21 +44,20 @@
 /** Handle VHC request for device name.
  *
- * @param dev Target virtual device.
- * @param iid Caller id.
- * @param icall The call with the request.
- */
-static void ipc_get_name(usbvirt_device_t *dev,
-    cap_call_handle_t icall_handle, ipc_call_t *icall)
+ * @param dev   Target virtual device.
+ * @param icall The call with the request.
+ *
+ */
+static void ipc_get_name(usbvirt_device_t *dev, ipc_call_t *icall)
 {
 	if (dev->name == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 	}
 
 	size_t size = str_size(dev->name);
 
-	cap_call_handle_t chandle;
+	ipc_call_t call;
 	size_t accepted_size;
-	if (!async_data_read_receive(&chandle, &accepted_size)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&call, &accepted_size)) {
+		async_answer_0(icall, EINVAL);
 		return;
 	}
@@ -67,17 +66,16 @@
 		accepted_size = size;
 	}
-	async_data_read_finalize(chandle, dev->name, accepted_size);
-
-	async_answer_1(icall_handle, EOK, accepted_size);
+	async_data_read_finalize(&call, dev->name, accepted_size);
+
+	async_answer_1(icall, EOK, accepted_size);
 }
 
 /** Handle VHC request for control read from the device.
  *
- * @param dev Target virtual device.
- * @param iid Caller id.
- * @param icall The call with the request.
- */
-static void ipc_control_read(usbvirt_device_t *dev,
-    cap_call_handle_t icall_handle, ipc_call_t *icall)
+ * @param dev   Target virtual device.
+ * @param icall The call with the request.
+ *
+ */
+static void ipc_control_read(usbvirt_device_t *dev, ipc_call_t *icall)
 {
 	errno_t rc;
@@ -90,11 +88,11 @@
 	    1, 1024, 0, &setup_packet_len);
 	if (rc != EOK) {
-		async_answer_0(icall_handle, rc);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EPARTY);
+		async_answer_0(icall, rc);
+		return;
+	}
+
+	ipc_call_t data;
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EPARTY);
 		free(setup_packet);
 		return;
@@ -103,5 +101,5 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		free(setup_packet);
 		return;
@@ -113,6 +111,6 @@
 
 	if (rc != EOK) {
-		async_answer_0(data_chandle, rc);
-		async_answer_0(icall_handle, rc);
+		async_answer_0(&data, rc);
+		async_answer_0(icall, rc);
 		free(setup_packet);
 		free(buffer);
@@ -120,6 +118,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, buffer, actual_len);
-	async_answer_0(icall_handle, EOK);
+	async_data_read_finalize(&data, buffer, actual_len);
+	async_answer_0(icall, EOK);
 
 	free(setup_packet);
@@ -129,10 +127,9 @@
 /** Handle VHC request for control write to the device.
  *
- * @param dev Target virtual device.
- * @param iid Caller id.
- * @param icall The call with the request.
- */
-static void ipc_control_write(usbvirt_device_t *dev,
-    cap_call_handle_t icall_handle, ipc_call_t *icall)
+ * @param dev   Target virtual device.
+ * @param icall The call with the request.
+ *
+ */
+static void ipc_control_write(usbvirt_device_t *dev, ipc_call_t *icall)
 {
 	size_t data_buffer_len = IPC_GET_ARG1(*icall);
@@ -146,5 +143,5 @@
 	    1, 0, 0, &setup_packet_len);
 	if (rc != EOK) {
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -154,5 +151,5 @@
 		    1, 0, 0, &data_buffer_len);
 		if (rc != EOK) {
-			async_answer_0(icall_handle, rc);
+			async_answer_0(icall, rc);
 			free(setup_packet);
 			return;
@@ -163,5 +160,5 @@
 	    data_buffer, data_buffer_len);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 
 	free(setup_packet);
@@ -173,11 +170,10 @@
 /** Handle VHC request for data read from the device (in transfer).
  *
- * @param dev Target virtual device.
- * @param iid Caller id.
- * @param icall The call with the request.
+ * @param dev   Target virtual device.
+ * @param icall The call with the request.
+ *
  */
 static void ipc_data_in(usbvirt_device_t *dev,
-    usb_transfer_type_t transfer_type,
-    cap_call_handle_t icall_handle, ipc_call_t *icall)
+    usb_transfer_type_t transfer_type, ipc_call_t *icall)
 {
 	usb_endpoint_t endpoint = IPC_GET_ARG1(*icall);
@@ -186,7 +182,7 @@
 
 	size_t data_len = 0;
-	cap_call_handle_t data_chandle;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EPARTY);
+	ipc_call_t data;
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EPARTY);
 		return;
 	}
@@ -194,5 +190,5 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -203,12 +199,12 @@
 
 	if (rc != EOK) {
-		async_answer_0(data_chandle, rc);
-		async_answer_0(icall_handle, rc);
+		async_answer_0(&data, rc);
+		async_answer_0(icall, rc);
 		free(buffer);
 		return;
 	}
 
-	async_data_read_finalize(data_chandle, buffer, actual_len);
-	async_answer_0(icall_handle, EOK);
+	async_data_read_finalize(&data, buffer, actual_len);
+	async_answer_0(icall, EOK);
 
 	free(buffer);
@@ -217,11 +213,10 @@
 /** Handle VHC request for data write to the device (out transfer).
  *
- * @param dev Target virtual device.
- * @param iid Caller id.
- * @param icall The call with the request.
+ * @param dev   Target virtual device.
+ * @param icall The call with the request.
+ *
  */
 static void ipc_data_out(usbvirt_device_t *dev,
-    usb_transfer_type_t transfer_type,
-    cap_call_handle_t icall_handle, ipc_call_t *icall)
+    usb_transfer_type_t transfer_type, ipc_call_t *icall)
 {
 	usb_endpoint_t endpoint = IPC_GET_ARG1(*icall);
@@ -233,5 +228,5 @@
 	    1, 0, 0, &data_buffer_size);
 	if (rc != EOK) {
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -240,5 +235,5 @@
 	    data_buffer, data_buffer_size);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 
 	free(data_buffer);
@@ -247,41 +242,40 @@
 /** Handle incoming IPC call for virtual USB device.
  *
- * @param dev Target USB device.
- * @param chandle Caller id.
+ * @param dev  Target USB device.
  * @param call Incoming call.
+ *
  * @return Whether the call was handled.
- */
-bool usbvirt_ipc_handle_call(usbvirt_device_t *dev,
-    cap_call_handle_t chandle, ipc_call_t *call)
+ *
+ */
+bool usbvirt_ipc_handle_call(usbvirt_device_t *dev, ipc_call_t *call)
 {
 	switch (IPC_GET_IMETHOD(*call)) {
 	case IPC_M_USBVIRT_GET_NAME:
-		ipc_get_name(dev, chandle, call);
+		ipc_get_name(dev, call);
 		break;
 
 	case IPC_M_USBVIRT_CONTROL_READ:
-		ipc_control_read(dev, chandle, call);
+		ipc_control_read(dev, call);
 		break;
 
 	case IPC_M_USBVIRT_CONTROL_WRITE:
-		ipc_control_write(dev, chandle, call);
+		ipc_control_write(dev, call);
 		break;
 
 	case IPC_M_USBVIRT_INTERRUPT_IN:
-		ipc_data_in(dev, USB_TRANSFER_INTERRUPT, chandle, call);
+		ipc_data_in(dev, USB_TRANSFER_INTERRUPT, call);
 		break;
 
 	case IPC_M_USBVIRT_BULK_IN:
-		ipc_data_in(dev, USB_TRANSFER_BULK, chandle, call);
+		ipc_data_in(dev, USB_TRANSFER_BULK, call);
 		break;
 
 	case IPC_M_USBVIRT_INTERRUPT_OUT:
-		ipc_data_out(dev, USB_TRANSFER_INTERRUPT, chandle, call);
+		ipc_data_out(dev, USB_TRANSFER_INTERRUPT, call);
 		break;
 
 	case IPC_M_USBVIRT_BULK_OUT:
-		ipc_data_out(dev, USB_TRANSFER_BULK, chandle, call);
-		break;
-
+		ipc_data_out(dev, USB_TRANSFER_BULK, call);
+		break;
 
 	default:
