Index: kernel/generic/src/ipc/ops/conctmeto.c
===================================================================
--- kernel/generic/src/ipc/ops/conctmeto.c	(revision 8e3153b5c08b4ce5f35bc4675add10df0f29bc69)
+++ kernel/generic/src/ipc/ops/conctmeto.c	(revision 9ce35f067406cfc2d4e59addfe1e84524ba08fa4)
@@ -46,5 +46,5 @@
 	 * That will be done once the phone is connected.
 	 */
-	cap_handle_t phone_handle;
+	cap_phone_handle_t phone_handle;
 	kobject_t *phone_obj;
 	errno_t rc = phone_alloc(TASK, false, &phone_handle, &phone_obj);
@@ -58,5 +58,5 @@
 
 	/* Remember the handle */
-	call->priv = phone_handle;
+	call->priv = CAP_HANDLE_RAW(phone_handle);
 
 	return EOK;
@@ -65,7 +65,7 @@
 static errno_t request_forget(call_t *call)
 {
-	cap_handle_t phone_handle = (cap_handle_t) call->priv;
+	cap_phone_handle_t phone_handle = (cap_handle_t) call->priv;
 
-	if (phone_handle < 0)
+	if (CAP_HANDLE_RAW(phone_handle) < 0)
 		return EOK;
 
@@ -103,9 +103,9 @@
 static errno_t answer_process(call_t *answer)
 {
-	cap_handle_t phone_handle = (cap_handle_t) answer->priv;
+	cap_phone_handle_t phone_handle = (cap_handle_t) answer->priv;
 	phone_t *phone = (phone_t *) IPC_GET_ARG5(answer->data);
 
 	if (IPC_GET_RETVAL(answer->data)) {
-		if (phone_handle >= 0) {
+		if (CAP_HANDLE_RAW(phone_handle) >= 0) {
 			/*
 			 * Cleanup the unpublished capability and drop
@@ -123,5 +123,5 @@
 		cap_publish(TASK, phone_handle, phone->kobject);
 
-		IPC_SET_ARG5(answer->data, phone_handle);
+		IPC_SET_ARG5(answer->data, CAP_HANDLE_RAW(phone_handle));
 	}
 
Index: kernel/generic/src/ipc/ops/concttome.c
===================================================================
--- kernel/generic/src/ipc/ops/concttome.c	(revision 8e3153b5c08b4ce5f35bc4675add10df0f29bc69)
+++ kernel/generic/src/ipc/ops/concttome.c	(revision 9ce35f067406cfc2d4e59addfe1e84524ba08fa4)
@@ -42,9 +42,10 @@
 static int request_process(call_t *call, answerbox_t *box)
 {
-	cap_handle_t phone_handle;
+	cap_phone_handle_t phone_handle;
 	kobject_t *phone_obj;
 	errno_t rc = phone_alloc(TASK, false, &phone_handle, &phone_obj);
 	call->priv = (sysarg_t) phone_obj;
-	IPC_SET_ARG5(call->data, (rc == EOK) ? phone_handle : -1);
+	IPC_SET_ARG5(call->data,
+	    (rc == EOK) ? CAP_HANDLE_RAW(phone_handle) : CAP_NIL);
 	return 0;
 }
@@ -52,8 +53,8 @@
 static errno_t answer_cleanup(call_t *answer, ipc_data_t *olddata)
 {
-	cap_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);
+	cap_phone_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);
 	kobject_t *phone_obj = (kobject_t *) answer->priv;
 
-	if (phone_handle >= 0) {
+	if (CAP_HANDLE_VALID(phone_handle)) {
 		kobject_put(phone_obj);
 		cap_free(TASK, phone_handle);
@@ -65,5 +66,5 @@
 static errno_t answer_preprocess(call_t *answer, ipc_data_t *olddata)
 {
-	cap_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);
+	cap_phone_handle_t phone_handle = (cap_handle_t) IPC_GET_ARG5(*olddata);
 	kobject_t *phone_obj = (kobject_t *) answer->priv;
 
@@ -71,5 +72,5 @@
 		/* The connection was not accepted */
 		answer_cleanup(answer, olddata);
-	} else if (phone_handle >= 0) {
+	} else if (CAP_HANDLE_VALID(phone_handle)) {
 		/*
 		 * The connection was accepted
Index: kernel/generic/src/ipc/ops/stchngath.c
===================================================================
--- kernel/generic/src/ipc/ops/stchngath.c	(revision 8e3153b5c08b4ce5f35bc4675add10df0f29bc69)
+++ kernel/generic/src/ipc/ops/stchngath.c	(revision 9ce35f067406cfc2d4e59addfe1e84524ba08fa4)
@@ -45,6 +45,6 @@
 	task_t *other_task_s;
 
-	kobject_t *sender_obj = kobject_get(TASK, IPC_GET_ARG5(call->data),
-	    KOBJECT_TYPE_PHONE);
+	kobject_t *sender_obj = kobject_get(TASK,
+	    (cap_handle_t) IPC_GET_ARG5(call->data), KOBJECT_TYPE_PHONE);
 	if (!sender_obj)
 		return ENOENT;
@@ -78,5 +78,6 @@
 
 		kobject_t *recipient_obj = kobject_get(TASK,
-		    IPC_GET_ARG1(answer->data), KOBJECT_TYPE_PHONE);
+		    (cap_handle_t) IPC_GET_ARG1(answer->data),
+		    KOBJECT_TYPE_PHONE);
 		if (!recipient_obj) {
 			IPC_SET_RETVAL(answer->data, ENOENT);
