Index: kernel/generic/src/ipc/ipc.c
===================================================================
--- kernel/generic/src/ipc/ipc.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/ipc.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -513,11 +513,6 @@
 		irq_spinlock_unlock(&box->lock, true);
 
-		if (lst == &box->calls) {
-			sysipc_ops_t *ops;
-
-			ops = sysipc_ops_get(call->request_method);
-			if (ops->request_process)
-				(void) ops->request_process(call, box);
-		}
+		if (lst == &box->calls)
+			SYSIPC_OP(request_process, call, box);
 
 		ipc_data_t old = call->data;
@@ -645,7 +640,5 @@
 	atomic_dec(&call->caller_phone->active_calls);
 
-	sysipc_ops_t *ops = sysipc_ops_get(call->request_method);
-	if (ops->request_forget)
-		ops->request_forget(call);
+	SYSIPC_OP(request_forget, call);
 
 	ipc_call_release(call);
@@ -716,7 +709,5 @@
 	ASSERT(call->flags & (IPC_CALL_ANSWERED | IPC_CALL_NOTIF));
 
-	sysipc_ops_t *ops = sysipc_ops_get(call->request_method);
-	if (ops->answer_process)
-		ops->answer_process(call);
+	SYSIPC_OP(answer_process, call);
 
 	ipc_call_free(call);
Index: kernel/generic/src/ipc/ops/clnestab.c
===================================================================
--- kernel/generic/src/ipc/ops/clnestab.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/ops/clnestab.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -45,5 +45,5 @@
 }
 
-static void answer_cleanup(call_t *answer, ipc_data_t *olddata)
+static int answer_cleanup(call_t *answer, ipc_data_t *olddata)
 {
 	phone_t *phone = (phone_t *) IPC_GET_ARG5(*olddata);
@@ -57,4 +57,6 @@
 	}
 	mutex_unlock(&phone->lock);
+
+	return EOK;
 }
 
Index: kernel/generic/src/ipc/ops/conctmeto.c
===================================================================
--- kernel/generic/src/ipc/ops/conctmeto.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/ops/conctmeto.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -54,7 +54,8 @@
 }
 
-static void request_forget(call_t *call)
+static int request_forget(call_t *call)
 {
 	phone_dealloc(call->priv);
+	return EOK;
 }
 
Index: kernel/generic/src/ipc/ops/concttome.c
===================================================================
--- kernel/generic/src/ipc/ops/concttome.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/ops/concttome.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -49,5 +49,5 @@
 }
 
-static void answer_cleanup(call_t *answer, ipc_data_t *olddata)
+static int answer_cleanup(call_t *answer, ipc_data_t *olddata)
 {
 	int phoneid = (int) IPC_GET_ARG5(*olddata);
@@ -55,4 +55,6 @@
 	if (phoneid >= 0)
 		phone_dealloc(phoneid);
+
+	return EOK;
 }
 
Index: kernel/generic/src/ipc/ops/connclone.c
===================================================================
--- kernel/generic/src/ipc/ops/connclone.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/ops/connclone.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -97,5 +97,5 @@
 }
 
-static void answer_cleanup(call_t *answer, ipc_data_t *olddata)
+static int answer_cleanup(call_t *answer, ipc_data_t *olddata)
 {
 	int phoneid = (int) IPC_GET_ARG1(*olddata);
@@ -116,4 +116,6 @@
 	}
 	mutex_unlock(&phone->lock);
+
+	return EOK;
 }
 
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/sysipc.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -161,5 +161,4 @@
 {
 	int rc = EOK;
-	sysipc_ops_t *ops;
 
 	spinlock_lock(&answer->forget_lock);
@@ -170,8 +169,5 @@
 		spinlock_unlock(&answer->forget_lock);
 
-		ops = sysipc_ops_get(answer->request_method);
-		if (ops->answer_cleanup)
-			ops->answer_cleanup(answer, olddata);
-
+		SYSIPC_OP(answer_cleanup, answer, olddata);
 		return rc;
 	} else {
@@ -213,9 +209,5 @@
 		return rc;
 
-	ops = sysipc_ops_get(answer->request_method);
-	if (ops->answer_preprocess)
-		rc = ops->answer_preprocess(answer, olddata);
-	
-	return rc;
+	return SYSIPC_OP(answer_preprocess, answer, olddata);
 }
 
@@ -230,13 +222,6 @@
 static int request_preprocess(call_t *call, phone_t *phone)
 {
-	int rc = EOK;
-
 	call->request_method = IPC_GET_IMETHOD(call->data);
-
-	sysipc_ops_t *ops = sysipc_ops_get(call->request_method);
-	if (ops->request_preprocess)
-		rc = ops->request_preprocess(call, phone);
-	
-	return rc;
+	return SYSIPC_OP(request_preprocess, call, phone);
 }
 
@@ -256,7 +241,5 @@
 		IPC_SET_RETVAL(call->data, EFORWARD);
 	
-	sysipc_ops_t *ops = sysipc_ops_get(call->request_method);
-	if (ops->answer_process)
-		(void) ops->answer_process(call);
+	SYSIPC_OP(answer_process, call);
 }
 
@@ -273,11 +256,5 @@
 static int process_request(answerbox_t *box, call_t *call)
 {
-	int rc = EOK;
-
-	sysipc_ops_t *ops = sysipc_ops_get(call->request_method);
-	if (ops->request_process)
-		rc = ops->request_process(call, box);
-	
-	return rc;
+	return SYSIPC_OP(request_process, call, box);
 }
 
Index: kernel/generic/src/ipc/sysipc_ops.c
===================================================================
--- kernel/generic/src/ipc/sysipc_ops.c	(revision 716185dfa29c1943ab5649d9b18ed10a7570fbe7)
+++ kernel/generic/src/ipc/sysipc_ops.c	(revision 5030acadeab877d574032b6cbe0e3a5f0551de90)
@@ -76,6 +76,7 @@
 }
 
-void null_request_forget(call_t *call)
+int null_request_forget(call_t *call)
 {
+	return EOK;
 }
 
@@ -85,6 +86,7 @@
 }
 
-void null_answer_cleanup(call_t *call, ipc_data_t *data)
+int null_answer_cleanup(call_t *call, ipc_data_t *data)
 {
+	return EOK;
 }
 
