Index: uspace/srv/devman/client_conn.c
===================================================================
--- uspace/srv/devman/client_conn.c	(revision 7c3fb9bd77e4d2f6c10517a052e567f176fa91ee)
+++ uspace/srv/devman/client_conn.c	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -62,5 +62,5 @@
  * device tree.
  */
-static void devman_function_get_handle(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_function_get_handle(ipc_call_t *icall)
 {
 	char *pathname;
@@ -69,5 +69,5 @@
 	errno_t rc = async_data_write_accept((void **) &pathname, true, 0, 0, 0, 0);
 	if (rc != EOK) {
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -78,5 +78,5 @@
 
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -87,5 +87,5 @@
 	if (fun->state == FUN_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -97,9 +97,9 @@
 	fun_del_ref(fun);
 
-	async_answer_1(icall_handle, EOK, handle);
+	async_answer_1(icall, EOK, handle);
 }
 
 /** Get device match ID. */
-static void devman_fun_get_match_id(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_get_match_id(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -109,12 +109,12 @@
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		fun_del_ref(fun);
 		return;
@@ -123,6 +123,6 @@
 	buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		fun_del_ref(fun);
 		return;
@@ -146,6 +146,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, mid->id, sent_length);
-	async_answer_1(icall_handle, EOK, mid->score);
+	async_data_read_finalize(&data, mid->id, sent_length);
+	async_answer_1(icall, EOK, mid->score);
 
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -158,11 +158,11 @@
 	free(buffer);
 
-	async_answer_0(data_chandle, ENOENT);
-	async_answer_0(icall_handle, ENOENT);
+	async_answer_0(&data, ENOENT);
+	async_answer_0(icall, ENOENT);
 	fun_del_ref(fun);
 }
 
 /** Get device name. */
-static void devman_fun_get_name(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_get_name(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -170,12 +170,12 @@
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		fun_del_ref(fun);
 		return;
@@ -184,6 +184,6 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		fun_del_ref(fun);
 		return;
@@ -197,6 +197,6 @@
 		free(buffer);
 
-		async_answer_0(data_chandle, ENOENT);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(&data, ENOENT);
+		async_answer_0(icall, ENOENT);
 		fun_del_ref(fun);
 		return;
@@ -208,6 +208,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, fun->name, sent_length);
-	async_answer_0(icall_handle, EOK);
+	async_data_read_finalize(&data, fun->name, sent_length);
+	async_answer_0(icall, EOK);
 
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -217,5 +217,5 @@
 
 /** Get function driver name. */
-static void devman_fun_get_driver_name(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_get_driver_name(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -223,12 +223,12 @@
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		fun_del_ref(fun);
 		return;
@@ -237,6 +237,6 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		fun_del_ref(fun);
 		return;
@@ -250,6 +250,6 @@
 		free(buffer);
 
-		async_answer_0(data_chandle, ENOENT);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(&data, ENOENT);
+		async_answer_0(icall, ENOENT);
 		fun_del_ref(fun);
 		return;
@@ -261,6 +261,6 @@
 		free(buffer);
 
-		async_answer_0(data_chandle, EINVAL);
-		async_answer_0(icall_handle, EINVAL);
+		async_answer_0(&data, EINVAL);
+		async_answer_0(icall, EINVAL);
 		fun_del_ref(fun);
 		return;
@@ -272,7 +272,7 @@
 	}
 
-	async_data_read_finalize(data_chandle, fun->child->drv->name,
+	async_data_read_finalize(&data, fun->child->drv->name,
 	    sent_length);
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -282,5 +282,5 @@
 
 /** Get device path. */
-static void devman_fun_get_path(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_get_path(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -288,12 +288,12 @@
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		fun_del_ref(fun);
 		return;
@@ -302,6 +302,6 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		fun_del_ref(fun);
 		return;
@@ -315,6 +315,6 @@
 		free(buffer);
 
-		async_answer_0(data_chandle, ENOENT);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(&data, ENOENT);
+		async_answer_0(icall, ENOENT);
 		fun_del_ref(fun);
 		return;
@@ -326,6 +326,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, fun->pathname, sent_length);
-	async_answer_0(icall_handle, EOK);
+	async_data_read_finalize(&data, fun->pathname, sent_length);
+	async_answer_0(icall, EOK);
 
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -335,5 +335,5 @@
 
 /** Get handle for parent function of a device. */
-static void devman_dev_get_parent(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_dev_get_parent(ipc_call_t *icall)
 {
 	dev_node_t *dev;
@@ -344,5 +344,5 @@
 	if (dev == NULL || dev->state == DEVICE_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -350,23 +350,23 @@
 	if (dev->pfun == NULL) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
-		return;
-	}
-
-	async_answer_1(icall_handle, EOK, dev->pfun->handle);
-
-	fibril_rwlock_read_unlock(&device_tree.rwlock);
-}
-
-static void devman_dev_get_functions(cap_call_handle_t icall_handle, ipc_call_t *icall)
-{
-	cap_call_handle_t chandle;
+		async_answer_0(icall, ENOENT);
+		return;
+	}
+
+	async_answer_1(icall, EOK, dev->pfun->handle);
+
+	fibril_rwlock_read_unlock(&device_tree.rwlock);
+}
+
+static void devman_dev_get_functions(ipc_call_t *icall)
+{
+	ipc_call_t call;
 	size_t size;
 	size_t act_size;
 	errno_t rc;
 
-	if (!async_data_read_receive(&chandle, &size)) {
-		async_answer_0(chandle, EREFUSED);
-		async_answer_0(icall_handle, EREFUSED);
+	if (!async_data_read_receive(&call, &size)) {
+		async_answer_0(&call, EREFUSED);
+		async_answer_0(icall, EREFUSED);
 		return;
 	}
@@ -378,6 +378,6 @@
 	if (dev == NULL || dev->state == DEVICE_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(chandle, ENOENT);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(&call, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -386,6 +386,6 @@
 	if (hdl_buf == NULL) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&call, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -394,19 +394,19 @@
 	if (rc != EOK) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(chandle, rc);
-		async_answer_0(icall_handle, rc);
-		return;
-	}
-
-	fibril_rwlock_read_unlock(&device_tree.rwlock);
-
-	errno_t retval = async_data_read_finalize(chandle, hdl_buf, size);
+		async_answer_0(&call, rc);
+		async_answer_0(icall, rc);
+		return;
+	}
+
+	fibril_rwlock_read_unlock(&device_tree.rwlock);
+
+	errno_t retval = async_data_read_finalize(&call, hdl_buf, size);
 	free(hdl_buf);
 
-	async_answer_1(icall_handle, retval, act_size);
+	async_answer_1(icall, retval, act_size);
 }
 
 /** Get handle for child device of a function. */
-static void devman_fun_get_child(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_get_child(ipc_call_t *icall)
 {
 	fun_node_t *fun;
@@ -417,5 +417,5 @@
 	if (fun == NULL || fun->state == FUN_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -423,9 +423,9 @@
 	if (fun->child == NULL) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
-		return;
-	}
-
-	async_answer_1(icall_handle, EOK, fun->child->handle);
+		async_answer_0(icall, ENOENT);
+		return;
+	}
+
+	async_answer_1(icall, EOK, fun->child->handle);
 
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
@@ -438,5 +438,5 @@
  * of this function is linked to state of another function somehow).
  */
-static void devman_fun_online(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_online(ipc_call_t *icall)
 {
 	fun_node_t *fun;
@@ -445,5 +445,5 @@
 	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -452,5 +452,5 @@
 	fun_del_ref(fun);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 }
 
@@ -463,5 +463,5 @@
  * function somehow).
  */
-static void devman_fun_offline(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_offline(ipc_call_t *icall)
 {
 	fun_node_t *fun;
@@ -470,5 +470,5 @@
 	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -477,9 +477,9 @@
 	fun_del_ref(fun);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 }
 
 /** Find handle for the function instance identified by its service ID. */
-static void devman_fun_sid_to_handle(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_fun_sid_to_handle(ipc_call_t *icall)
 {
 	fun_node_t *fun;
@@ -488,5 +488,5 @@
 
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -497,9 +497,9 @@
 	if (fun->state == FUN_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
-		return;
-	}
-
-	async_answer_1(icall_handle, EOK, fun->handle);
+		async_answer_0(icall, ENOENT);
+		return;
+	}
+
+	async_answer_1(icall, EOK, fun->handle);
 	fibril_rwlock_read_unlock(&device_tree.rwlock);
 	fun_del_ref(fun);
@@ -507,13 +507,13 @@
 
 /** Get list of all registered drivers. */
-static void devman_get_drivers(cap_call_handle_t icall_handle, ipc_call_t *icall)
-{
-	cap_call_handle_t chandle;
+static void devman_get_drivers(ipc_call_t *icall)
+{
+	ipc_call_t call;
 	size_t size;
 	size_t act_size;
 	errno_t rc;
 
-	if (!async_data_read_receive(&chandle, &size)) {
-		async_answer_0(icall_handle, EREFUSED);
+	if (!async_data_read_receive(&call, &size)) {
+		async_answer_0(icall, EREFUSED);
 		return;
 	}
@@ -521,6 +521,6 @@
 	devman_handle_t *hdl_buf = (devman_handle_t *) malloc(size);
 	if (hdl_buf == NULL) {
-		async_answer_0(chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&call, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -528,24 +528,24 @@
 	rc = driver_get_list(&drivers_list, hdl_buf, size, &act_size);
 	if (rc != EOK) {
-		async_answer_0(chandle, rc);
-		async_answer_0(icall_handle, rc);
-		return;
-	}
-
-	errno_t retval = async_data_read_finalize(chandle, hdl_buf, size);
+		async_answer_0(&call, rc);
+		async_answer_0(icall, rc);
+		return;
+	}
+
+	errno_t retval = async_data_read_finalize(&call, hdl_buf, size);
 	free(hdl_buf);
 
-	async_answer_1(icall_handle, retval, act_size);
-}
-
-static void devman_driver_get_devices(cap_call_handle_t icall_handle, ipc_call_t *icall)
-{
-	cap_call_handle_t chandle;
+	async_answer_1(icall, retval, act_size);
+}
+
+static void devman_driver_get_devices(ipc_call_t *icall)
+{
+	ipc_call_t call;
 	size_t size;
 	size_t act_size;
 	errno_t rc;
 
-	if (!async_data_read_receive(&chandle, &size)) {
-		async_answer_0(icall_handle, EREFUSED);
+	if (!async_data_read_receive(&call, &size)) {
+		async_answer_0(icall, EREFUSED);
 		return;
 	}
@@ -553,6 +553,6 @@
 	driver_t *drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
 	if (drv == NULL) {
-		async_answer_0(chandle, ENOENT);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(&call, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -560,6 +560,6 @@
 	devman_handle_t *hdl_buf = (devman_handle_t *) malloc(size);
 	if (hdl_buf == NULL) {
-		async_answer_0(chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&call, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -568,18 +568,18 @@
 	if (rc != EOK) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(chandle, rc);
-		async_answer_0(icall_handle, rc);
-		return;
-	}
-
-	errno_t retval = async_data_read_finalize(chandle, hdl_buf, size);
+		async_answer_0(&call, rc);
+		async_answer_0(icall, rc);
+		return;
+	}
+
+	errno_t retval = async_data_read_finalize(&call, hdl_buf, size);
 	free(hdl_buf);
 
-	async_answer_1(icall_handle, retval, act_size);
+	async_answer_1(icall, retval, act_size);
 }
 
 
 /** Find driver by name. */
-static void devman_driver_get_handle(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_get_handle(ipc_call_t *icall)
 {
 	char *drvname;
@@ -587,5 +587,5 @@
 	errno_t rc = async_data_write_accept((void **) &drvname, true, 0, 0, 0, 0);
 	if (rc != EOK) {
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -596,13 +596,13 @@
 
 	if (driver == NULL) {
-		async_answer_0(icall_handle, ENOENT);
-		return;
-	}
-
-	async_answer_1(icall_handle, EOK, driver->handle);
+		async_answer_0(icall, ENOENT);
+		return;
+	}
+
+	async_answer_1(icall, EOK, driver->handle);
 }
 
 /** Get driver match ID. */
-static void devman_driver_get_match_id(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_get_match_id(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -611,12 +611,12 @@
 	driver_t *drv = driver_find(&drivers_list, handle);
 	if (drv == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		return;
 	}
@@ -624,6 +624,6 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -634,6 +634,6 @@
 		fibril_mutex_unlock(&drv->driver_mutex);
 		free(buffer);
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -646,6 +646,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, mid->id, sent_length);
-	async_answer_1(icall_handle, EOK, mid->score);
+	async_data_read_finalize(&data, mid->id, sent_length);
+	async_answer_1(icall, EOK, mid->score);
 
 	fibril_mutex_unlock(&drv->driver_mutex);
@@ -655,5 +655,5 @@
 
 /** Get driver name. */
-static void devman_driver_get_name(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_get_name(ipc_call_t *icall)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*icall);
@@ -661,12 +661,12 @@
 	driver_t *drv = driver_find(&drivers_list, handle);
 	if (drv == NULL) {
-		async_answer_0(icall_handle, ENOMEM);
-		return;
-	}
-
-	cap_call_handle_t data_chandle;
+		async_answer_0(icall, ENOMEM);
+		return;
+	}
+
+	ipc_call_t data;
 	size_t data_len;
-	if (!async_data_read_receive(&data_chandle, &data_len)) {
-		async_answer_0(icall_handle, EINVAL);
+	if (!async_data_read_receive(&data, &data_len)) {
+		async_answer_0(icall, EINVAL);
 		return;
 	}
@@ -674,6 +674,6 @@
 	void *buffer = malloc(data_len);
 	if (buffer == NULL) {
-		async_answer_0(data_chandle, ENOMEM);
-		async_answer_0(icall_handle, ENOMEM);
+		async_answer_0(&data, ENOMEM);
+		async_answer_0(icall, ENOMEM);
 		return;
 	}
@@ -686,6 +686,6 @@
 	}
 
-	async_data_read_finalize(data_chandle, drv->name, sent_length);
-	async_answer_0(icall_handle, EOK);
+	async_data_read_finalize(&data, drv->name, sent_length);
+	async_answer_0(icall, EOK);
 
 	fibril_mutex_unlock(&drv->driver_mutex);
@@ -695,5 +695,5 @@
 
 /** Get driver state. */
-static void devman_driver_get_state(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_get_state(ipc_call_t *icall)
 {
 	driver_t *drv;
@@ -701,13 +701,13 @@
 	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
 	if (drv == NULL) {
-		async_answer_0(icall_handle, ENOENT);
-		return;
-	}
-
-	async_answer_1(icall_handle, EOK, (sysarg_t) drv->state);
+		async_answer_0(icall, ENOENT);
+		return;
+	}
+
+	async_answer_1(icall, EOK, (sysarg_t) drv->state);
 }
 
 /** Forcibly load a driver. */
-static void devman_driver_load(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_load(ipc_call_t *icall)
 {
 	driver_t *drv;
@@ -716,5 +716,5 @@
 	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
 	if (drv == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -724,9 +724,9 @@
 	fibril_mutex_unlock(&drv->driver_mutex);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 }
 
 /** Unload a driver by user request. */
-static void devman_driver_unload(cap_call_handle_t icall_handle, ipc_call_t *icall)
+static void devman_driver_unload(ipc_call_t *icall)
 {
 	driver_t *drv;
@@ -735,5 +735,5 @@
 	drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall));
 	if (drv == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -743,16 +743,16 @@
 	fibril_mutex_unlock(&drv->driver_mutex);
 
-	async_answer_0(icall_handle, rc);
+	async_answer_0(icall, rc);
 }
 
 /** Function for handling connections from a client to the device manager. */
-void devman_connection_client(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
+void devman_connection_client(ipc_call_t *icall, void *arg)
 {
 	/* Accept connection. */
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 
 	while (true) {
 		ipc_call_t call;
-		cap_call_handle_t chandle = async_get_call(&call);
+		async_get_call(&call);
 
 		if (!IPC_GET_IMETHOD(call))
@@ -761,66 +761,65 @@
 		switch (IPC_GET_IMETHOD(call)) {
 		case DEVMAN_DEVICE_GET_HANDLE:
-			devman_function_get_handle(chandle, &call);
+			devman_function_get_handle(&call);
 			break;
 		case DEVMAN_DEV_GET_PARENT:
-			devman_dev_get_parent(chandle, &call);
+			devman_dev_get_parent(&call);
 			break;
 		case DEVMAN_DEV_GET_FUNCTIONS:
-			devman_dev_get_functions(chandle, &call);
+			devman_dev_get_functions(&call);
 			break;
 		case DEVMAN_FUN_GET_CHILD:
-			devman_fun_get_child(chandle, &call);
+			devman_fun_get_child(&call);
 			break;
 		case DEVMAN_FUN_GET_MATCH_ID:
-			devman_fun_get_match_id(chandle, &call);
+			devman_fun_get_match_id(&call);
 			break;
 		case DEVMAN_FUN_GET_NAME:
-			devman_fun_get_name(chandle, &call);
+			devman_fun_get_name(&call);
 			break;
 		case DEVMAN_FUN_GET_DRIVER_NAME:
-			devman_fun_get_driver_name(chandle, &call);
+			devman_fun_get_driver_name(&call);
 			break;
 		case DEVMAN_FUN_GET_PATH:
-			devman_fun_get_path(chandle, &call);
+			devman_fun_get_path(&call);
 			break;
 		case DEVMAN_FUN_ONLINE:
-			devman_fun_online(chandle, &call);
+			devman_fun_online(&call);
 			break;
 		case DEVMAN_FUN_OFFLINE:
-			devman_fun_offline(chandle, &call);
+			devman_fun_offline(&call);
 			break;
 		case DEVMAN_FUN_SID_TO_HANDLE:
-			devman_fun_sid_to_handle(chandle, &call);
+			devman_fun_sid_to_handle(&call);
 			break;
 		case DEVMAN_GET_DRIVERS:
-			devman_get_drivers(chandle, &call);
+			devman_get_drivers(&call);
 			break;
 		case DEVMAN_DRIVER_GET_DEVICES:
-			devman_driver_get_devices(chandle, &call);
+			devman_driver_get_devices(&call);
 			break;
 		case DEVMAN_DRIVER_GET_HANDLE:
-			devman_driver_get_handle(chandle, &call);
+			devman_driver_get_handle(&call);
 			break;
 		case DEVMAN_DRIVER_GET_MATCH_ID:
-			devman_driver_get_match_id(chandle, &call);
+			devman_driver_get_match_id(&call);
 			break;
 		case DEVMAN_DRIVER_GET_NAME:
-			devman_driver_get_name(chandle, &call);
+			devman_driver_get_name(&call);
 			break;
 		case DEVMAN_DRIVER_GET_STATE:
-			devman_driver_get_state(chandle, &call);
+			devman_driver_get_state(&call);
 			break;
 		case DEVMAN_DRIVER_LOAD:
-			devman_driver_load(chandle, &call);
+			devman_driver_load(&call);
 			break;
 		case DEVMAN_DRIVER_UNLOAD:
-			devman_driver_unload(chandle, &call);
+			devman_driver_unload(&call);
 			break;
 		default:
-			async_answer_0(chandle, ENOENT);
+			async_answer_0(&call, ENOENT);
 		}
 	}
 }
-
 
 /** @}
Index: uspace/srv/devman/client_conn.h
===================================================================
--- uspace/srv/devman/client_conn.h	(revision 7c3fb9bd77e4d2f6c10517a052e567f176fa91ee)
+++ uspace/srv/devman/client_conn.h	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -36,5 +36,5 @@
 #include "devman.h"
 
-extern void devman_connection_client(cap_call_handle_t, ipc_call_t *, void *);
+extern void devman_connection_client(ipc_call_t *, void *);
 
 #endif
Index: uspace/srv/devman/drv_conn.c
===================================================================
--- uspace/srv/devman/drv_conn.c	(revision 7c3fb9bd77e4d2f6c10517a052e567f176fa91ee)
+++ uspace/srv/devman/drv_conn.c	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -64,5 +64,5 @@
 
 /** Register running driver. */
-static driver_t *devman_driver_register(cap_call_handle_t chandle, ipc_call_t *call)
+static driver_t *devman_driver_register(ipc_call_t *call)
 {
 	driver_t *driver = NULL;
@@ -74,5 +74,5 @@
 	errno_t rc = async_data_write_accept((void **) &drv_name, true, 0, 0, 0, 0);
 	if (rc != EOK) {
-		async_answer_0(chandle, rc);
+		async_answer_0(call, rc);
 		return NULL;
 	}
@@ -87,5 +87,5 @@
 		free(drv_name);
 		drv_name = NULL;
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return NULL;
 	}
@@ -101,5 +101,5 @@
 		    driver->name);
 		fibril_mutex_unlock(&driver->driver_mutex);
-		async_answer_0(chandle, EEXIST);
+		async_answer_0(call, EEXIST);
 		return NULL;
 	}
@@ -126,5 +126,5 @@
 	if (!driver->sess) {
 		fibril_mutex_unlock(&driver->driver_mutex);
-		async_answer_0(chandle, ENOTSUP);
+		async_answer_0(call, ENOTSUP);
 		return NULL;
 	}
@@ -146,5 +146,5 @@
 		    "for driver `%s'.", driver->name);
 		fibril_mutex_unlock(&driver->driver_mutex);
-		async_answer_0(chandle, ENOMEM);
+		async_answer_0(call, ENOMEM);
 		return NULL;
 	}
@@ -153,5 +153,5 @@
 	fibril_mutex_unlock(&driver->driver_mutex);
 
-	async_answer_0(chandle, EOK);
+	async_answer_0(call, EOK);
 	return driver;
 }
@@ -166,13 +166,12 @@
 {
 	match_id_t *match_id = create_match_id();
-	cap_call_handle_t chandle;
 	ipc_call_t call;
 	errno_t rc = 0;
 
-	chandle = async_get_call(&call);
+	async_get_call(&call);
 	if (DEVMAN_ADD_MATCH_ID != IPC_GET_IMETHOD(call)) {
 		log_msg(LOG_DEFAULT, LVL_ERROR,
 		    "Invalid protocol when trying to receive match id.");
-		async_answer_0(chandle, EINVAL);
+		async_answer_0(&call, EINVAL);
 		delete_match_id(match_id);
 		return EINVAL;
@@ -181,9 +180,9 @@
 	if (match_id == NULL) {
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed to allocate match id.");
-		async_answer_0(chandle, ENOMEM);
+		async_answer_0(&call, ENOMEM);
 		return ENOMEM;
 	}
 
-	async_answer_0(chandle, EOK);
+	async_answer_0(&call, EOK);
 
 	match_id->score = IPC_GET_ARG1(call);
@@ -230,5 +229,5 @@
  * Child devices are registered by their parent's device driver.
  */
-static void devman_add_function(cap_call_handle_t chandle, ipc_call_t *call)
+static void devman_add_function(ipc_call_t *call)
 {
 	fun_type_t ftype = (fun_type_t) IPC_GET_ARG1(*call);
@@ -239,5 +238,5 @@
 	dev_node_t *pdev = find_dev_node(&device_tree, dev_handle);
 	if (pdev == NULL) {
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -250,13 +249,13 @@
 
 		dev_del_ref(pdev);
-		async_answer_0(chandle, EINVAL);
+		async_answer_0(call, EINVAL);
 		return;
 	}
 
 	char *fun_name = NULL;
-	errno_t rc = async_data_write_accept((void **)&fun_name, true, 0, 0, 0, 0);
+	errno_t rc = async_data_write_accept((void **) &fun_name, true, 0, 0, 0, 0);
 	if (rc != EOK) {
 		dev_del_ref(pdev);
-		async_answer_0(chandle, rc);
+		async_answer_0(call, rc);
 		return;
 	}
@@ -268,5 +267,5 @@
 		fibril_rwlock_write_unlock(&tree->rwlock);
 		dev_del_ref(pdev);
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -278,5 +277,5 @@
 		fibril_rwlock_write_unlock(&tree->rwlock);
 		dev_del_ref(pdev);
-		async_answer_0(chandle, EEXIST);
+		async_answer_0(call, EEXIST);
 		printf(NAME ": Warning, driver tried to register `%s' twice.\n",
 		    fun_name);
@@ -303,5 +302,5 @@
 		fun_del_ref(fun);
 		delete_fun_node(fun);
-		async_answer_0(chandle, ENOMEM);
+		async_answer_0(call, ENOMEM);
 		return;
 	}
@@ -317,5 +316,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(chandle, rc);
+		async_answer_0(call, rc);
 		return;
 	}
@@ -325,8 +324,8 @@
 
 	/* Return device handle to parent's driver. */
-	async_answer_1(chandle, EOK, fun->handle);
-}
-
-static void devman_add_function_to_cat(cap_call_handle_t chandle, ipc_call_t *call)
+	async_answer_1(call, EOK, fun->handle);
+}
+
+static void devman_add_function_to_cat(ipc_call_t *call)
 {
 	devman_handle_t handle = IPC_GET_ARG1(*call);
@@ -339,5 +338,5 @@
 	    0, 0, 0, 0);
 	if (rc != EOK) {
-		async_answer_0(chandle, rc);
+		async_answer_0(call, rc);
 		return;
 	}
@@ -345,5 +344,5 @@
 	fun_node_t *fun = find_fun_node(&device_tree, handle);
 	if (fun == NULL) {
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -354,5 +353,5 @@
 	if (fun->state == FUN_REMOVED) {
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -371,5 +370,5 @@
 	fun_del_ref(fun);
 
-	async_answer_0(chandle, rc);
+	async_answer_0(call, rc);
 }
 
@@ -377,6 +376,5 @@
  *
  */
-static void devman_drv_fun_online(cap_call_handle_t icall_handle, ipc_call_t *icall,
-    driver_t *drv)
+static void devman_drv_fun_online(ipc_call_t *icall, driver_t *drv)
 {
 	fun_node_t *fun;
@@ -387,5 +385,5 @@
 	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -398,5 +396,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -407,5 +405,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -414,5 +412,5 @@
 	fun_del_ref(fun);
 
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 }
 
@@ -421,6 +419,5 @@
  *
  */
-static void devman_drv_fun_offline(cap_call_handle_t icall_handle, ipc_call_t *icall,
-    driver_t *drv)
+static void devman_drv_fun_offline(ipc_call_t *icall, driver_t *drv)
 {
 	fun_node_t *fun;
@@ -429,5 +426,5 @@
 	fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
 	if (fun == NULL) {
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -439,5 +436,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -448,5 +445,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(icall_handle, rc);
+		async_answer_0(icall, rc);
 		return;
 	}
@@ -454,9 +451,9 @@
 	fun_busy_unlock(fun);
 	fun_del_ref(fun);
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 }
 
 /** Remove function. */
-static void devman_remove_function(cap_call_handle_t chandle, ipc_call_t *call)
+static void devman_remove_function(ipc_call_t *call)
 {
 	devman_handle_t fun_handle = IPC_GET_ARG1(*call);
@@ -466,5 +463,5 @@
 	fun_node_t *fun = find_fun_node(&device_tree, fun_handle);
 	if (fun == NULL) {
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -481,5 +478,5 @@
 		fun_busy_unlock(fun);
 		fun_del_ref(fun);
-		async_answer_0(chandle, ENOENT);
+		async_answer_0(call, ENOENT);
 		return;
 	}
@@ -523,5 +520,5 @@
 				fun_busy_unlock(fun);
 				fun_del_ref(fun);
-				async_answer_0(chandle, gone_rc);
+				async_answer_0(call, gone_rc);
 				return;
 			}
@@ -551,5 +548,5 @@
 				fun_busy_unlock(fun);
 				fun_del_ref(fun);
-				async_answer_0(chandle, EIO);
+				async_answer_0(call, EIO);
 				return;
 			}
@@ -567,5 +564,5 @@
 
 	log_msg(LOG_DEFAULT, LVL_DEBUG, "devman_remove_function() succeeded.");
-	async_answer_0(chandle, EOK);
+	async_answer_0(call, EOK);
 }
 
@@ -586,5 +583,5 @@
 
 /** Function for handling connections from a driver to the device manager. */
-void devman_connection_driver(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
+void devman_connection_driver(ipc_call_t *icall, void *arg)
 {
 	client_t *client;
@@ -592,5 +589,5 @@
 
 	/* Accept the connection. */
-	async_answer_0(icall_handle, EOK);
+	async_answer_0(icall, EOK);
 
 	client = async_get_client_data();
@@ -602,5 +599,5 @@
 	while (true) {
 		ipc_call_t call;
-		cap_call_handle_t chandle = async_get_call(&call);
+		async_get_call(&call);
 
 		if (!IPC_GET_IMETHOD(call))
@@ -613,5 +610,5 @@
 			if (driver == NULL) {
 				/* First call must be to DEVMAN_DRIVER_REGISTER */
-				async_answer_0(chandle, ENOTSUP);
+				async_answer_0(&call, ENOTSUP);
 				continue;
 			}
@@ -623,27 +620,27 @@
 			if (client->driver != NULL) {
 				fibril_mutex_unlock(&client->mutex);
-				async_answer_0(chandle, EINVAL);
+				async_answer_0(&call, EINVAL);
 				continue;
 			}
-			client->driver = devman_driver_register(chandle, &call);
+			client->driver = devman_driver_register(&call);
 			fibril_mutex_unlock(&client->mutex);
 			break;
 		case DEVMAN_ADD_FUNCTION:
-			devman_add_function(chandle, &call);
+			devman_add_function(&call);
 			break;
 		case DEVMAN_ADD_DEVICE_TO_CATEGORY:
-			devman_add_function_to_cat(chandle, &call);
+			devman_add_function_to_cat(&call);
 			break;
 		case DEVMAN_DRV_FUN_ONLINE:
-			devman_drv_fun_online(chandle, &call, driver);
+			devman_drv_fun_online(&call, driver);
 			break;
 		case DEVMAN_DRV_FUN_OFFLINE:
-			devman_drv_fun_offline(chandle, &call, driver);
+			devman_drv_fun_offline(&call, driver);
 			break;
 		case DEVMAN_REMOVE_FUNCTION:
-			devman_remove_function(chandle, &call);
+			devman_remove_function(&call);
 			break;
 		default:
-			async_answer_0(chandle, EINVAL);
+			async_answer_0(&call, EINVAL);
 			break;
 		}
Index: uspace/srv/devman/drv_conn.h
===================================================================
--- uspace/srv/devman/drv_conn.h	(revision 7c3fb9bd77e4d2f6c10517a052e567f176fa91ee)
+++ uspace/srv/devman/drv_conn.h	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -37,5 +37,5 @@
 #include "devman.h"
 
-extern void devman_connection_driver(cap_call_handle_t, ipc_call_t *, void *);
+extern void devman_connection_driver(ipc_call_t *, void *);
 
 #endif
Index: uspace/srv/devman/main.c
===================================================================
--- uspace/srv/devman/main.c	(revision 7c3fb9bd77e4d2f6c10517a052e567f176fa91ee)
+++ uspace/srv/devman/main.c	(revision ef9d098804a0dd5c42f206398eba55ea95569741)
@@ -66,6 +66,5 @@
 dev_tree_t device_tree;
 
-static void devman_connection_device(cap_call_handle_t icall_handle, ipc_call_t *icall,
-    void *arg)
+static void devman_connection_device(ipc_call_t *icall, void *arg)
 {
 	devman_handle_t handle = IPC_GET_ARG2(*icall);
@@ -94,5 +93,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR, "IPC forwarding failed - no device or "
 		    "function with handle %" PRIun " was found.", handle);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		goto cleanup;
 	}
@@ -102,5 +101,5 @@
 		    "connect to handle %" PRIun ", refers to a device.",
 		    handle);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		goto cleanup;
 	}
@@ -116,5 +115,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR, "IPC forwarding refused - "
 		    "the device %" PRIun " is not in usable state.", handle);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		goto cleanup;
 	}
@@ -123,5 +122,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR,
 		    "Could not forward to driver `%s'.", driver->name);
-		async_answer_0(icall_handle, EINVAL);
+		async_answer_0(icall, EINVAL);
 		goto cleanup;
 	}
@@ -138,5 +137,5 @@
 
 	async_exch_t *exch = async_exchange_begin(driver->sess);
-	async_forward_fast(icall_handle, exch, INTERFACE_DDF_CLIENT, handle, 0, IPC_FF_NONE);
+	async_forward_fast(icall, exch, INTERFACE_DDF_CLIENT, handle, 0, IPC_FF_NONE);
 	async_exchange_end(exch);
 
@@ -149,6 +148,5 @@
 }
 
-static void devman_connection_parent(cap_call_handle_t icall_handle, ipc_call_t *icall,
-    void *arg)
+static void devman_connection_parent(ipc_call_t *icall, void *arg)
 {
 	devman_handle_t handle = IPC_GET_ARG2(*icall);
@@ -177,5 +175,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR, "IPC forwarding failed - no device or "
 		    "function with handle %" PRIun " was found.", handle);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		goto cleanup;
 	}
@@ -196,5 +194,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR, "IPC forwarding refused - "
 		    "the device %" PRIun " is not in usable state.", handle);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		goto cleanup;
 	}
@@ -203,5 +201,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR,
 		    "Could not forward to driver `%s'.", driver->name);
-		async_answer_0(icall_handle, EINVAL);
+		async_answer_0(icall, EINVAL);
 		goto cleanup;
 	}
@@ -218,5 +216,5 @@
 
 	async_exch_t *exch = async_exchange_begin(driver->sess);
-	async_forward_fast(icall_handle, exch, INTERFACE_DDF_DRIVER, fun_handle, 0, IPC_FF_NONE);
+	async_forward_fast(icall, exch, INTERFACE_DDF_DRIVER, fun_handle, 0, IPC_FF_NONE);
 	async_exchange_end(exch);
 
@@ -229,5 +227,5 @@
 }
 
-static void devman_forward(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
+static void devman_forward(ipc_call_t *icall, void *arg)
 {
 	iface_t iface = IPC_GET_ARG1(*icall);
@@ -242,5 +240,5 @@
 		    "not found.\n");
 		fibril_rwlock_read_unlock(&device_tree.rwlock);
-		async_answer_0(icall_handle, ENOENT);
+		async_answer_0(icall, ENOENT);
 		return;
 	}
@@ -253,5 +251,5 @@
 
 	async_exch_t *exch = async_exchange_begin(driver->sess);
-	async_forward_fast(icall_handle, exch, iface, handle, 0, IPC_FF_NONE);
+	async_forward_fast(icall, exch, iface, handle, 0, IPC_FF_NONE);
 	async_exchange_end(exch);
 
