Index: contrib/arch/HelenOS.adl
===================================================================
--- contrib/arch/HelenOS.adl	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/HelenOS.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -8,4 +8,7 @@
 	/* Loader (clonable service) */
 	inst loader loader;
+	
+	/* Device mapper */
+	inst devmap devmap;
 	
 	/* Block device */
@@ -23,4 +26,5 @@
 	[/uspace/lib/libc/bind%ns]
 	[/uspace/lib/libc/bind%loader]
+	[/uspace/lib/libc/bind%devmap]
 	[/uspace/lib/libc/bind%bd]
 	[/uspace/lib/libc/bind%vfs]
@@ -29,4 +33,6 @@
 	
 	bind loader:ns to ns:ns;
+	
+	bind devmap:ns to ns:ns;
 	
 	bind bd:ns to ns:ns;
Index: contrib/arch/uspace/app/klog/klog.bp
===================================================================
--- contrib/arch/uspace/app/klog/klog.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/app/klog/klog.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!ns.ipc_m_share_in /* SERVICE_MEM_KLOG */
+(
+	!ns.ipc_m_share_in /* SERVICE_MEM_KLOG */
+)
Index: contrib/arch/uspace/lib/libblock/fnc.block_fini
===================================================================
--- contrib/arch/uspace/lib/libblock/fnc.block_fini	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/lib/libblock/fnc.block_fini	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,3 @@
+(
+	!%%.ipc_m_phone_hungup
+)
Index: contrib/arch/uspace/lib/libblock/fnc.block_init
===================================================================
--- contrib/arch/uspace/lib/libblock/fnc.block_init	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/lib/libblock/fnc.block_init	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,9 @@
+(
+	[/uspace/lib/libc/fnc.devmap_device_connect] ;
+	tentative {
+		!%%.ipc_m_share_out ;
+		tentative {
+			!%%.get_block_size
+		}
+	}
+)
Index: contrib/arch/uspace/lib/libblock/fnc.block_seqread
===================================================================
--- contrib/arch/uspace/lib/libblock/fnc.block_seqread	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/lib/libblock/fnc.block_seqread	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,5 @@
+(
+	tentative {
+		!%%.read_blocks*
+	}
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_device_connect
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_device_connect	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_device_connect	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!ns.ipc_m_connect_me_to /* device via devmap */
+(
+	!ns.ipc_m_connect_me_to /* device via devmap */
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_device_get_count
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_device_get_count	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_device_get_count	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-[fnc.devmap_get_phone] ;
-tentative {
-	!dm_client.device_get_count
-}
+(
+	[fnc.devmap_get_phone] ;
+	tentative {
+		!devmap_client.device_get_count
+	}
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_device_get_devices
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_device_get_devices	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_device_get_devices	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,6 +1,9 @@
-[fnc.devmap_get_phone] ;
-tentative {
-	!dm_client.device_get_devices {
-		!dm_client.ipc_m_data_read /* buffer */
+(
+	[fnc.devmap_get_phone] ;
+	tentative {
+		!devmap_client.device_get_devices {
+			!devmap_client.ipc_m_data_read /* buffer */
+		}
 	}
-}
+)
+
Index: contrib/arch/uspace/lib/libc/fnc.devmap_device_get_handle
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_device_get_handle	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_device_get_handle	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,6 +1,8 @@
-[fnc.devmap_get_phone] ;
-tentative {
-	!dm_client.device_get_handle {
-		!dm_client.ipc_m_data_write /* name */
+(
+	[fnc.devmap_get_phone] ;
+	tentative {
+		!devmap_client.device_get_handle {
+			!devmap_client.ipc_m_data_write /* name */
+		}
 	}
-}
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_device_register
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_device_register	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_device_register	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,6 +1,8 @@
-[fnc.devmap_get_phone] ;
-tentative {
-	!devmap.device_register {
-		!devmap.ipc_m_data_write /* name */
+(
+	[fnc.devmap_get_phone] ;
+	tentative {
+		!devmap_driver.device_register {
+			!devmap_driver.ipc_m_data_write /* name */
+		}
 	}
-}
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_driver_register
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_driver_register	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_driver_register	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,9 +1,11 @@
-[fnc.devmap_get_phone] ;
-tentative {
-	!devmap.driver_register {
-		!devmap.ipc_m_data_write /* name */
-	} ;
+(
+	[fnc.devmap_get_phone] ;
 	tentative {
-		!devmap.ipc_m_connect_to_me
+		!devmap_driver.driver_register {
+			!devmap_driver.ipc_m_data_write /* name */
+		} ;
+		tentative {
+			!devmap_driver.ipc_m_connect_to_me
+		}
 	}
-}
+)
Index: contrib/arch/uspace/lib/libc/fnc.devmap_get_phone
===================================================================
--- contrib/arch/uspace/lib/libc/fnc.devmap_get_phone	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libc/fnc.devmap_get_phone	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-tentative {
-	!ns.ipc_m_connect_me_to /* devmap */
-}
+(
+	tentative {
+		!ns.ipc_m_connect_me_to /* devmap */
+	}
+)
Index: contrib/arch/uspace/lib/libfs/fnc.fs_register
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.fs_register	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libfs/fnc.fs_register	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,5 +1,7 @@
-!vfs.register {
-	!vfs.ipc_m_data_write /* vfs_into_t */
-} ;
-!vfs.ipc_m_connect_to_me ;
-!vfs.ipc_m_share_in
+(
+	!vfs.register {
+		!vfs.ipc_m_data_write /* vfs_into_t */
+	} ;
+	!vfs.ipc_m_connect_to_me ;
+	!vfs.ipc_m_share_in
+)
Index: contrib/arch/uspace/lib/libfs/fnc.libfs_mount
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.libfs_mount	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libfs/fnc.libfs_mount	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,8 +1,10 @@
-?ipc_m_connection_clone ;
-?ipc_m_data_write /* mount options */ {
-	alternative (fs; tmpfs; fat; devfs) {
-		!fs.ipc_m_connect_to_me ;
-		!fs.mounted ;
-		!fs.ipc_m_data_write /* forward */
+(
+	?ipc_m_connection_clone ;
+	?ipc_m_data_write /* mount options */ {
+		alternative (fs; tmpfs; fat; devfs) {
+			!fs.ipc_m_connect_to_me ;
+			!fs.mounted ;
+			!fs.ipc_m_data_write /* forward */
+		}
 	}
-}
+)
Index: contrib/arch/uspace/lib/libfs/fnc.libfs_open_node
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.libfs_open_node	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libfs/fnc.libfs_open_node	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-NULL
+(
+	NULL
+)
Index: contrib/arch/uspace/lib/libfs/fnc.libfs_stat
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.libfs_stat	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/lib/libfs/fnc.libfs_stat	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-?fs.ipc_m_data_read
+(
+	?fs.ipc_m_data_read
+)
Index: contrib/arch/uspace/srv/bd/rd/rd.bp
===================================================================
--- contrib/arch/uspace/srv/bd/rd/rd.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/bd/rd/rd.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,2 +1,4 @@
-[/uspace/lib/libc/fnc.devmap_driver_register] ;
-[/uspace/lib/libc/fnc.devmap_device_register]
+(
+	[/uspace/lib/libc/fnc.devmap_driver_register] ;
+	[/uspace/lib/libc/fnc.devmap_device_register]
+)
Index: contrib/arch/uspace/srv/console/console.adl
===================================================================
--- contrib/arch/uspace/srv/console/console.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/srv/console/console.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,77 @@
+interface console extends service {
+		/* Read characters from console */
+		ipcarg_t read(out_copy stream data);
+		
+		/* Write characters to console */
+		ipcarg_t write(in_copy stream data);
+		
+		/* Get last event from event queue */
+		ipcarg_t get_event(out ipcarg_t type, out ipcarg_t key, out ipcarg_t mods, out ipcarg_t char);
+		
+		/* Flush output buffer */
+		ipcarg_t sync(void);
+		
+		/* Clear console */
+		ipcarg_t clear(void);
+		
+		/* Move cursor to given position */
+		ipcarg_t goto(in ipcarg_t col, in ipcarg_t row);
+		
+		/* Get console dimensions (in character cells) */
+		ipcarg_t get_size(out ipcarg_t cols, in ipcarg_t rows);
+		
+		/* Get color capabilities */
+		ipcarg_t get_color_cap(void);
+		
+		/* Set abstract text style */
+		ipcarg_t set_style(in ipcarg_t style);
+		
+		/* Set EGA-based text color */
+		ipcarg_t set_color(in ipcarg_t fb_color, in ipcarg_t bg_color, in ipcarg_t attr);
+		
+		/* Set RGB-based text color */
+		ipcarg_t set_rgb_color(in ipcarg_t fb_color, in ipcarg_t bg_color);
+		
+		/* Set cursor visibility */
+		ipcarg_t cursor_visibility(in ipcarg_t visible);
+		
+		/* Switch to kernel debugging console (if available) */
+		ipcarg_t kcon_enable(void);
+	protocol:
+		[console.bp]
+};
+
+frame ui_dispatcher {
+	provides:
+		console console;
+		event event;
+	requires:
+		[/uspace/lib/libc/requires]
+		kbd kbd;
+		fb fb;
+		ns ns;
+	protocol:
+		[/uspace/lib/libc/protocol] |
+		[console_server.bp]
+};
+
+architecture console {
+	inst ui_dispatcher ui_dispatcher;
+	inst kbd kbd;
+	inst fb fb;
+	
+	bind ui_dispatcher:kbd to kbd:kbd;
+	bind ui_dispatcher:fb to fb:fb;
+	
+	bind kbd:event to ui_dispatcher:event;
+	
+	delegate console to ui_dispatcher:console;
+	
+	[/uspace/lib/libc/subsume%ui_dispatcher]
+	[/uspace/lib/libc/subsume%kbd]
+	[/uspace/lib/libc/subsume%fb]
+	
+	subsume ui_dispatcher:ns to ns;
+	subsume kbd:ns to ns;
+	subsume fb:ns to ns;
+};
Index: contrib/arch/uspace/srv/console/console.bp
===================================================================
--- contrib/arch/uspace/srv/console/console.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/console.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,101 +1,67 @@
-!ns.IPC_CONNECT_ME_TO /* kbd */ ;
-!kbd.IPC_CONNECT_TO_ME ;
-!ns.IPC_CONNECT_ME_TO /* fb */ ;
-[/uspace/lib/libc/fnc.devmap_driver_register] ;
-!fb.FB_GET_RESOLUTION ;
+?ipc_m_connect_me_to ;
+[fnc.gcons_notify_connect] ;
 (
-	[fnc.vp_create] +
-	[fnc.vp_switch]
+	?read {
+		[fnc.cons_read]
+	} +
+	
+	?write {
+		[fnc.cons_write]
+	} +
+	
+	?sync {
+		[fnc.fb_pending_flush] ;
+		tentative {
+			!fb.flush ;
+			[fnc.curs_goto]
+		}
+	} +
+	
+	?clear {
+		tentative {
+			!fb.flush
+		}
+	} +
+	
+	?goto {
+		tentative {
+			!fb.curs_goto
+		}
+	} +
+	
+	?set_style {
+		[fnc.fb_pending_flush] ;
+		tentative {
+			[fnc.set_style]
+		}
+	} +
+	
+	?set_color {
+		[fnc.fb_pending_flush] ;
+		tentative {
+			[fnc.set_color]
+		}
+	} +
+	
+	?set_rgb_color {
+		[fnc.fb_pending_flush] ;
+		tentative {
+			[fnc.set_rgb_color]
+		}
+	} +
+	
+	?cursor_visibility {
+		[fnc.fb_pending_flush] ;
+		tentative {
+			[fnc.curs_visibility]
+		}
+	} +
+	
+	?get_event +
+	?get_size +
+	?get_color_cap +
+	?kcon_enable
 )* ;
-[fnc.make_pixmap]* ;
-[fnc.make_anim] ;
-[fnc.vp_switch] ;
-!fb.FB_FLUSH ;
-!fb.FB_GET_CSIZE ;
-!fb.FB_GET_COLOR_CAP ;
-!fb.IPC_M_SHARE_OUT ;
-[/uspace/lib/libc/fnc.devmap_device_register]* ;
-[fnc.gcons_redraw_console] ;
-[fnc.set_rgb_color] ;
-[fnc.screen_clear] ;
-[fnc.curs_goto] ;
-[fnc.curs_visibility] ;
-(
-	?console.IPC_M_CONNECT_ME_TO ;
-	[fnc.gcons_notify_connect] ;
-	(
-		?console.VFS_OUT_READ {
-			[fnc.cons_read]
-		} +
-		
-		?console.VFS_OUT_WRITE {
-			[fnc.cons_write]
-		} +
-		
-		?console.VFS_OUT_SYNC {
-			[fnc.fb_pending_flush] ;
-			(
-				(
-					!fb.FB_FLUSH ;
-					[fnc.curs_goto]
-				) +
-				NULL
-			) ;
-		} +
-		
-		?console.CONSOLE_CLEAR {
-			!fb.FB_FLUSH +
-			NULL
-		} +
-		
-		?console.CONSOLE_GOTO {
-			!fb.CURS_GOTO +
-			NULL
-		} +
-		
-		?console.CONSOLE_GET_SIZE +
-		
-		?console.CONSOLE_GET_COLOR_CAP +
-		
-		?console.CONSOLE_SET_STYLE {
-			[fnc.fb_pending_flush] ;
-			(
-				[fnc.set_style] +
-				NULL
-			)
-		} +
-		
-		?console.CONSOLE_SET_COLOR {
-			[fnc.fb_pending_flush] ;
-			(
-				[fnc.set_color] +
-				NULL
-			)
-		} +
-		
-		?console.CONSOLE_SET_RGB_COLOR {
-			[fnc.fb_pending_flush] ;
-			(
-				[fnc.set_rgb_color] +
-				NULL
-			)
-		} +
-		
-		?console.CONSOLE_CURSOR_VISIBILITY {
-			[fnc.fb_pending_flush] ;
-			(
-				[fnc.curs_visibility] +
-				NULL
-			)
-		} +
-		
-		?console.CONSOLE_GET_EVENT +
-		
-		?console.CONSOLE_KCON_ENABLE
-		
-	)* ;
-	
-	?console.IPC_M_PHONE_HUNGUP {
-		[fnc.gcons_notify_disconnect]
-	}
-)*
+?ipc_m_phone_hungup {
+	[fnc.gcons_notify_disconnect]
+}
Index: contrib/arch/uspace/srv/console/console_server.bp
===================================================================
--- contrib/arch/uspace/srv/console/console_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/srv/console/console_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,24 @@
+(
+	!ns.ipc_m_connect_me_to /* kbd */ ;
+	!kbd.ipc_m_connect_to_me ;
+	!ns.ipc_m_connect_me_to /* fb */ ;
+	[/uspace/lib/libc/fnc.devmap_driver_register] ;
+	!fb.get_resolution ;
+	(
+		[fnc.vp_create] +
+		[fnc.vp_switch]
+	)* ;
+	[fnc.make_pixmap]* ;
+	[fnc.make_anim] ;
+	[fnc.vp_switch] ;
+	!fb.flush ;
+	!fb.get_csize ;
+	!fb.get_color_cap ;
+	!fb.ipc_m_share_out ;
+	[/uspace/lib/libc/fnc.devmap_device_register]* ;
+	[fnc.gcons_redraw_console] ;
+	[fnc.set_rgb_color] ;
+	[fnc.screen_clear] ;
+	[fnc.curs_goto] ;
+	[fnc.curs_visibility]
+)
Index: contrib/arch/uspace/srv/console/fnc.cell_mark_changed
===================================================================
--- contrib/arch/uspace/srv/console/fnc.cell_mark_changed	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.cell_mark_changed	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-tentative {
-	[fnc.fb_pending_flush]
-}
+(
+	tentative {
+		[fnc.fb_pending_flush]
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.clear
===================================================================
--- contrib/arch/uspace/srv/console/fnc.clear	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.clear	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.clear
+(
+	!fb.clear
+)
Index: contrib/arch/uspace/srv/console/fnc.cons_read
===================================================================
--- contrib/arch/uspace/srv/console/fnc.cons_read	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.cons_read	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-?ipc_m_data_read
+(
+	?ipc_m_data_read
+)
Index: contrib/arch/uspace/srv/console/fnc.cons_write
===================================================================
--- contrib/arch/uspace/srv/console/fnc.cons_write	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.cons_write	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-?ipc_m_data_write ;
-[fnc.write_char]* ;
-[fnc.gcons_notify_char]
+(
+	?ipc_m_data_write ;
+	[fnc.write_char]* ;
+	[fnc.gcons_notify_char]
+)
Index: contrib/arch/uspace/srv/console/fnc.curs_goto
===================================================================
--- contrib/arch/uspace/srv/console/fnc.curs_goto	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.curs_goto	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.cursor_goto
+(
+	!fb.cursor_goto
+)
Index: contrib/arch/uspace/srv/console/fnc.curs_visibility
===================================================================
--- contrib/arch/uspace/srv/console/fnc.curs_visibility	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.curs_visibility	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.cursor_visibility
+(
+	!fb.cursor_visibility
+)
Index: contrib/arch/uspace/srv/console/fnc.draw_pixmap
===================================================================
--- contrib/arch/uspace/srv/console/fnc.draw_pixmap	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.draw_pixmap	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-!fb.prepare_shm ;
-!fb.ipc_m_share_out ;
-!fb.draw_ppm ;
-!fb.drop_shm
+(
+	!fb.prepare_shm ;
+	!fb.ipc_m_share_out ;
+	!fb.draw_ppm ;
+	!fb.drop_shm
+)
Index: contrib/arch/uspace/srv/console/fnc.fb_pending_flush
===================================================================
--- contrib/arch/uspace/srv/console/fnc.fb_pending_flush	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.fb_pending_flush	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.draw_text_data
+(
+	!fb.draw_text_data
+)
Index: contrib/arch/uspace/srv/console/fnc.gcons_notify_char
===================================================================
--- contrib/arch/uspace/srv/console/fnc.gcons_notify_char	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.gcons_notify_char	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-tentative {
-	[fnc.redraw_state] ;
-	[fnc.vp_switch]
-}
+(
+	tentative {
+		[fnc.redraw_state] ;
+		[fnc.vp_switch]
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.gcons_notify_connect
===================================================================
--- contrib/arch/uspace/srv/console/fnc.gcons_notify_connect	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.gcons_notify_connect	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-tentative {
-	[fnc.redraw_state] ;
-	[fnc.vp_switch]
-}
+(
+	tentative {
+		[fnc.redraw_state] ;
+		[fnc.vp_switch]
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.gcons_notify_disconnect
===================================================================
--- contrib/arch/uspace/srv/console/fnc.gcons_notify_disconnect	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.gcons_notify_disconnect	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-tentative {
-	[fnc.redraw_state] ;
-	[fnc.vp_switch]
-}
+(
+	tentative {
+		[fnc.redraw_state] ;
+		[fnc.vp_switch]
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.gcons_redraw_console
===================================================================
--- contrib/arch/uspace/srv/console/fnc.gcons_redraw_console	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.gcons_redraw_console	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,9 +1,11 @@
-tentative {
-	[fnc.vp_switch] ;
-	[fnc.set_rgb_color] ;
-	[fnc.clear] ;
-	[fnc.draw_pixmap] ;
-	[fnc.draw_pixmap] ;
-	[fnc.redraw_state]* ;
-	[fnc.vp_switch]
-}
+(
+	tentative {
+		[fnc.vp_switch] ;
+		[fnc.set_rgb_color] ;
+		[fnc.clear] ;
+		[fnc.draw_pixmap] ;
+		[fnc.draw_pixmap] ;
+		[fnc.redraw_state]* ;
+		[fnc.vp_switch]
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.make_anim
===================================================================
--- contrib/arch/uspace/srv/console/fnc.make_anim	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.make_anim	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-!fb.anim_create ;
-[fnc.make_pixmap]* ;
-!fb.anim_add_pixmap ;
-!fb.anim_start
+(
+	!fb.anim_create ;
+	[fnc.make_pixmap]* ;
+	!fb.anim_add_pixmap ;
+	!fb.anim_start
+)
Index: contrib/arch/uspace/srv/console/fnc.make_pixmap
===================================================================
--- contrib/arch/uspace/srv/console/fnc.make_pixmap	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.make_pixmap	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,6 @@
-!fb.prepare_shm ;
-!fb.ipc_m_share_out ;
-!fb.shm2pixmap ;
-!fb.drop_shm
+(
+	!fb.prepare_shm ;
+	!fb.ipc_m_share_out ;
+	!fb.shm2pixmap ;
+	!fb.drop_shm
+)
Index: contrib/arch/uspace/srv/console/fnc.redraw_state
===================================================================
--- contrib/arch/uspace/srv/console/fnc.redraw_state	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.redraw_state	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,7 +1,9 @@
-[fnc.vp_switch] ;
-tentative {
-	!fb.FB_VP_DRAW_PIXMAP
-} ;
-tentative {
-	!fb.FB_PUTCHAR*
-}
+(
+	[fnc.vp_switch] ;
+	tentative {
+		!fb.vp_draw_pixmap
+	} ;
+	tentative {
+		!fb.putchar*
+	}
+)
Index: contrib/arch/uspace/srv/console/fnc.screen_clear
===================================================================
--- contrib/arch/uspace/srv/console/fnc.screen_clear	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.screen_clear	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.clear
+(
+	!fb.clear
+)
Index: contrib/arch/uspace/srv/console/fnc.set_color
===================================================================
--- contrib/arch/uspace/srv/console/fnc.set_color	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.set_color	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.set_color
+(
+	!fb.set_color
+)
Index: contrib/arch/uspace/srv/console/fnc.set_rgb_color
===================================================================
--- contrib/arch/uspace/srv/console/fnc.set_rgb_color	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.set_rgb_color	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.set_rgb_color
+(
+	!fb.set_rgb_color
+)
Index: contrib/arch/uspace/srv/console/fnc.set_style
===================================================================
--- contrib/arch/uspace/srv/console/fnc.set_style	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.set_style	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.set_style
+(
+	!fb.set_style
+)
Index: contrib/arch/uspace/srv/console/fnc.vp_create
===================================================================
--- contrib/arch/uspace/srv/console/fnc.vp_create	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.vp_create	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.viewport_create
+(
+	!fb.viewport_create
+)
Index: contrib/arch/uspace/srv/console/fnc.vp_switch
===================================================================
--- contrib/arch/uspace/srv/console/fnc.vp_switch	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.vp_switch	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fb.viewport_switch
+(
+	!fb.viewport_switch
+)
Index: contrib/arch/uspace/srv/console/fnc.write_char
===================================================================
--- contrib/arch/uspace/srv/console/fnc.write_char	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/console/fnc.write_char	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,13 +1,15 @@
 (
-	[fnc.fb_pending_flush] +
-	[fnc.cell_mark_changed]
-) ;
-tentative {
-	[fnc.fb_pending_flush] ;
+	(
+		[fnc.fb_pending_flush] +
+		[fnc.cell_mark_changed]
+	) ;
 	tentative {
-		!fb.scroll +
+		[fnc.fb_pending_flush] ;
+		tentative {
+			!fb.scroll
+		}
+	} ;
+	tentative {
+		[fnc.curs_goto]
 	}
-} ;
-tentative {
-	[fnc.curs_goto]
-}
+)
Index: contrib/arch/uspace/srv/devmap/devmap.adl
===================================================================
--- contrib/arch/uspace/srv/devmap/devmap.adl	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/devmap/devmap.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -62,5 +62,7 @@
 	requires:
 		[/uspace/lib/libc/requires]
+		ns ns;
 	protocol:
+		[/uspace/lib/libc/protocol] |
 		[devmap_server.bp]
 };
Index: contrib/arch/uspace/srv/devmap/devmap_client.bp
===================================================================
--- contrib/arch/uspace/srv/devmap/devmap_client.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/devmap/devmap_client.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,5 +1,7 @@
 ?ipc_m_connect_me_to ;
 
-!service.ipc_m_connect_me_to /* forward */
+alternative (service; rd; console) {
+	!service.ipc_m_connect_me_to /* forward */
+}
 +
 (
Index: contrib/arch/uspace/srv/devmap/devmap_server.bp
===================================================================
--- contrib/arch/uspace/srv/devmap/devmap_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/devmap/devmap_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!ns.ipc_m_connect_to_me /* devmap */
+(
+	!ns.ipc_m_connect_to_me /* devmap */
+)
Index: contrib/arch/uspace/srv/fb/fb.adl
===================================================================
--- contrib/arch/uspace/srv/fb/fb.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/srv/fb/fb.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,110 @@
+interface fb extends service {
+		/* Get screen resolution */
+		ipcarg_t get_resolution(out ipcarg_t width, out ipcarg_t height);
+		
+		/* Yield screen */
+		ipcarg_t screen_yield(void);
+		
+		/* Reclaim screen */
+		ipcarg_t screen_reclaim(void);
+		
+		/* Set mouse cursor position on screen */
+		ipcarg_t pointer_move(in ipcarg_t x, in ipcarg_t y);
+		
+		/* Create new viewport */
+		ipcarg_t viewport_create(in ipcarg_t origin, in ipcarg_t dimension);
+		
+		/* Get viewport size in character cells */
+		ipcarg_t get_csize(out ipcarg_t width, out ipcarg_t height);
+		
+		/* Clear viewport character buffer */
+		ipcarg_t clear(void);
+		
+		/* Scroll viewport character buffer */
+		ipcarg_t scroll(in ipcarg_t lines);
+		
+		/* Set active viewport */
+		ipcarg_t viewport_switch(in ipcarg_t index);
+		
+		/* Delete viewport */
+		ipcarg_t viewport_delete(in ipcarg_t index);
+		
+		/* Get color capabilities of the screen */
+		ipcarg_t get_color_cap(void);
+		
+		/* Set abstract text style */
+		ipcarg_t set_style(in ipcarg_t style);
+		
+		/* Set EGA-based text color */
+		ipcarg_t set_color(in ipcarg_t fg_color, in ipcarg_t bg_color, in ipcarg_t atrr);
+		
+		/* Set RGB-based text color */
+		ipcarg_t set_rgb_color(in ipcarg_t fg_color, in ipcarg_t bg_color);
+		
+		/* Put a character to a given position in viewport character buffer */
+		ipcarg_t putchar(in ipcarg_t char, in ipcarg_t col, in ipcarg_t row);
+		
+		/* Set character cursor visibility in viewport */
+		ipcarg_t cursor_visibility(in ipcarg_t visible);
+		
+		/* Set character cursor position in viewport */
+		ipcarg_t cursor_goto(in ipcarg_t col, in ipcarg_t row);
+		
+		/* Prepare memory sharing of bitmaps */
+		ipcarg_t prepare_shm(in ipcarg_t as_area_base);
+		
+		/* Share bitmap or text data */
+		ipcarg_t ipc_m_share_out(in ipcarg_t as_area_base, in ipcarg_t as_area_size, out ipcarg_t dst_as_area);
+		
+		/* Drop memory sharing */
+		ipcarg_t drop_shm(void);
+		
+		/* Draw PPM data from shared memory to viewport */
+		ipcarg_t draw_ppm(in ipcarg_t x, in ipcarg_t y);
+		
+		/* Put characters from shared memory to viewport */
+		ipcarg_t draw_text_data(in ipcarg_t x, in ipcarg_t y, in ipcarg_t width, in ipcarg_t height);
+		
+		/* Convert PPM data from shared memory to pixmap */
+		ipcarg_t shm2pixmap(void);
+		
+		/* Save viewport contents to a pixmap */
+		ipcarg_t vp2pixmap(in ipcarg_t vp_index);
+		
+		/* Draw pixmap to viewport */
+		ipcarg_t vp_draw_pixmap(in ipcarg_t vp_index, in ipcarg_t pm_index);
+		
+		/* Discard pixmap */
+		ipcarg_t drop_pixmap(in ipcarg_t pm_index);
+		
+		/* Create new (empty) animation for a viewport */
+		ipcarg_t anim_create(in ipcarg_t vp_index);
+		
+		/* Append a pixmap to an animation */
+		ipcarg_t anim_addpixmap(in ipcarg_t anim_index, in ipcarg_t pm_index);
+		
+		/* Change a viewport associated with an animation */
+		ipcarg_t anim_chgvp(in ipcarg_t anim_index, in ipcarg_t vp_index);
+		
+		/* Start animation playback */
+		ipcarg_t anim_start(in ipcarg_t anim_index);
+		
+		/* Stop animation playback */
+		ipcarg_t anim_stop(in ipcarg_t anim_index);
+		
+		/* Delete animation */
+		ipcarg_t anim_drop(in ipcarg_t anim_index);
+	protocol:
+		[fb.bp]
+};
+
+frame fb {
+	provides:
+		fb fb;
+	requires:
+		[/uspace/lib/libc/requires]
+		ns ns;
+	protocol:
+		[/uspace/lib/libc/protocol] |
+		[fb_server.bp]
+};
Index: contrib/arch/uspace/srv/fb/fb.bp
===================================================================
--- contrib/arch/uspace/srv/fb/fb.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/fb/fb.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,74 +1,39 @@
-!ns.IPC_M_CONNECT_TO_ME ;
+?ipc_m_connect_me_to ;
 (
-	?fb.IPC_M_CONNECT_ME_TO ;
 	(
-		?fb.IPC_M_SHARE_OUT +
-		
-		(
-			?fb.FB_PREPARE_SHM ;
-			?fb.IPC_M_AS_AREA_SEND ;
-			?fb.FB_DRAW_PPM ;
-			?fb.FB_DROP_SHM
-		) +
-		
-		(
-			?fb.IPC_M_AS_AREA_SEND ;
-			?fb.FB_DRAW_TEXT_DATA
-		) +
-		
-		?fb.FB_SHM2PIXMAP +
-		
-		?fb.FB_VP_DRAW_PIXMAP +
-		
-		?fb.FB_VP2PIXMAP +
-		
-		?fb.FB_DROP_PIXMAP +
-		
-		?fb.FB_ANIM_CREATE +
-		
-		?fb.FB_ANIM_DROP +
-		
-		?fb.FB_ANIM_ADDPIXMAP +
-		
-		?fb.FB_ANIM_CHGVP +
-		
-		?fb.FB_ANIM_START +
-		
-		?fb.FB_ANIM_STOP +
-		
-		?fb.FB_PUTCHAR +
-		
-		?fb.FB_CLEAR +
-		
-		?fb.FB_CURSOR_GOTO +
-		
-		?fb.FB_CURSOR_VISIBILITY +
-		
-		?fb.FB_GET_CSIZE +
-		
-		?fb.FB_GET_COLOR_CAP +
-		
-		?fb.FB_SCROLL +
-		
-		?fb.FB_VIEWPORT_SWITCH +
-		
-		?fb.FB_VIEWPORT_CREATE +
-		
-		?fb.FB_VIEWPORT_DELETE +
-		
-		?fb.FB_SET_STYLE +
-		
-		?fb.FB_SET_COLOR +
-		
-		?fb.FB_SET_RGB_COLOR +
-		
-		?fb.FB_GET_RESOLUTION +
-		
-		?fb.FB_POINTER_MOVE +
-		
-		?fb.FB_SCREEN_YIELD +
-		
-		?fb.FB_SCREEN_RECLAIM
-	)* ;
-	?fb.IPC_M_PHONE_HUNGUP
-)*
+		?prepare_shm ;
+		?ipc_m_share_out
+	) +
+	?ipc_m_share_out +
+	?drop_shm +
+	?get_resolution +
+	?screen_yield +
+	?screen_reclaim +
+	?pointer_move +
+	?viewport_create +
+	?get_csize +
+	?clear +
+	?scroll +
+	?viewport_switch +
+	?viewport_delete +
+	?get_color_cap +
+	?set_style +
+	?set_color +
+	?set_rgb_color +
+	?putchar +
+	?cursor_visibility +
+	?cursor_goto +
+	?draw_ppm +
+	?draw_text_data +
+	?shm2pixmap +
+	?vp2pixmap +
+	?vp_draw_pixmap +
+	?drop_pixmap +
+	?anim_create +
+	?anim_addpixmap +
+	?anim_chgvp +
+	?anim_start +
+	?anim_stop +
+	?anim_drop
+)* ;
+?ipc_m_phone_hungup
Index: contrib/arch/uspace/srv/fb/fb_server.bp
===================================================================
--- contrib/arch/uspace/srv/fb/fb_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/srv/fb/fb_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,3 @@
+(
+	!ns.ipc_m_connect_to_me /* fb */
+)
Index: contrib/arch/uspace/srv/fs/devfs/devfs_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/devfs/devfs_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/fs/devfs/devfs_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-[/uspace/lib/libc/fnc.devmap_get_phone] ;
-!ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register]
+(
+	[/uspace/lib/libc/fnc.devmap_get_phone] ;
+	!ns.ipc_m_connect_me_to /* vfs */ ;
+	[/uspace/lib/libfs/fnc.fs_register]
+)
Index: contrib/arch/uspace/srv/fs/fat/fat_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/fat/fat_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/fs/fat/fat_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,2 +1,4 @@
-!ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register]
+(
+	!ns.ipc_m_connect_me_to /* vfs */ ;
+	[/uspace/lib/libfs/fnc.fs_register]
+)
Index: contrib/arch/uspace/srv/fs/tmpfs/fnc.tmpfs_restore
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/fnc.tmpfs_restore	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
+++ contrib/arch/uspace/srv/fs/tmpfs/fnc.tmpfs_restore	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -0,0 +1,7 @@
+(
+	[/uspace/lib/libblock/fnc.block_init%rd] ;
+	tentative {
+		[/uspace/lib/libblock/fnc.block_seqread%rd]* ;
+		[/uspace/lib/libblock/fnc.block_fini%rd]
+	}
+)
Index: contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -3,5 +3,8 @@
 	(
 		?mounted {
-			?ipc_m_data_write /* mount options */
+			?ipc_m_data_write /* mount options */ ;
+			tentative {
+				[fnc.tmpfs_restore]
+			}
 		} +
 		
Index: contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,2 +1,4 @@
-!ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register]
+(
+	!ns.ipc_m_connect_me_to /* vfs */ ;
+	[/uspace/lib/libfs/fnc.fs_register]
+)
Index: contrib/arch/uspace/srv/kbd/event.bp
===================================================================
--- contrib/arch/uspace/srv/kbd/event.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/kbd/event.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-?event
+?ipc_m_connect_me_to ;
+?event* ;
+?ipc_m_phone_hungup
Index: contrib/arch/uspace/srv/kbd/kbd_server.bp
===================================================================
--- contrib/arch/uspace/srv/kbd/kbd_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/kbd/kbd_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,4 +1,7 @@
-tentative {
-	!ns.ipc_m_connect_me_to /* cir */
-} ;
-!ns.ipc_m_connect_to_me /* kbd */
+(
+	tentative {
+		!ns.ipc_m_connect_me_to /* cir */
+	} ;
+	!ns.ipc_m_connect_to_me /* kbd */ ;
+	!event.event*
+)
Index: contrib/arch/uspace/srv/loader/loader_server.bp
===================================================================
--- contrib/arch/uspace/srv/loader/loader_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/loader/loader_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,2 +1,4 @@
-!ns.id_intro ;
-!ns.ipc_m_connect_to_me /* loader */
+(
+	!ns.id_intro ;
+	!ns.ipc_m_connect_to_me /* loader */
+)
Index: contrib/arch/uspace/srv/ns/ns.bp
===================================================================
--- contrib/arch/uspace/srv/ns/ns.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/ns/ns.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -11,5 +11,7 @@
 	?ipc_m_connect_me_to {
 		tentative {
-			!service.ipc_m_connect_me_to /* forward */
+			alternative (service; kbd; fb; console; vfs; devmap) {
+				!service.ipc_m_connect_me_to /* forward */
+			}
 		}
 	} +
Index: contrib/arch/uspace/srv/pci/pci_server.bp
===================================================================
--- contrib/arch/uspace/srv/pci/pci_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/pci/pci_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!ns.ipc_m_connect_to_me /* pci */
+(
+	!ns.ipc_m_connect_to_me /* pci */
+)
Index: contrib/arch/uspace/srv/vfs/fnc.vfs_grab_phone
===================================================================
--- contrib/arch/uspace/srv/vfs/fnc.vfs_grab_phone	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/fnc.vfs_grab_phone	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fs.ipc_m_connect_me_to
+(
+	!fs.ipc_m_connect_me_to
+)
Index: contrib/arch/uspace/srv/vfs/fnc.vfs_lookup_internal
===================================================================
--- contrib/arch/uspace/srv/vfs/fnc.vfs_lookup_internal	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/fnc.vfs_lookup_internal	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-[fnc.vfs_grab_phone] ;
-!fs.lookup ;
-[fnc.vfs_release_phone]
+(
+	[fnc.vfs_grab_phone] ;
+	!fs.lookup ;
+	[fnc.vfs_release_phone]
+)
Index: contrib/arch/uspace/srv/vfs/fnc.vfs_open_node_internal
===================================================================
--- contrib/arch/uspace/srv/vfs/fnc.vfs_open_node_internal	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/fnc.vfs_open_node_internal	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,3 +1,5 @@
-[fnc.vfs_grab_phone] ;
-!fs.open_node ;
-[fnc.vfs_release_phone]
+(
+	[fnc.vfs_grab_phone] ;
+	!fs.open_node ;
+	[fnc.vfs_release_phone]
+)
Index: contrib/arch/uspace/srv/vfs/fnc.vfs_release_phone
===================================================================
--- contrib/arch/uspace/srv/vfs/fnc.vfs_release_phone	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/fnc.vfs_release_phone	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!fs.ipc_m_phone_hungup
+(
+	!fs.ipc_m_phone_hungup
+)
Index: contrib/arch/uspace/srv/vfs/vfs.adl
===================================================================
--- contrib/arch/uspace/srv/vfs/vfs.adl	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/vfs.adl	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -68,5 +68,5 @@
 		
 		/* Write data to file */
-		ipcarg_t write(in ipcarg_t dev_handle, in ipcarg_t fs_index, in ipcarg_t offset, out_copy stream data);
+		ipcarg_t write(in ipcarg_t dev_handle, in ipcarg_t fs_index, in ipcarg_t offset, in_copy stream data);
 		
 		/* Truncate file */
@@ -83,5 +83,5 @@
 };
 
-frame dispatcher {
+frame io_dispatcher {
 	provides:
 		vfs vfs;
@@ -98,25 +98,25 @@
 
 architecture vfs {
-	inst dispatcher dispatcher;
+	inst io_dispatcher io_dispatcher;
 	inst tmpfs tmpfs;
 	inst fat fat;
 	inst devfs devfs;
 	
-	bind dispatcher:tmpfs to tmpfs:tmpfs;
-	bind dispatcher:fat to fat:fat;
-	bind dispatcher:devfs to devfs:devfs;
+	bind io_dispatcher:tmpfs to tmpfs:tmpfs;
+	bind io_dispatcher:fat to fat:fat;
+	bind io_dispatcher:devfs to devfs:devfs;
 	
-	bind tmpfs:vfs to dispatcher:vfs;
-	bind fat:vfs to dispatcher:vfs;
-	bind devfs:vfs to dispatcher:vfs;
+	bind tmpfs:vfs to io_dispatcher:vfs;
+	bind fat:vfs to io_dispatcher:vfs;
+	bind devfs:vfs to io_dispatcher:vfs;
 	
-	delegate vfs to dispatcher:vfs;
+	delegate vfs to io_dispatcher:vfs;
 	
-	[/uspace/lib/libc/subsume%dispatcher]
+	[/uspace/lib/libc/subsume%io_dispatcher]
 	[/uspace/lib/libc/subsume%tmpfs]
 	[/uspace/lib/libc/subsume%fat]
 	[/uspace/lib/libc/subsume%devfs]
 	
-	subsume dispatcher:ns to ns;
+	subsume io_dispatcher:ns to ns;
 	subsume tmpfs:ns to ns;
 	subsume fat:ns to ns;
Index: contrib/arch/uspace/srv/vfs/vfs_server.bp
===================================================================
--- contrib/arch/uspace/srv/vfs/vfs_server.bp	(revision 41eca316f13f8f97122806e738e9e98dfa0f564e)
+++ contrib/arch/uspace/srv/vfs/vfs_server.bp	(revision 810860a3b03c68519aa94b96cb8ea5adb53c0a19)
@@ -1,1 +1,3 @@
-!ns.ipc_m_connect_to_me /* vfs */
+(
+	!ns.ipc_m_connect_to_me /* vfs */
+)
