Index: libc/include/async.h
===================================================================
--- libc/include/async.h	(revision 51dbadf3d0373e65b18fe92a7f6eb61e7bde59f6)
+++ libc/include/async.h	(revision 9a71438e6a7b9eb30d478121dfec5bc6220f3d02)
@@ -38,5 +38,9 @@
 typedef void (*async_client_conn_t)(ipc_callid_t callid, ipc_call_t *call);
 
-int async_manager(void);
+static inline void async_manager(void)
+{
+	psthread_schedule_next_adv(PS_TO_MANAGER);
+}
+
 ipc_callid_t async_get_call_timeout(ipc_call_t *call, suseconds_t usecs);
 static inline ipc_callid_t async_get_call(ipc_call_t *data)
@@ -58,5 +62,5 @@
  * @return Return code of message
  */
-static inline ipcarg_t sync_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t *r1, ipcarg_t *r2)
+static inline ipcarg_t async_req_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t *r1, ipcarg_t *r2)
 {
 	ipc_call_t result;
@@ -71,7 +75,7 @@
 	return rc;
 }
-#define sync_send(phoneid, method, arg1, r1) sync_send_2(phoneid, method, arg1, 0, r1, 0)
+#define async_req(phoneid, method, arg1, r1) async_req_2(phoneid, method, arg1, 0, r1, 0)
 
-static inline ipcarg_t sync_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1,
+static inline ipcarg_t async_req_3(int phoneid, ipcarg_t method, ipcarg_t arg1,
 				   ipcarg_t arg2, ipcarg_t arg3, ipcarg_t *r1, 
 				   ipcarg_t *r2, ipcarg_t *r3)
@@ -103,5 +107,19 @@
 
 
+/* Primitve functions for IPC communication */
+void async_msg_3(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, 
+		 ipcarg_t arg3);
+void async_msg_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2);
+#define async_msg(ph,m,a1) async_msg_2(ph,m,a1,0)
+
+static inline void async_serialize_start(void)
+{
+	psthread_inc_sercount();
+}
+static inline void async_serialize_end(void)
+{
+	psthread_dec_sercount();
+}
+
 extern atomic_t async_futex;
-
 #endif
Index: libc/include/ipc/ipc.h
===================================================================
--- libc/include/ipc/ipc.h	(revision 51dbadf3d0373e65b18fe92a7f6eb61e7bde59f6)
+++ libc/include/ipc/ipc.h	(revision 9a71438e6a7b9eb30d478121dfec5bc6220f3d02)
@@ -82,15 +82,3 @@
 extern int ipc_forward_fast(ipc_callid_t callid, int phoneid, int method, ipcarg_t arg1);
 
-
-/* Primitve functions for IPC communication */
-void send_call_3(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, 
-		 ipcarg_t arg3);
-void send_call_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2);
-#define send_call(ph,m,a1) send_call_2(ph,m,a1,0)
-/* These functions never preempt */
-void nsend_call_3(int phoneid, ipcarg_t method, ipcarg_t arg1,
-		  ipcarg_t arg2, ipcarg_t arg3);
-void nsend_call_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2);
-#define nsend_call(ph,m,a1) nsend_call_2(ph,m,a1,0)
-
 #endif
Index: libc/include/psthread.h
===================================================================
--- libc/include/psthread.h	(revision 51dbadf3d0373e65b18fe92a7f6eb61e7bde59f6)
+++ libc/include/psthread.h	(revision 9a71438e6a7b9eb30d478121dfec5bc6220f3d02)
@@ -41,8 +41,11 @@
 #endif /* context_set */
 
+#define PSTHREAD_SERIALIZED   1
+
 typedef enum {
 	PS_TO_MANAGER,
 	PS_FROM_MANAGER,
-	PS_PREEMPT
+	PS_PREEMPT,
+	PS_FROM_DEAD
 } pschange_type;
 
@@ -76,4 +79,6 @@
 void psthread_remove_manager(void);
 pstid_t psthread_get_id(void);
+void psthread_inc_sercount(void);
+void psthread_dec_sercount(void);
 
 static inline int psthread_schedule_next() {
