Index: uspace/lib/libc/generic/device/char.c
===================================================================
--- uspace/lib/libc/generic/device/char.c	(revision bb864a054cda277111ac25d1509e68c165bf92a7)
+++ uspace/lib/libc/generic/device/char.c	(revision ba95e8f41817124410b7cfa7c805434f83686dff)
@@ -47,11 +47,8 @@
 	async_serialize_start();
 	
-	printf("calling interface %d\n", DEV_IFACE_ID(CHAR_DEV_IFACE));
 	aid_t req = async_send_1(dev_phone, DEV_IFACE_ID(CHAR_DEV_IFACE), CHAR_READ_DEV, &answer);
 	
-	printf("async_data_read_start \n");
 	int rc = async_data_read_start(dev_phone, buf, len);
 	
-	printf("async_data_read_start, rc = %d\n", rc);
 	if (rc != EOK) {
 		ipcarg_t rc_orig;
@@ -66,7 +63,5 @@
 	}
 	
-	printf("async_wait_for(req, &rc);\n", rc);
 	async_wait_for(req, &rc);
-	printf("async_serialize_end();\n", rc);
 	async_serialize_end();
 	
@@ -75,5 +70,4 @@
 	}
 	
-	printf("IPC_GET_ARG1(answer);\n", rc);
 	return IPC_GET_ARG1(answer);
 }
Index: uspace/lib/libdrv/generic/remote_char.c
===================================================================
--- uspace/lib/libdrv/generic/remote_char.c	(revision bb864a054cda277111ac25d1509e68c165bf92a7)
+++ uspace/lib/libdrv/generic/remote_char.c	(revision ba95e8f41817124410b7cfa7c805434f83686dff)
@@ -58,7 +58,8 @@
 {	
 	char_iface_t *char_iface = (char_iface_t *)iface;
+	ipc_callid_t cid;
 	
 	size_t len;
-	if (!async_data_read_receive(&callid, &len)) {
+	if (!async_data_read_receive(&cid, &len)) {
 		// TODO handle protocol error
 		ipc_answer_0(callid, EINVAL);
@@ -67,5 +68,5 @@
 	
 	if (!char_iface->read) {
-		async_data_read_finalize(callid, NULL, 0);
+		async_data_read_finalize(cid, NULL, 0);
 		ipc_answer_0(callid, ENOTSUP);
 		return;
@@ -80,13 +81,11 @@
 	
 	if (ret < 0) { // some error occured
-		async_data_read_finalize(callid, buf, 0);
+		async_data_read_finalize(cid, buf, 0);
 		ipc_answer_0(callid, ret);
 		return;
 	}
 	
-	printf("remote_char_read - async_data_read_finalize\n");
-	async_data_read_finalize(callid, buf, ret);
-	printf("remote_char_read - ipc_answer_0(callid, EOK);\n");
-	ipc_answer_0(callid, EOK);	
+	async_data_read_finalize(cid, buf, ret);
+	ipc_answer_1(callid, EOK, ret);	
 }
 
@@ -117,5 +116,5 @@
 		ipc_answer_0(callid, ret);
 	} else {
-		ipc_answer_0(callid, EOK);
+		ipc_answer_1(callid, EOK, ret);
 	}
 }
