Index: uspace/lib/usbvirt/src/callback.c
===================================================================
--- uspace/lib/usbvirt/src/callback.c	(revision 2b9646335943ad9872daddeaffee9b749d2830c1)
+++ uspace/lib/usbvirt/src/callback.c	(revision da17cf0f62be93cfcd6ddcf6028b03a49898563d)
@@ -54,15 +54,15 @@
 	
 	if (address != device->address) {
-		ipc_answer_0(iid, EADDRNOTAVAIL);
+		async_answer_0(iid, EADDRNOTAVAIL);
 		return;
 	}
 	
 	if ((endpoint < 0) || (endpoint >= USB11_ENDPOINT_MAX)) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		return;
 	}
 	
 	if (expected_len == 0) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		return;
 	}
@@ -74,5 +74,5 @@
 		
 	if (rc != EOK) {
-		ipc_answer_0(iid, rc);
+		async_answer_0(iid, rc);
 		return;
 	}
@@ -80,5 +80,5 @@
 	rc = device->transaction_setup(device, endpoint, buffer, len);
 	
-	ipc_answer_0(iid, rc);
+	async_answer_0(iid, rc);
 }
 
@@ -92,10 +92,10 @@
 	
 	if (address != device->address) {
-		ipc_answer_0(iid, EADDRNOTAVAIL);
+		async_answer_0(iid, EADDRNOTAVAIL);
 		return;
 	}
 	
 	if ((endpoint < 0) || (endpoint >= USB11_ENDPOINT_MAX)) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		return;
 	}
@@ -111,5 +111,5 @@
 			
 		if (rc != EOK) {
-			ipc_answer_0(iid, rc);
+			async_answer_0(iid, rc);
 			return;
 		}
@@ -122,5 +122,5 @@
 	}
 	
-	ipc_answer_0(iid, rc);
+	async_answer_0(iid, rc);
 }
 
@@ -135,10 +135,10 @@
 	
 	if (address != device->address) {
-		ipc_answer_0(iid, EADDRNOTAVAIL);
+		async_answer_0(iid, EADDRNOTAVAIL);
 		return;
 	}
 	
 	if ((endpoint < 0) || (endpoint >= USB11_ENDPOINT_MAX)) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		return;
 	}
@@ -157,5 +157,5 @@
 		ipc_callid_t callid;
 		if (!async_data_read_receive(&callid, &receive_len)) {
-			ipc_answer_0(iid, EINVAL);
+			async_answer_0(iid, EINVAL);
 			return;
 		}
@@ -166,5 +166,5 @@
 	}
 	
-	ipc_answer_1(iid, rc, len);
+	async_answer_1(iid, rc, len);
 }
 
@@ -174,5 +174,5 @@
 {
 	if (device->name == NULL) {
-		ipc_answer_0(iid, ENOENT);
+		async_answer_0(iid, ENOENT);
 	}
 	
@@ -182,5 +182,5 @@
 	size_t accepted_size;
 	if (!async_data_read_receive(&callid, &accepted_size)) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		return;
 	}
@@ -191,5 +191,5 @@
 	async_data_read_finalize(callid, device->name, accepted_size);
 	
-	ipc_answer_1(iid, EOK, accepted_size);
+	async_answer_1(iid, EOK, accepted_size);
 }
 
@@ -197,5 +197,5 @@
 void device_callback_connection(usbvirt_device_t *device, ipc_callid_t iid, ipc_call_t *icall)
 {
-	ipc_answer_0(iid, EOK);
+	async_answer_0(iid, EOK);
 	
 	while (true) {
@@ -206,5 +206,5 @@
 		switch (IPC_GET_IMETHOD(call)) {
 			case IPC_M_PHONE_HUNGUP:
-				ipc_answer_0(callid, EOK);
+				async_answer_0(callid, EOK);
 				return;
 			
@@ -226,5 +226,5 @@
 			
 			default:
-				ipc_answer_0(callid, EINVAL);
+				async_answer_0(callid, EINVAL);
 				break;
 		}
Index: uspace/lib/usbvirt/src/main.c
===================================================================
--- uspace/lib/usbvirt/src/main.c	(revision 2b9646335943ad9872daddeaffee9b749d2830c1)
+++ uspace/lib/usbvirt/src/main.c	(revision da17cf0f62be93cfcd6ddcf6028b03a49898563d)
@@ -159,5 +159,5 @@
 {
 	if (dev->vhcd_phone > 0) {
-		ipc_hangup(dev->vhcd_phone);
+		async_hangup(dev->vhcd_phone);
 	}
 	
@@ -173,5 +173,5 @@
 	virtual_device_t *dev = find_device_by_id(0);
 	if (dev == NULL) {
-		ipc_answer_0(iid, EINVAL);
+		async_answer_0(iid, EINVAL);
 		printf("Ooops\n");
 		return;
@@ -220,7 +220,5 @@
 	}
 	
-	sysarg_t phonehash;
-	sysarg_t taskhash;
-	rc = ipc_connect_to_me(hcd_phone, 0, 0, 0, &taskhash, &phonehash);
+	rc = async_connect_to_me(hcd_phone, 0, 0, 0, callback_connection);
 	if (rc != EOK) {
 		printf("ipc_connect_to_me() failed\n");
@@ -233,6 +231,4 @@
 	virtual_device->vhcd_phone = hcd_phone;
 	virtual_device->id = 0;
-	
-	async_new_connection(taskhash, phonehash, 0, NULL, callback_connection);
 	
 	return EOK;
