Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/generic/driver.c	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -186,5 +186,5 @@
 		pseudocode = &default_pseudocode;
 	
-	int res = ipc_register_irq(irq, dev->handle, ctx->id, pseudocode);
+	int res = register_irq(irq, dev->handle, ctx->id, pseudocode);
 	if (res != EOK) {
 		remove_interrupt_context(&interrupt_contexts, ctx);
@@ -199,5 +199,5 @@
 	interrupt_context_t *ctx = find_interrupt_context(&interrupt_contexts,
 	    dev, irq);
-	int res = ipc_unregister_irq(irq, dev->handle);
+	int res = unregister_irq(irq, dev->handle);
 	
 	if (ctx != NULL) {
@@ -272,5 +272,5 @@
 	}
 	
-	ipc_answer_0(iid, res);
+	async_answer_0(iid, res);
 }
 
@@ -278,5 +278,5 @@
 {
 	/* Accept connection */
-	ipc_answer_0(iid, EOK);
+	async_answer_0(iid, EOK);
 	
 	bool cont = true;
@@ -293,5 +293,5 @@
 			break;
 		default:
-			ipc_answer_0(callid, ENOENT);
+			async_answer_0(callid, ENOENT);
 		}
 	}
@@ -316,5 +316,5 @@
 		printf("%s: driver_connection_gen error - no device with handle"
 		    " %" PRIun " was found.\n", driver->name, handle);
-		ipc_answer_0(iid, ENOENT);
+		async_answer_0(iid, ENOENT);
 		return;
 	}
@@ -331,5 +331,5 @@
 		ret = (*dev->ops->open)(dev);
 	
-	ipc_answer_0(iid, ret);
+	async_answer_0(iid, ret);
 	if (ret != EOK)
 		return;
@@ -347,5 +347,5 @@
 			if (dev->ops != NULL && dev->ops->close != NULL)
 				(*dev->ops->close)(dev);
-			ipc_answer_0(callid, EOK);
+			async_answer_0(callid, EOK);
 			return;
 		default:
@@ -368,5 +368,5 @@
 				    "invalid interface id %d.",
 				    driver->name, iface_idx);
-				ipc_answer_0(callid, ENOTSUP);
+				async_answer_0(callid, ENOTSUP);
 				break;
 			}
@@ -381,5 +381,5 @@
 				printf("device with handle %" PRIun " has no interface "
 				    "with id %d.\n", handle, iface_idx);
-				ipc_answer_0(callid, ENOTSUP);
+				async_answer_0(callid, ENOTSUP);
 				break;
 			}
@@ -400,5 +400,5 @@
 				printf("%s: driver_connection_gen error - "
 				    "invalid interface method.", driver->name);
-				ipc_answer_0(callid, ENOTSUP);
+				async_answer_0(callid, ENOTSUP);
 				break;
 			}
@@ -446,5 +446,5 @@
 	default:
 		/* No such interface */
-		ipc_answer_0(iid, ENOENT);
+		async_answer_0(iid, ENOENT);
 	}
 }
Index: uspace/lib/drv/generic/remote_char_dev.c
===================================================================
--- uspace/lib/drv/generic/remote_char_dev.c	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/generic/remote_char_dev.c	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -33,5 +33,4 @@
  */
 
-#include <ipc/ipc.h>
 #include <async.h>
 #include <errno.h>
@@ -81,5 +80,5 @@
 	if (!async_data_read_receive(&cid, &len)) {
 		/* TODO handle protocol error. */
-		ipc_answer_0(callid, EINVAL);
+		async_answer_0(callid, EINVAL);
 		return;
 	}
@@ -87,5 +86,5 @@
 	if (!char_dev_ops->read) {
 		async_data_read_finalize(cid, NULL, 0);
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -100,5 +99,5 @@
 		/* Some error occured. */
 		async_data_read_finalize(cid, buf, 0);
-		ipc_answer_0(callid, ret);
+		async_answer_0(callid, ret);
 		return;
 	}
@@ -106,5 +105,5 @@
 	/* The operation was successful, return the number of data read. */
 	async_data_read_finalize(cid, buf, ret);
-	ipc_answer_1(callid, EOK, ret);
+	async_answer_1(callid, EOK, ret);
 }
 
@@ -128,5 +127,5 @@
 	if (!async_data_write_receive(&cid, &len)) {
 		/* TODO handle protocol error. */
-		ipc_answer_0(callid, EINVAL);
+		async_answer_0(callid, EINVAL);
 		return;
 	}
@@ -134,5 +133,5 @@
 	if (!char_dev_ops->write) {
 		async_data_write_finalize(cid, NULL, 0);
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -148,5 +147,5 @@
 	if (ret < 0) {
 		/* Some error occured. */
-		ipc_answer_0(callid, ret);
+		async_answer_0(callid, ret);
 	} else {
 		/*
@@ -154,5 +153,5 @@
 		 * written.
 		 */
-		ipc_answer_1(callid, EOK, ret);
+		async_answer_1(callid, EOK, ret);
 	}
 }
Index: uspace/lib/drv/generic/remote_hw_res.c
===================================================================
--- uspace/lib/drv/generic/remote_hw_res.c	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/generic/remote_hw_res.c	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -33,5 +33,4 @@
  */
 
-#include <ipc/ipc.h>
 #include <async.h>
 #include <errno.h>
@@ -62,9 +61,9 @@
 	
 	if (hw_res_ops->enable_interrupt == NULL)
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 	else if (hw_res_ops->enable_interrupt(dev))
-		ipc_answer_0(callid, EOK);
+		async_answer_0(callid, EOK);
 	else
-		ipc_answer_0(callid, EREFUSED);
+		async_answer_0(callid, EREFUSED);
 }
 
@@ -75,5 +74,5 @@
 
 	if (hw_res_ops->get_resource_list == NULL) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -81,9 +80,9 @@
 	hw_resource_list_t *hw_resources = hw_res_ops->get_resource_list(dev);
 	if (hw_resources == NULL){
-		ipc_answer_0(callid, ENOENT);
+		async_answer_0(callid, ENOENT);
 		return;
 	}
 	
-	ipc_answer_1(callid, EOK, hw_resources->count);
+	async_answer_1(callid, EOK, hw_resources->count);
 
 	size_t len;
Index: uspace/lib/drv/generic/remote_usb.c
===================================================================
--- uspace/lib/drv/generic/remote_usb.c	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/generic/remote_usb.c	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -33,5 +33,4 @@
  */
 
-#include <ipc/ipc.h>
 #include <async.h>
 #include <errno.h>
@@ -64,5 +63,5 @@
 
 	if (usb_iface->get_hc_handle == NULL) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -71,8 +70,8 @@
 	int rc = usb_iface->get_hc_handle(device, &handle);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 	}
 
-	ipc_answer_1(callid, EOK, (sysarg_t) handle);
+	async_answer_1(callid, EOK, (sysarg_t) handle);
 }
 
Index: uspace/lib/drv/generic/remote_usbhc.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhc.c	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/generic/remote_usbhc.c	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -33,5 +33,4 @@
  */
 
-#include <ipc/ipc.h>
 #include <async.h>
 #include <errno.h>
@@ -141,5 +140,5 @@
 
 	if (!usb_iface->tell_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -150,7 +149,7 @@
 	int rc = usb_iface->tell_address(device, handle, &address);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 	} else {
-		ipc_answer_1(callid, EOK, address);
+		async_answer_1(callid, EOK, address);
 	}
 }
@@ -162,9 +161,9 @@
 	async_transaction_t * trans = (async_transaction_t *)buffer_hash;
 	if (trans == NULL) {
-		ipc_answer_0(callid, ENOENT);
+		async_answer_0(callid, ENOENT);
 		return;
 	}
 	if (trans->buffer == NULL) {
-		ipc_answer_0(callid, EINVAL);
+		async_answer_0(callid, EINVAL);
 		async_transaction_destroy(trans);
 		return;
@@ -174,5 +173,5 @@
 	size_t accepted_size;
 	if (!async_data_read_receive(&cid, &accepted_size)) {
-		ipc_answer_0(callid, EINVAL);
+		async_answer_0(callid, EINVAL);
 		async_transaction_destroy(trans);
 		return;
@@ -184,5 +183,5 @@
 	async_data_read_finalize(cid, trans->buffer, accepted_size);
 
-	ipc_answer_1(callid, EOK, accepted_size);
+	async_answer_1(callid, EOK, accepted_size);
 
 	async_transaction_destroy(trans);
@@ -195,5 +194,5 @@
 
 	if (!usb_iface->reserve_default_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -201,5 +200,5 @@
 	int rc = usb_iface->reserve_default_address(device);
 
-	ipc_answer_0(callid, rc);
+	async_answer_0(callid, rc);
 }
 
@@ -210,5 +209,5 @@
 
 	if (!usb_iface->release_default_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -216,5 +215,5 @@
 	int rc = usb_iface->release_default_address(device);
 
-	ipc_answer_0(callid, rc);
+	async_answer_0(callid, rc);
 }
 
@@ -225,5 +224,5 @@
 
 	if (!usb_iface->request_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -232,7 +231,7 @@
 	int rc = usb_iface->request_address(device, &address);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 	} else {
-		ipc_answer_1(callid, EOK, (sysarg_t) address);
+		async_answer_1(callid, EOK, (sysarg_t) address);
 	}
 }
@@ -244,5 +243,5 @@
 
 	if (!usb_iface->bind_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -253,5 +252,5 @@
 	int rc = usb_iface->bind_address(device, address, handle);
 
-	ipc_answer_0(callid, rc);
+	async_answer_0(callid, rc);
 }
 
@@ -262,5 +261,5 @@
 
 	if (!usb_iface->release_address) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -270,5 +269,5 @@
 	int rc = usb_iface->release_address(device, address);
 
-	ipc_answer_0(callid, rc);
+	async_answer_0(callid, rc);
 }
 
@@ -279,5 +278,5 @@
 	async_transaction_t *trans = (async_transaction_t *)arg;
 
-	ipc_answer_0(trans->caller, outcome);
+	async_answer_0(trans->caller, outcome);
 
 	async_transaction_destroy(trans);
@@ -290,5 +289,5 @@
 
 	if (outcome != USB_OUTCOME_OK) {
-		ipc_answer_0(trans->caller, outcome);
+		async_answer_0(trans->caller, outcome);
 		async_transaction_destroy(trans);
 		return;
@@ -296,5 +295,5 @@
 
 	trans->size = actual_size;
-	ipc_answer_1(trans->caller, USB_OUTCOME_OK, (sysarg_t)trans);
+	async_answer_1(trans->caller, USB_OUTCOME_OK, (sysarg_t)trans);
 }
 
@@ -311,5 +310,5 @@
 {
 	if (!transfer_func) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -329,5 +328,5 @@
 
 		if (rc != EOK) {
-			ipc_answer_0(callid, rc);
+			async_answer_0(callid, rc);
 			return;
 		}
@@ -339,5 +338,5 @@
 			free(buffer);
 		}
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		return;
 	}
@@ -350,5 +349,5 @@
 
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		async_transaction_destroy(trans);
 	}
@@ -367,5 +366,5 @@
 {
 	if (!transfer_func) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -379,5 +378,5 @@
 	async_transaction_t *trans = async_transaction_create(callid);
 	if (trans == NULL) {
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		return;
 	}
@@ -389,5 +388,5 @@
 
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		async_transaction_destroy(trans);
 	}
@@ -414,5 +413,5 @@
 		case USB_DIRECTION_IN:
 			if (!transfer_in_func) {
-				ipc_answer_0(callid, ENOTSUP);
+				async_answer_0(callid, ENOTSUP);
 				return;
 			}
@@ -420,5 +419,5 @@
 		case USB_DIRECTION_OUT:
 			if (!transfer_out_func) {
-				ipc_answer_0(callid, ENOTSUP);
+				async_answer_0(callid, ENOTSUP);
 				return;
 			}
@@ -436,5 +435,5 @@
 	async_transaction_t *trans = async_transaction_create(callid);
 	if (trans == NULL) {
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		return;
 	}
@@ -456,5 +455,5 @@
 
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		async_transaction_destroy(trans);
 	}
@@ -549,5 +548,5 @@
 
 	if (!usb_iface->control_write) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -568,5 +567,5 @@
 	    1, USB_MAX_PAYLOAD_SIZE, 0, &setup_packet_len);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		return;
 	}
@@ -574,5 +573,5 @@
 	    1, USB_MAX_PAYLOAD_SIZE, 0, &data_buffer_len);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		free(setup_packet);
 		return;
@@ -581,5 +580,5 @@
 	async_transaction_t *trans = async_transaction_create(callid);
 	if (trans == NULL) {
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		free(setup_packet);
 		free(data_buffer);
@@ -596,5 +595,5 @@
 
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		async_transaction_destroy(trans);
 	}
@@ -609,5 +608,5 @@
 
 	if (!usb_iface->control_read) {
-		ipc_answer_0(callid, ENOTSUP);
+		async_answer_0(callid, ENOTSUP);
 		return;
 	}
@@ -627,5 +626,5 @@
 	    1, USB_MAX_PAYLOAD_SIZE, 0, &setup_packet_len);
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		return;
 	}
@@ -633,5 +632,5 @@
 	async_transaction_t *trans = async_transaction_create(callid);
 	if (trans == NULL) {
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		free(setup_packet);
 		return;
@@ -641,5 +640,5 @@
 	trans->buffer = malloc(data_len);
 	if (trans->buffer == NULL) {
-		ipc_answer_0(callid, ENOMEM);
+		async_answer_0(callid, ENOMEM);
 		async_transaction_destroy(trans);
 		return;
@@ -652,5 +651,5 @@
 
 	if (rc != EOK) {
-		ipc_answer_0(callid, rc);
+		async_answer_0(callid, rc);
 		async_transaction_destroy(trans);
 	}
Index: uspace/lib/drv/include/dev_iface.h
===================================================================
--- uspace/lib/drv/include/dev_iface.h	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/include/dev_iface.h	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -36,4 +36,5 @@
 #define LIBDRV_DEV_IFACE_H_
 
+#include <ipc/common.h>
 #include <ipc/dev_iface.h>
 
Index: uspace/lib/drv/include/driver.h
===================================================================
--- uspace/lib/drv/include/driver.h	(revision 93f8da1abf394c603ef6b2571403715c0a8fb522)
+++ uspace/lib/drv/include/driver.h	(revision 4d73d7115b2ca0bff2c8f82b0321859147d2e947)
@@ -36,6 +36,7 @@
 #define LIBDRV_DRIVER_H_
 
+#include <sys/types.h>
+#include <kernel/ddi/irq.h>
 #include <adt/list.h>
-#include <ipc/ipc.h>
 #include <devman.h>
 #include <ipc/devman.h>
