Index: contrib/bp/app/klog/klog.bp
===================================================================
--- contrib/bp/app/klog/klog.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/app/klog/klog.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,1 @@
+!ns.IPC_SHARE_IN /* SERVICE_MEM_KLOG */
Index: ntrib/bp/devfs.bp
===================================================================
--- contrib/bp/devfs.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,66 +1,0 @@
-[devmap_get_phone] ;
-!ns.IPC_M_CONNECT_ME_TO /* vfs */ ;
-[fs_register] ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		?VFS_OUT_MOUNTED {
-			?IPC_M_DATA_WRITE /* mount options */
-		} +
-		
-		?VFS_OUT_MOUNT +
-		
-		?VFS_OUT_LOOKUP {
-			(
-				[devmap_device_get_handle] ;
-				[devmap_device_connect]
-			) +
-			NULL
-		} +
-		
-		?VFS_OUT_READ {
-			?IPC_M_DATA_READ /* payload */ {
-				(
-					!dev.VFS_OUT_READ ;
-					!dev.IPC_M_DATA_READ /* forwarded */
-				) +
-				(
-					[devmap_device_get_count] ;
-					[devmap_device_get_devices]
-				)
-			}
-		} +
-		
-		?VFS_OUT_WRITE {
-			?IPC_M_DATA_WRITE /* payload */ {
-				(
-					!dev.VFS_OUT_WRITE ;
-					!dev.IPC_M_DATA_WRITE /* forwarded */
-				)
-			} +
-			NULL
-		} +
-		
-		?VFS_OUT_TRUNCATE +
-		
-		?VFS_OUT_CLOSE {
-			!dev.IPC_M_PHONE_HUNGUP
-		} +
-		
-		?VFS_OUT_DESTROY +
-		
-		?VFS_OUT_OPEN_NODE {
-			[devmap_device_connect] +
-			NULL
-		} +
-		
-		?VFS_OUT_STAT {
-			?IPC_M_DATA_READ /* struct stat */
-		} +
-		
-		?VFS_OUT_SYNC
-		
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)* ;
-!vfs.IPC_M_PHONE_HUNGUP
Index: ntrib/bp/devmap.bp
===================================================================
--- contrib/bp/devmap.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,42 +1,0 @@
-!ns.IPC_M_CONNECT_TO_ME ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		( /* driver interface */
-			?DEVMAP_DEVICE_REGISTER {
-				?IPC_M_DATA_WRITE /* name */
-			} +
-			
-			?DEVMAP_DEVICE_GET_HANDLE {
-				?IPC_M_DATA_WRITE /* name */
-			} +
-			
-			?DEVMAP_DEVICE_GET_NAME +
-			
-			?DEVMAP_DEVICE_UNREGISTER +
-			
-			?DEVMAP_DRIVER_UNREGISTER
-		) +
-		
-		( /* client interface */
-			?DEVMAP_DEVICE_GET_HANDLE {
-				?IPC_M_DATA_WRITE /* name */
-			} +
-			
-			?DEVMAP_DEVICE_GET_NAME +
-			
-			?DEVMAP_DEVICE_NULL_CREATE +
-			
-			?DEVMAP_DEVICE_NULL_DESTROY +
-			
-			?DEVMAP_DEVICE_GET_COUNT +
-			
-			?DEVMAP_DEVICE_GET_DEVICES {
-				?IPC_M_DATA_READ /* buffer */
-			}
-		) +
-		
-		!dev.IPC_M_CONNECT_ME_TO /* forwarded */
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)*
Index: ntrib/bp/fb.bp
===================================================================
--- contrib/bp/fb.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,74 +1,0 @@
-!ns.IPC_M_CONNECT_TO_ME ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		?IPC_M_SHARE_OUT +
-		
-		(
-			?FB_PREPARE_SHM ;
-			?IPC_M_AS_AREA_SEND ;
-			?FB_DRAW_PPM ;
-			?FB_DROP_SHM
-		) +
-		
-		(
-			?IPC_M_AS_AREA_SEND ;
-			?FB_DRAW_TEXT_DATA
-		) +
-		
-		?FB_SHM2PIXMAP +
-		
-		?FB_VP_DRAW_PIXMAP +
-		
-		?FB_VP2PIXMAP +
-		
-		?FB_DROP_PIXMAP +
-		
-		?FB_ANIM_CREATE +
-		
-		?FB_ANIM_DROP +
-		
-		?FB_ANIM_ADDPIXMAP +
-		
-		?FB_ANIM_CHGVP +
-		
-		?FB_ANIM_START +
-		
-		?FB_ANIM_STOP +
-		
-		?FB_PUTCHAR +
-		
-		?FB_CLEAR +
-		
-		?FB_CURSOR_GOTO +
-		
-		?FB_CURSOR_VISIBILITY +
-		
-		?FB_GET_CSIZE +
-		
-		?FB_GET_COLOR_CAP +
-		
-		?FB_SCROLL +
-		
-		?FB_VIEWPORT_SWITCH +
-		
-		?FB_VIEWPORT_CREATE +
-		
-		?FB_VIEWPORT_DELETE +
-		
-		?FB_SET_STYLE +
-		
-		?FB_SET_COLOR +
-		
-		?FB_SET_RGB_COLOR +
-		
-		?FB_GET_RESOLUTION +
-		
-		?FB_POINTER_MOVE +
-		
-		?FB_SCREEN_YIELD +
-		
-		?FB_SCREEN_RECLAIM
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)*
Index: ntrib/bp/kbd.bp
===================================================================
--- contrib/bp/kbd.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,20 +1,0 @@
-(
-	!ns.IPC_M_CONNECT_ME_TO /* cir */ +
-	NULL
-) ;
-!ns.IPC_M_CONNECT_TO_ME ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		(
-			?KBD_YIELD +
-			?KBD_RECLAIM +
-		) |
-		!console.KBD_EVENT
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)* ;
-(
-	!cir.IPC_M_PHONE_HUNGUP +
-	NULL
-)
Index: ntrib/bp/klog.bp
===================================================================
--- contrib/bp/klog.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!ns.IPC_SHARE_IN /* SERVICE_MEM_KLOG */
Index: contrib/bp/lib/libc/devmap_device_connect
===================================================================
--- contrib/bp/lib/libc/devmap_device_connect	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libc/devmap_device_connect	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,2 @@
+[devmap_get_phone] ;
+!dev.IPC_M_CONNECT_ME_TO
Index: contrib/bp/lib/libc/devmap_device_get_count
===================================================================
--- contrib/bp/lib/libc/devmap_device_get_count	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libc/devmap_device_get_count	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,2 @@
+[devmap_get_phone] ;
+!devmap.DEVMAP_DEVICE_GET_COUNT
Index: contrib/bp/lib/libc/devmap_device_get_devices
===================================================================
--- contrib/bp/lib/libc/devmap_device_get_devices	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libc/devmap_device_get_devices	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,3 @@
+[devmap_get_phone] ;
+!devmap.DEVMAP_DEVICE_GET_DEVICES ;
+!devmap.IPC_M_DATA_READ
Index: contrib/bp/lib/libc/devmap_device_get_handle
===================================================================
--- contrib/bp/lib/libc/devmap_device_get_handle	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libc/devmap_device_get_handle	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,3 @@
+[devmap_get_phone] ;
+!devmap.DEVMAP_DEVICE_GET_HANDLE ;
+!devmap.IPC_M_DATA_WRITE /* name */
Index: contrib/bp/lib/libc/devmap_get_phone
===================================================================
--- contrib/bp/lib/libc/devmap_get_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libc/devmap_get_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,2 @@
+!ns.IPC_M_CONNECT_ME_TO /* devmap */ +
+NULL
Index: contrib/bp/lib/libfs/fs_register
===================================================================
--- contrib/bp/lib/libfs/fs_register	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libfs/fs_register	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,4 @@
+!vfs.VFS_IN_REGISTER ;
+!vfs.IPC_M_DATA_WRITE /* vfs_into_t */ ;
+!vfs.IPC_M_CONNECT_TO_ME ;
+!vfs.IPC_M_SHARE_IN
Index: contrib/bp/lib/libfs/libfs_lookup
===================================================================
--- contrib/bp/lib/libfs/libfs_lookup	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libfs/libfs_lookup	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,1 @@
+!fs.VFS_OUT_LOOKUP*
Index: contrib/bp/lib/libfs/libfs_mount
===================================================================
--- contrib/bp/lib/libfs/libfs_mount	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libfs/libfs_mount	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,6 @@
+?IPC_M_CONNECTION_CLONE ;
+?IPC_M_DATA_WRITE /* mount options */ {
+	!fs.IPC_M_CONNECT_ME ;
+	!fs.VFS_OUT_MOUNTED ;
+	!fs.IPC_M_DATA_WRITE /* forwarded */
+}
Index: contrib/bp/lib/libfs/libfs_stat
===================================================================
--- contrib/bp/lib/libfs/libfs_stat	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/lib/libfs/libfs_stat	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,1 @@
+?IPC_M_DATA_READ
Index: ntrib/bp/lib/vfs_grab_phone
===================================================================
--- contrib/bp/lib/vfs_grab_phone	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!fs.IPC_M_CONNECT_ME_TO
Index: ntrib/bp/lib/vfs_lookup_internal
===================================================================
--- contrib/bp/lib/vfs_lookup_internal	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,3 +1,0 @@
-[vfs_grab_phone] ;
-!fs.VFS_OUT_LOOKUP ;
-[vfs_release_phone]
Index: ntrib/bp/lib/vfs_release_phone
===================================================================
--- contrib/bp/lib/vfs_release_phone	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!fs.IPC_M_PHONE_HUNGUP
Index: ntrib/bp/loader.bp
===================================================================
--- contrib/bp/loader.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,25 +1,0 @@
-!ns.NS_ID_INTRO ;
-!ns.IPC_M_CONNECT_TO_ME ;
-(
-	?LOADER_GET_TASKID {
-		?IPC_M_DATA_READ /* task id */
-	} +
-	
-	?LOADER_SET_PATHNAME {
-		?IPC_M_DATA_WRITE /* path */
-	} +
-	
-	?LOADER_SET_ARGS {
-		?IPC_M_DATA_WRITE /* arguments */
-	} +
-	
-	?LOADER_SET_FILES {
-		?IPC_M_DATA_WRITE /* files */
-	} +
-	
-	?LOADER_LOAD
-)* ;
-(
-	?LOADER_RUN +
-	?IPC_M_PHONE_HUNGUP
-)
Index: ntrib/bp/ns.bp
===================================================================
--- contrib/bp/ns.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,18 +1,0 @@
-(
-	(
-		?IPC_M_SHARE_IN /* SERVICE_MEM_REALTIME || SERVICE_MEM_KLOG */ +
-		?IPC_M_CONNECT_TO_ME {
-			!clonable.IPC_M_CONNECT_TO_ME /* forwarded */ +
-			NULL
-		} +
-		?IPC_M_CONNECT_ME_TO {
-			!service.IPC_M_CONNECT_ME_TO /* forwarded */ +
-			NULL
-		} +
-		?NS_PING +
-		?NS_TASK_WAIT +
-		?NS_ID_INTRO +
-		?NS_RETVAL
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)*
Index: ntrib/bp/rd.bp
===================================================================
--- contrib/bp/rd.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,11 +1,0 @@
-[devmap_driver_register] ;
-[devmap_device_register] ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	?IPC_SHARE_IN ;
-	(
-		?BD_READ_BLOCK +
-		?BD_WRITE_BLOCK
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)*
Index: contrib/bp/srv/bd/rd/rd.bp
===================================================================
--- contrib/bp/srv/bd/rd/rd.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/bd/rd/rd.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,11 @@
+[devmap_driver_register] ;
+[devmap_device_register] ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	?IPC_SHARE_IN ;
+	(
+		?BD_READ_BLOCK +
+		?BD_WRITE_BLOCK
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)*
Index: contrib/bp/srv/devmap/devmap.bp
===================================================================
--- contrib/bp/srv/devmap/devmap.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/devmap/devmap.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,42 @@
+!ns.IPC_M_CONNECT_TO_ME ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		( /* driver interface */
+			?DEVMAP_DEVICE_REGISTER {
+				?IPC_M_DATA_WRITE /* name */
+			} +
+			
+			?DEVMAP_DEVICE_GET_HANDLE {
+				?IPC_M_DATA_WRITE /* name */
+			} +
+			
+			?DEVMAP_DEVICE_GET_NAME +
+			
+			?DEVMAP_DEVICE_UNREGISTER +
+			
+			?DEVMAP_DRIVER_UNREGISTER
+		) +
+		
+		( /* client interface */
+			?DEVMAP_DEVICE_GET_HANDLE {
+				?IPC_M_DATA_WRITE /* name */
+			} +
+			
+			?DEVMAP_DEVICE_GET_NAME +
+			
+			?DEVMAP_DEVICE_NULL_CREATE +
+			
+			?DEVMAP_DEVICE_NULL_DESTROY +
+			
+			?DEVMAP_DEVICE_GET_COUNT +
+			
+			?DEVMAP_DEVICE_GET_DEVICES {
+				?IPC_M_DATA_READ /* buffer */
+			}
+		) +
+		
+		!dev.IPC_M_CONNECT_ME_TO /* forwarded */
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)*
Index: contrib/bp/srv/fb/fb.bp
===================================================================
--- contrib/bp/srv/fb/fb.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/fb/fb.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,74 @@
+!ns.IPC_M_CONNECT_TO_ME ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		?IPC_M_SHARE_OUT +
+		
+		(
+			?FB_PREPARE_SHM ;
+			?IPC_M_AS_AREA_SEND ;
+			?FB_DRAW_PPM ;
+			?FB_DROP_SHM
+		) +
+		
+		(
+			?IPC_M_AS_AREA_SEND ;
+			?FB_DRAW_TEXT_DATA
+		) +
+		
+		?FB_SHM2PIXMAP +
+		
+		?FB_VP_DRAW_PIXMAP +
+		
+		?FB_VP2PIXMAP +
+		
+		?FB_DROP_PIXMAP +
+		
+		?FB_ANIM_CREATE +
+		
+		?FB_ANIM_DROP +
+		
+		?FB_ANIM_ADDPIXMAP +
+		
+		?FB_ANIM_CHGVP +
+		
+		?FB_ANIM_START +
+		
+		?FB_ANIM_STOP +
+		
+		?FB_PUTCHAR +
+		
+		?FB_CLEAR +
+		
+		?FB_CURSOR_GOTO +
+		
+		?FB_CURSOR_VISIBILITY +
+		
+		?FB_GET_CSIZE +
+		
+		?FB_GET_COLOR_CAP +
+		
+		?FB_SCROLL +
+		
+		?FB_VIEWPORT_SWITCH +
+		
+		?FB_VIEWPORT_CREATE +
+		
+		?FB_VIEWPORT_DELETE +
+		
+		?FB_SET_STYLE +
+		
+		?FB_SET_COLOR +
+		
+		?FB_SET_RGB_COLOR +
+		
+		?FB_GET_RESOLUTION +
+		
+		?FB_POINTER_MOVE +
+		
+		?FB_SCREEN_YIELD +
+		
+		?FB_SCREEN_RECLAIM
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)*
Index: contrib/bp/srv/fs/devfs/devfs.bp
===================================================================
--- contrib/bp/srv/fs/devfs/devfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/fs/devfs/devfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,66 @@
+[../../../lib/libc/devmap_get_phone] ;
+!ns.IPC_M_CONNECT_ME_TO /* vfs */ ;
+[../../../lib/libfs/fs_register] ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		?VFS_OUT_MOUNTED {
+			?IPC_M_DATA_WRITE /* mount options */
+		} +
+		
+		?VFS_OUT_MOUNT +
+		
+		?VFS_OUT_LOOKUP {
+			(
+				[../../../lib/libc/devmap_device_get_handle] ;
+				[../../../lib/libc/devmap_device_connect]
+			) +
+			NULL
+		} +
+		
+		?VFS_OUT_READ {
+			?IPC_M_DATA_READ /* payload */ {
+				(
+					!dev.VFS_OUT_READ ;
+					!dev.IPC_M_DATA_READ /* forwarded */
+				) +
+				(
+					[../../../lib/libc/devmap_device_get_count] ;
+					[../../../lib/libc/devmap_device_get_devices]
+				)
+			}
+		} +
+		
+		?VFS_OUT_WRITE {
+			?IPC_M_DATA_WRITE /* payload */ {
+				(
+					!dev.VFS_OUT_WRITE ;
+					!dev.IPC_M_DATA_WRITE /* forwarded */
+				)
+			} +
+			NULL
+		} +
+		
+		?VFS_OUT_TRUNCATE +
+		
+		?VFS_OUT_CLOSE {
+			!dev.IPC_M_PHONE_HUNGUP
+		} +
+		
+		?VFS_OUT_DESTROY +
+		
+		?VFS_OUT_OPEN_NODE {
+			[../../../lib/libc/devmap_device_connect] +
+			NULL
+		} +
+		
+		?VFS_OUT_STAT {
+			?IPC_M_DATA_READ /* struct stat */
+		} +
+		
+		?VFS_OUT_SYNC
+		
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)* ;
+!vfs.IPC_M_PHONE_HUNGUP
Index: contrib/bp/srv/fs/tmpfs/tmpfs.bp
===================================================================
--- contrib/bp/srv/fs/tmpfs/tmpfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/fs/tmpfs/tmpfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,45 @@
+!ns.IPC_M_CONNECT_ME_TO /* vfs */ ;
+[../../../lib/libfs/fs_register] ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		?VFS_OUT_MOUNTED {
+			?IPC_M_DATA_WRITE /* mount options */
+		} +
+		
+		?VFS_OUT_MOUNT {
+			[../../../lib/libfs/libfs_mount]
+		} +
+		
+		?VFS_OUT_LOOKUP {
+			[../../../lib/libfs/libfs_lookup]
+		} +
+		
+		?VFS_OUT_READ {
+			?IPC_M_DATA_READ /* payload */
+		} +
+		
+		?VFS_OUT_WRITE {
+			?IPC_M_DATA_WRITE /* payload */
+		} +
+		
+		?VFS_OUT_TRUNCATE +
+		
+		?VFS_OUT_CLOSE +
+		
+		?VFS_OUT_DESTROY +
+		
+		?VFS_OUT_OPEN_NODE {
+			[../../../lib/libfs/libfs_open_node]
+		} +
+		
+		?VFS_OUT_STAT {
+			[../../../lib/libfs/libfs_stat]
+		} +
+		
+		?VFS_OUT_SYNC
+		
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)* ;
+!vfs.IPC_M_PHONE_HUNGUP
Index: contrib/bp/srv/kbd/kbd.bp
===================================================================
--- contrib/bp/srv/kbd/kbd.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/kbd/kbd.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,20 @@
+(
+	!ns.IPC_M_CONNECT_ME_TO /* cir */ +
+	NULL
+) ;
+!ns.IPC_M_CONNECT_TO_ME ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		(
+			?KBD_YIELD +
+			?KBD_RECLAIM +
+		) |
+		!console.KBD_EVENT
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)* ;
+(
+	!cir.IPC_M_PHONE_HUNGUP +
+	NULL
+)
Index: contrib/bp/srv/loader/loader.bp
===================================================================
--- contrib/bp/srv/loader/loader.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/loader/loader.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,25 @@
+!ns.NS_ID_INTRO ;
+!ns.IPC_M_CONNECT_TO_ME ;
+(
+	?LOADER_GET_TASKID {
+		?IPC_M_DATA_READ /* task id */
+	} +
+	
+	?LOADER_SET_PATHNAME {
+		?IPC_M_DATA_WRITE /* path */
+	} +
+	
+	?LOADER_SET_ARGS {
+		?IPC_M_DATA_WRITE /* arguments */
+	} +
+	
+	?LOADER_SET_FILES {
+		?IPC_M_DATA_WRITE /* files */
+	} +
+	
+	?LOADER_LOAD
+)* ;
+(
+	?LOADER_RUN +
+	?IPC_M_PHONE_HUNGUP
+)
Index: contrib/bp/srv/ns/ns.bp
===================================================================
--- contrib/bp/srv/ns/ns.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/ns/ns.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,18 @@
+(
+	(
+		?IPC_M_SHARE_IN /* SERVICE_MEM_REALTIME || SERVICE_MEM_KLOG */ +
+		?IPC_M_CONNECT_TO_ME {
+			!clonable.IPC_M_CONNECT_TO_ME /* forwarded */ +
+			NULL
+		} +
+		?IPC_M_CONNECT_ME_TO {
+			!service.IPC_M_CONNECT_ME_TO /* forwarded */ +
+			NULL
+		} +
+		?NS_PING +
+		?NS_TASK_WAIT +
+		?NS_ID_INTRO +
+		?NS_RETVAL
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)*
Index: contrib/bp/srv/vfs/vfs.bp
===================================================================
--- contrib/bp/srv/vfs/vfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/vfs/vfs.bp	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,132 @@
+!ns.IPC_M_CONNECT_TO_ME ;
+(
+	?IPC_M_CONNECT_ME_TO ;
+	(
+		?VFS_IN_REGISTER {
+			?IPC_M_DATA_WRITE ;
+			?IPC_M_CONNECT_TO_ME ;
+			?IPC_M_SHARE_IN
+		} +
+		
+		?VFS_IN_MOUNT {
+			?IPC_M_DATA_WRITE /* mount point */ ;
+			?IPC_M_DATA_WRITE /* mount options */ ;
+			?IPC_M_DATA_WRITE /* fs name */ ;
+			?IPC_M_PING ;
+			(
+				
+				!fs.VFS_OUT_MOUNTED ;
+				!fs.IPC_M_DATA_WRITE /* mount options */
+			) /* root fs */ +
+			(
+				!fs.VFS_OUT_MOUNT ;
+				!fs.IPC_M_CONNECTION_CLONE ;
+				!fs.VFS_M_DATA_WRITE /* mount options */
+			) /* non-root fs */
+		} +
+		
+		?VFS_IN_OPEN {
+			?IPC_M_DATA_WRITE /* path */ ;
+			[vfs_lookup_internal] ;
+			(
+				(
+					[vfs_grab_phone] ;
+					!fs.VFS_OUT_TRUNCATE ;
+					[vfs_release_phone]
+				) +
+				NULL
+			)
+		} +
+		
+		?VFS_IN_OPEN_NODE {
+			[vfs_grab_phone] ;
+			!fs.VFS_OUT_OPEN_NODE ;
+			[vfs_release_phone] ;
+			(
+				(
+					[vfs_grab_phone] ;
+					!fs.VFS_OUT_TRUNCATE ;
+					[vfs_release_phone]
+				) +
+				NULL
+				NULL
+			)
+		} +
+		
+		?VFS_IN_CLOSE {
+			[vfs_grab_phone] ;
+			!fs.VFS_OUT_CLOSE ;
+			[vfs_release_phone]
+		} +
+		
+		?VFS_IN_READ {
+			?IPC_M_DATA_READ {
+				[vfs_grab_phone] ;
+				!fs.VFS_OUT_READ /* payload */ ;
+				!fs.IPC_M_DATA_READ /* forwarded */ ;
+				[vfs_release_phone]
+			}
+		} +
+		
+		?VFS_IN_WRITE {
+			?IPC_M_DATA_WRITE {
+				[vfs_grab_phone] ;
+				!fs.VFS_OUT_WRITE /* payload */ ;
+				!fs.IPC_M_DATA_WRITE /* forwarded */ ;
+				[vfs_release_phone]
+			}
+		} +
+		
+		?VFS_IN_SEEK +
+		
+		?VFS_IN_TRUNCATE {
+			[vfs_grab_phone] ;
+			!fs.VFS_OUT_TRUNCATE ;
+			[vfs_release_phone]
+		} +
+		
+		?VFS_IN_FSTAT {
+			?IPC_M_DATA_READ /* struct stat */ {
+				[vfs_grab_phone] ;
+				!fs.VFS_OUT_STAT ;
+				!fs.IPC_M_DATA_READ /* forwarded */ ;
+				[vfs_release_phone]
+			}
+		} +
+		
+		?VFS_IN_STAT {
+			?IPC_M_DATA_WRITE /* path */ ;
+			?IPC_M_DATA_READ /* struct stat */ {
+				[vfs_lookup_internal] ;
+				!fs.VFS_OUT_STAT ;
+				!fs.IPC_M_DATA_READ /* forwarded */
+			}
+		} +
+		
+		?VFS_IN_MKDIR {
+			?IPC_M_DATA_WRITE /* path */ ;
+			[vfs_lookup_internal]
+		} +
+		
+		?VFS_IN_UNLINK {
+			?IPC_M_DATA_WRITE /* path */ ;
+			[vfs_lookup_internal]
+		} +
+		
+		?VFS_IN_RENAME {
+			?IPC_M_DATA_WRITE /* old path */ ;
+			?IPC_M_DATE_WRITE /* new path */ ;
+			[vfs_lookup_internal] /* lookup old path */ ;
+			[vfs_lookup_internal] /* lookup parent of new path */ ;
+			[vfs_lookup_internal] /* destroy old link for the new path */ ;
+			[vfs_lookup_internal] /* create new link for the new path */ ;
+			[vfs_lookup_internal] /* destroy link for the old path */
+		} +
+		
+		?VFS_IN_SYNC {
+			!fs.VFS_OUT_SYNC
+		}
+		
+	)* ;
+	?IPC_M_PHONE_HUNGUP
+)*
Index: contrib/bp/srv/vfs/vfs_grab_phone
===================================================================
--- contrib/bp/srv/vfs/vfs_grab_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/vfs/vfs_grab_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,1 @@
+!fs.IPC_M_CONNECT_ME_TO
Index: contrib/bp/srv/vfs/vfs_lookup_internal
===================================================================
--- contrib/bp/srv/vfs/vfs_lookup_internal	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/vfs/vfs_lookup_internal	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,3 @@
+[vfs_grab_phone] ;
+!fs.VFS_OUT_LOOKUP ;
+[vfs_release_phone]
Index: contrib/bp/srv/vfs/vfs_release_phone
===================================================================
--- contrib/bp/srv/vfs/vfs_release_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
+++ contrib/bp/srv/vfs/vfs_release_phone	(revision 67c708ee8972b44bf593cee166f5e18ce89eec48)
@@ -0,0 +1,1 @@
+!fs.IPC_M_PHONE_HUNGUP
Index: ntrib/bp/tmpfs.bp
===================================================================
--- contrib/bp/tmpfs.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,45 +1,0 @@
-!ns.IPC_M_CONNECT_ME_TO /* vfs */ ;
-[fs_register] ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		?VFS_OUT_MOUNTED {
-			?IPC_M_DATA_WRITE /* mount options */
-		} +
-		
-		?VFS_OUT_MOUNT {
-			[libfs_mount]
-		} +
-		
-		?VFS_OUT_LOOKUP {
-			[libfs_lookup]
-		} +
-		
-		?VFS_OUT_READ {
-			?IPC_M_DATA_READ /* payload */
-		} +
-		
-		?VFS_OUT_WRITE {
-			?IPC_M_DATA_WRITE /* payload */
-		} +
-		
-		?VFS_OUT_TRUNCATE +
-		
-		?VFS_OUT_CLOSE +
-		
-		?VFS_OUT_DESTROY +
-		
-		?VFS_OUT_OPEN_NODE {
-			[libfs_open_node]
-		} +
-		
-		?VFS_OUT_STAT {
-			[libfs_stat]
-		} +
-		
-		?VFS_OUT_SYNC
-		
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)* ;
-!vfs.IPC_M_PHONE_HUNGUP
Index: ntrib/bp/vfs.bp
===================================================================
--- contrib/bp/vfs.bp	(revision 52ff7699c7d3d605dddc5455935a7299bc7cf8ad)
+++ 	(revision )
@@ -1,132 +1,0 @@
-!ns.IPC_M_CONNECT_TO_ME ;
-(
-	?IPC_M_CONNECT_ME_TO ;
-	(
-		?VFS_IN_REGISTER {
-			?IPC_M_DATA_WRITE ;
-			?IPC_M_CONNECT_TO_ME ;
-			?IPC_M_SHARE_IN
-		} +
-		
-		?VFS_IN_MOUNT {
-			?IPC_M_DATA_WRITE /* mount point */ ;
-			?IPC_M_DATA_WRITE /* mount options */ ;
-			?IPC_M_DATA_WRITE /* fs name */ ;
-			?IPC_M_PING ;
-			(
-				
-				!fs.VFS_OUT_MOUNTED ;
-				!fs.IPC_M_DATA_WRITE /* mount options */
-			) /* root fs */ +
-			(
-				!fs.VFS_OUT_MOUNT ;
-				!fs.IPC_M_CONNECTION_CLONE ;
-				!fs.VFS_M_DATA_WRITE /* mount options */
-			) /* non-root fs */
-		} +
-		
-		?VFS_IN_OPEN {
-			?IPC_M_DATA_WRITE /* path */ ;
-			[vfs_lookup_internal] ;
-			(
-				(
-					[vfs_grab_phone] ;
-					!fs.VFS_OUT_TRUNCATE ;
-					[vfs_release_phone]
-				) +
-				NULL
-			)
-		} +
-		
-		?VFS_IN_OPEN_NODE {
-			[vfs_grab_phone] ;
-			!fs.VFS_OUT_OPEN_NODE ;
-			[vfs_release_phone] ;
-			(
-				(
-					[vfs_grab_phone] ;
-					!fs.VFS_OUT_TRUNCATE ;
-					[vfs_release_phone]
-				) +
-				NULL
-				NULL
-			)
-		} +
-		
-		?VFS_IN_CLOSE {
-			[vfs_grab_phone] ;
-			!fs.VFS_OUT_CLOSE ;
-			[vfs_release_phone]
-		} +
-		
-		?VFS_IN_READ {
-			?IPC_M_DATA_READ {
-				[vfs_grab_phone] ;
-				!fs.VFS_OUT_READ /* payload */ ;
-				!fs.IPC_M_DATA_READ /* forwarded */ ;
-				[vfs_release_phone]
-			}
-		} +
-		
-		?VFS_IN_WRITE {
-			?IPC_M_DATA_WRITE {
-				[vfs_grab_phone] ;
-				!fs.VFS_OUT_WRITE /* payload */ ;
-				!fs.IPC_M_DATA_WRITE /* forwarded */ ;
-				[vfs_release_phone]
-			}
-		} +
-		
-		?VFS_IN_SEEK +
-		
-		?VFS_IN_TRUNCATE {
-			[vfs_grab_phone] ;
-			!fs.VFS_OUT_TRUNCATE ;
-			[vfs_release_phone]
-		} +
-		
-		?VFS_IN_FSTAT {
-			?IPC_M_DATA_READ /* struct stat */ {
-				[vfs_grab_phone] ;
-				!fs.VFS_OUT_STAT ;
-				!fs.IPC_M_DATA_READ /* forwarded */ ;
-				[vfs_release_phone]
-			}
-		} +
-		
-		?VFS_IN_STAT {
-			?IPC_M_DATA_WRITE /* path */ ;
-			?IPC_M_DATA_READ /* struct stat */ {
-				[vfs_lookup_internal] ;
-				!fs.VFS_OUT_STAT ;
-				!fs.IPC_M_DATA_READ /* forwarded */
-			}
-		} +
-		
-		?VFS_IN_MKDIR {
-			?IPC_M_DATA_WRITE /* path */ ;
-			[vfs_lookup_internal]
-		} +
-		
-		?VFS_IN_UNLINK {
-			?IPC_M_DATA_WRITE /* path */ ;
-			[vfs_lookup_internal]
-		} +
-		
-		?VFS_IN_RENAME {
-			?IPC_M_DATA_WRITE /* old path */ ;
-			?IPC_M_DATE_WRITE /* new path */ ;
-			[vfs_lookup_internal] /* lookup old path */ ;
-			[vfs_lookup_internal] /* lookup parent of new path */ ;
-			[vfs_lookup_internal] /* destroy old link for the new path */ ;
-			[vfs_lookup_internal] /* create new link for the new path */ ;
-			[vfs_lookup_internal] /* destroy link for the old path */
-		} +
-		
-		?VFS_IN_SYNC {
-			!fs.VFS_OUT_SYNC
-		}
-		
-	)* ;
-	?IPC_M_PHONE_HUNGUP
-)*
