Index: contrib/arch/HelenOS.adl
===================================================================
--- contrib/arch/HelenOS.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/HelenOS.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -34,5 +34,5 @@
 	
 	bind vfs:ns to ns:ns;
-	bind vfs:bd to bd:bd;
+	bind vfs:rd to bd:rd;
 	bind vfs:devmap_client to devmap:devmap_client;
 	bind vfs:device to console:console;
Index: contrib/arch/kernel/kernel.adl
===================================================================
--- contrib/arch/kernel/kernel.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/kernel/kernel.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -3,5 +3,5 @@
  *****************************/
 
-interface kernel_klog {
+interface sys_klog {
 		/* Print using kernel facility */
 		unative_t sys_klog(int fd, const void *buf, size_t size);
@@ -10,5 +10,5 @@
 };
 
-interface kernel_console {
+interface sys_console {
 		/* Enable kernel console */
 		unative_t sys_debug_enable_console(void);
@@ -21,5 +21,5 @@
 };
 
-interface kernel_tls {
+interface sys_tls {
 		/* Set thread-local storage pointer (on architectures where kernel mode is required) */
 		unative_t sys_tls_set(unative_t addr);
@@ -28,5 +28,5 @@
 };
 
-interface kernel_thread {
+interface sys_thread {
 		/* Create new thread */
 		unative_t sys_thread_create(uspace_arg_t *uspace_uarg, char *uspace_name, size_t name_len, thread_id_t *uspace_thread_id);
@@ -45,5 +45,5 @@
 };
 
-interface kernel_task {
+interface sys_task {
 		/* Set name fo the current task */
 		unative_t sys_task_set_name(const char *uspace_name, size_t name_len);
@@ -56,5 +56,5 @@
 };
 
-interface kernel_program {
+interface sys_program {
 		/* Spawn a new instance of clonable loader service */
 		unative_t sys_program_spawn_loader(char *uspace_name, size_t name_len);
@@ -63,5 +63,5 @@
 };
 
-interface kernel_futex {
+interface sys_futex {
 		/* Sleep in a futex wait queue */
 		unative_t sys_futex_sleep_timeout(uintptr_t uaddr, uint32_t usec, int flags);
@@ -74,5 +74,5 @@
 };
 
-interface kernel_smc {
+interface sys_smc {
 		/* Enforce self-modifying code cache coherency */
 		unative_t sys_smc_coherence(uintptr_t va, size_t size);
@@ -81,5 +81,5 @@
 };
 
-interface kernel_as {
+interface sys_as {
 		/* Create new address space area */
 		unative_t sys_as_area_create(uintptr_t address, size_t size, int flags);
@@ -100,5 +100,5 @@
 };
 
-interface kernel_ipc {
+interface sys_ipc {
 		/* Fast synchronous IPC call */
 		unative_t sys_ipc_call_sync_fast(unative_t phoneid, unative_t method, unative_t arg1, unative_t arg2, unative_t arg3, ipc_data_t *data);
@@ -147,5 +147,5 @@
 };
 
-interface kernel_event {
+interface sys_event {
 		/* Subscribe to kernel event notifications */
 		unative_t sys_event_subscribe(unative_t evno, unative_t method);
@@ -154,5 +154,5 @@
 };
 
-interface kernel_cap {
+interface sys_cap {
 		/* Grant capabilities to a task */
 		unative_t sys_cap_grant(sysarg64_t *uspace_taskid_arg, cap_t caps);
@@ -165,5 +165,5 @@
 };
 
-interface kernel_ddi {
+interface sys_ddi {
 		/* Enable access I/O address space for the current task */
 		unative_t sys_enable_iospace(ddi_ioarg_t *uspace_io_arg);
@@ -192,5 +192,5 @@
 };
 
-interface kernel_sysinfo {
+interface sys_sysinfo {
 		/* Check for sysinfo key validity */
 		unative_t sys_sysinfo_valid(unative_t ptr, unative_t len);
@@ -203,5 +203,5 @@
 };
 
-interface kernel_debug {
+interface sys_debug {
 		/* Connect to the kernel debugging answerbox of a given task */
 		unative_t sys_ipc_connect_kbox(sysarg64_t *uspace_taskid_arg);
@@ -215,53 +215,53 @@
  *****************************************************/
 
-frame kernel_console {
-	provides:
-		kernel_klog kernel_klog;
-		kernel_console kernel_console;
-};
-
-frame kernel_proc {
-	provides:
-		kernel_tls kernel_tls;
-		kernel_thread kernel_thread;
-		kernel_task kernel_task;
-		kernel_program kernel_program;
-};
-
-frame kernel_synch {
-	provides:
-		kernel_futex kernel_futex;
-		kernel_smc kernel_smc;
-};
-
-frame kernel_mm {
-	provides:
-		kernel_as kernel_as;
-};
-
-frame kernel_ipc {
-	provides:
-		kernel_ipc kernel_ipc;
-		kernel_event kernel_event;
-};
-
-frame kernel_security {
-	provides:
-		kernel_cap kernel_cap;
-};
-
-frame kernel_ddi {
-	provides:
-		kernel_ddi kernel_ddi;
-};
-
-frame kernel_sysinfo {
-	provides:
-		kernel_sysinfo kernel_sysinfo;
-};
-
-frame kernel_debug {
-	provides:
-		kernel_debug kernel_debug;
+frame sys_console {
+	provides:
+		sys_klog sys_klog;
+		sys_console sys_console;
+};
+
+frame sys_proc {
+	provides:
+		sys_tls sys_tls;
+		sys_thread sys_thread;
+		sys_task sys_task;
+		sys_program sys_program;
+};
+
+frame sys_synch {
+	provides:
+		sys_futex sys_futex;
+		sys_smc sys_smc;
+};
+
+frame sys_mm {
+	provides:
+		sys_as sys_as;
+};
+
+frame sys_ipc {
+	provides:
+		sys_ipc sys_ipc;
+		sys_event sys_event;
+};
+
+frame sys_security {
+	provides:
+		sys_cap sys_cap;
+};
+
+frame sys_ddi {
+	provides:
+		sys_ddi sys_ddi;
+};
+
+frame sys_sysinfo {
+	provides:
+		sys_sysinfo sys_sysinfo;
+};
+
+frame sys_debug {
+	provides:
+		sys_debug sys_debug;
 };
 
@@ -272,28 +272,28 @@
 
 architecture kernel {
-	inst kernel_console kernel_console;
-	inst kernel_proc kernel_proc;
-	inst kernel_synch kernel_synch;
-	inst kernel_mm kernel_mm;
-	inst kernel_ipc kernel_ipc;
-	inst kernel_security kernel_security;
-	inst kernel_ddi kernel_ddi;
-	inst kernel_sysinfo kernel_sysinfo;
-	inst kernel_debug kernel_debug;
+	inst sys_console sys_console;
+	inst sys_proc sys_proc;
+	inst sys_synch sys_synch;
+	inst sys_mm sys_mm;
+	inst sys_ipc sys_ipc;
+	inst sys_security sys_security;
+	inst sys_ddi sys_ddi;
+	inst sys_sysinfo sys_sysinfo;
+	inst sys_debug sys_debug;
 	
-	delegate kernel_klog to kernel_console:kernel_klog;
-	delegate kernel_console to kernel_console:kernel_console;
-	delegate kernel_tls to kernel_proc:kernel_tls;
-	delegate kernel_thread to kernel_proc:kernel_thread;
-	delegate kernel_task to kernel_proc:kernel_task;
-	delegate kernel_program to kernel_proc:kernel_program;
-	delegate kernel_futex to kernel_synch:kernel_futex;
-	delegate kernel_smc to kernel_synch:kernel_smc;
-	delegate kernel_as to kernel_mm:kernel_as;
-	delegate kernel_ipc to kernel_ipc:kernel_sys;
-	delegate kernel_event to kernel_ipc:kernel_event;
-	delegate kernel_cap to kernel_security:kernel_cap;
-	delegate kernel_ddi to kernel_ddi:kernel_ddi;
-	delegate kernel_sysinfo to kernel_sysinfo:kernel_sysinfo;
-	delegate kernel_debug to kernel_debug:kernel_debug;
-};
+	delegate sys_klog to sys_console:sys_klog;
+	delegate sys_console to sys_console:sys_console;
+	delegate sys_tls to sys_proc:sys_tls;
+	delegate sys_thread to sys_proc:sys_thread;
+	delegate sys_task to sys_proc:sys_task;
+	delegate sys_program to sys_proc:sys_program;
+	delegate sys_futex to sys_synch:sys_futex;
+	delegate sys_smc to sys_synch:sys_smc;
+	delegate sys_as to sys_mm:sys_as;
+	delegate sys_ipc to sys_ipc:sys_ipc;
+	delegate sys_event to sys_ipc:sys_event;
+	delegate sys_cap to sys_security:sys_cap;
+	delegate sys_ddi to sys_ddi:sys_ddi;
+	delegate sys_sysinfo to sys_sysinfo:sys_sysinfo;
+	delegate sys_debug to sys_debug:sys_debug;
+};
Index: contrib/arch/uspace/app/klog/klog.adl
===================================================================
--- contrib/arch/uspace/app/klog/klog.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/app/klog/klog.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -4,5 +4,5 @@
 		[/uspace/lib/libc/requires]
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[klog.bp]
 };
Index: contrib/arch/uspace/lib/libc/bind
===================================================================
--- contrib/arch/uspace/lib/libc/bind	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libc/bind	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,16 +1,16 @@
 /* Bind %% to kernel interfaces */
-bind %%:kernel_klog to kernel:kernel_klog;
-bind %%:kernel_console to kernel:kernel_console;
-bind %%:kernel_tls to kernel:kernel_tls;
-bind %%:kernel_thread to kernel:kernel_thread;
-bind %%:kernel_task to kernel:kernel_task;
-bind %%:kernel_program to kernel:kernel_program;
-bind %%:kernel_futex to kernel:kernel_futex;
-bind %%:kernel_smc to kernel:kernel_smc;
-bind %%:kernel_as to kernel:kernel_as;
-bind %%:kernel_ipc to kernel:kernel_sys;
-bind %%:kernel_event to kernel:kernel_event;
-bind %%:kernel_cap to kernel:kernel_cap;
-bind %%:kernel_ddi to kernel:kernel_ddi;
-bind %%:kernel_sysinfo to kernel:kernel_sysinfo;
-bind %%:kernel_debug to kernel:kernel_debug;
+bind %%:sys_klog to kernel:sys_klog;
+bind %%:sys_console to kernel:sys_console;
+bind %%:sys_tls to kernel:sys_tls;
+bind %%:sys_thread to kernel:sys_thread;
+bind %%:sys_task to kernel:sys_task;
+bind %%:sys_program to kernel:sys_program;
+bind %%:sys_futex to kernel:sys_futex;
+bind %%:sys_smc to kernel:sys_smc;
+bind %%:sys_as to kernel:sys_as;
+bind %%:sys_ipc to kernel:sys_ipc;
+bind %%:sys_event to kernel:sys_event;
+bind %%:sys_cap to kernel:sys_cap;
+bind %%:sys_ddi to kernel:sys_ddi;
+bind %%:sys_sysinfo to kernel:sys_sysinfo;
+bind %%:sys_debug to kernel:sys_debug;
Index: contrib/arch/uspace/lib/libc/protocol
===================================================================
--- contrib/arch/uspace/lib/libc/protocol	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libc/protocol	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,41 +1,41 @@
 /* Protocol according to which libc uses kernel syscalls */
 (
-	!kernel_klog.sys_klog +
-	!kernel_tls.sys_tls_set +
-	!kernel_thread.sys_thread_create +
-	!kernel_thread.sys_thread_get_id +
-	!kernel_thread.sys_thread_exit +
-	!kernel_task.sys_task_set_name +
-	!kernel_task.sys_task_get_id +
-	!kernel_program.sys_program_spawn_loader +
-	!kernel_futex.sys_futex_sleep_timeout +
-	!kernel_futex.sys_futex_wakeup +
-	!kernel_smc.sys_smc_coherence +
-	!kernel_as.sys_as_area_create +
-	!kernel_as.sys_as_area_resize +
-	!kernel_as.sys_as_area_change_flags +
-	!kernel_as.sys_as_area_destroy +
-	!kernel_ipc.sys_ipc_call_sync_fast +
-	!kernel_ipc.sys_ipc_call_sync_slow +
-	!kernel_ipc.sys_ipc_call_async_fast +
-	!kernel_ipc.sys_ipc_call_async_slow +
-	!kernel_ipc.sys_ipc_forward_fast +
-	!kernel_ipc.sys_ipc_forward_slow +
-	!kernel_ipc.sys_ipc_answer_fast +
-	!kernel_ipc.sys_ipc_answer_slow +
-	!kernel_ipc.sys_ipc_hangup +
-	!kernel_ipc.sys_ipc_wait_for_call +
-	!kernel_ipc.sys_ipc_poke +
-	!kernel_event.sys_event_subscribe +
-	!kernel_cap.sys_cap_grant +
-	!kernel_cap.sys_cap_rewoke +
-	!kernel_ddi.sys_enable_iospace +
-	!kernel_ddi.sys_physmem_map +
-	!kernel_ddi.sys_device_assign_devno +
-	!kernel_ddi.sys_preempt_control +
-	!kernel_ddi.sys_ipc_register_irq +
-	!kernel_ddi.sys_ipc_unregister_irq +
-	!kernel_sysinfo.sys_sysinfo_valid +
-	!kernel_sysinfo.sys_sysinfo_value +
-	!kernel_debug.sys_ipc_connect_kbox
+	!sys_klog.sys_klog +
+	!sys_tls.sys_tls_set +
+	!sys_thread.sys_thread_create +
+	!sys_thread.sys_thread_get_id +
+	!sys_thread.sys_thread_exit +
+	!sys_task.sys_task_set_name +
+	!sys_task.sys_task_get_id +
+	!sys_program.sys_program_spawn_loader +
+	!sys_futex.sys_futex_sleep_timeout +
+	!sys_futex.sys_futex_wakeup +
+	!sys_smc.sys_smc_coherence +
+	!sys_as.sys_as_area_create +
+	!sys_as.sys_as_area_resize +
+	!sys_as.sys_as_area_change_flags +
+	!sys_as.sys_as_area_destroy +
+	!sys_ipc.sys_ipc_call_sync_fast +
+	!sys_ipc.sys_ipc_call_sync_slow +
+	!sys_ipc.sys_ipc_call_async_fast +
+	!sys_ipc.sys_ipc_call_async_slow +
+	!sys_ipc.sys_ipc_forward_fast +
+	!sys_ipc.sys_ipc_forward_slow +
+	!sys_ipc.sys_ipc_answer_fast +
+	!sys_ipc.sys_ipc_answer_slow +
+	!sys_ipc.sys_ipc_hangup +
+	!sys_ipc.sys_ipc_wait_for_call +
+	!sys_ipc.sys_ipc_poke +
+	!sys_event.sys_event_subscribe +
+	!sys_cap.sys_cap_grant +
+	!sys_cap.sys_cap_rewoke +
+	!sys_ddi.sys_enable_iospace +
+	!sys_ddi.sys_physmem_map +
+	!sys_ddi.sys_device_assign_devno +
+	!sys_ddi.sys_preempt_control +
+	!sys_ddi.sys_ipc_register_irq +
+	!sys_ddi.sys_ipc_unregister_irq +
+	!sys_sysinfo.sys_sysinfo_valid +
+	!sys_sysinfo.sys_sysinfo_value +
+	!sys_debug.sys_ipc_connect_kbox
 )*
Index: contrib/arch/uspace/lib/libc/requires
===================================================================
--- contrib/arch/uspace/lib/libc/requires	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libc/requires	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,16 +1,16 @@
 /* Kernel interfaces required by libc */
-kernel_klog kernel_klog;
-kernel_console kernel_console;
-kernel_tls kernel_tls;
-kernel_thread kernel_thread;
-kernel_task kernel_task;
-kernel_program kernel_program;
-kernel_futex kernel_futex;
-kernel_smc kernel_smc;
-kernel_as kernel_as;
-kernel_ipc kernel_sys;
-kernel_event kernel_event;
-kernel_cap kernel_cap;
-kernel_ddi kernel_ddi;
-kernel_sysinfo kernel_sysinfo;
-kernel_debug kernel_debug;
+sys_klog sys_klog;
+sys_console sys_console;
+sys_tls sys_tls;
+sys_thread sys_thread;
+sys_task sys_task;
+sys_program sys_program;
+sys_futex sys_futex;
+sys_smc sys_smc;
+sys_as sys_as;
+sys_ipc sys_ipc;
+sys_event sys_event;
+sys_cap sys_cap;
+sys_ddi sys_ddi;
+sys_sysinfo sys_sysinfo;
+sys_debug sys_debug;
Index: contrib/arch/uspace/lib/libc/subsume
===================================================================
--- contrib/arch/uspace/lib/libc/subsume	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libc/subsume	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,16 +1,16 @@
 /* Subsume %% to kernel interfaces */
-subsume %%:kernel_klog to kernel_klog;
-subsume %%:kernel_console to kernel_console;
-subsume %%:kernel_tls to kernel_tls;
-subsume %%:kernel_thread to kernel_thread;
-subsume %%:kernel_task to kernel_task;
-subsume %%:kernel_program to kernel_program;
-subsume %%:kernel_futex to kernel_futex;
-subsume %%:kernel_smc to kernel_smc;
-subsume %%:kernel_as to kernel_as;
-subsume %%:kernel_ipc to kernel_sys;
-subsume %%:kernel_event to kernel_event;
-subsume %%:kernel_cap to kernel_cap;
-subsume %%:kernel_ddi to kernel_ddi;
-subsume %%:kernel_sysinfo to kernel_sysinfo;
-subsume %%:kernel_debug to kernel_debug;
+subsume %%:sys_klog to sys_klog;
+subsume %%:sys_console to sys_console;
+subsume %%:sys_tls to sys_tls;
+subsume %%:sys_thread to sys_thread;
+subsume %%:sys_task to sys_task;
+subsume %%:sys_program to sys_program;
+subsume %%:sys_futex to sys_futex;
+subsume %%:sys_smc to sys_smc;
+subsume %%:sys_as to sys_as;
+subsume %%:sys_ipc to sys_ipc;
+subsume %%:sys_event to sys_event;
+subsume %%:sys_cap to sys_cap;
+subsume %%:sys_ddi to sys_ddi;
+subsume %%:sys_sysinfo to sys_sysinfo;
+subsume %%:sys_debug to sys_debug;
Index: contrib/arch/uspace/lib/libfs/fnc.libfs_lookup
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.libfs_lookup	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libfs/fnc.libfs_lookup	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,1 +1,5 @@
-!fs.lookup*
+(
+	alternative fs tmpfs fat devfs {
+		!fs.lookup
+	}
+)*
Index: contrib/arch/uspace/lib/libfs/fnc.libfs_mount
===================================================================
--- contrib/arch/uspace/lib/libfs/fnc.libfs_mount	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/lib/libfs/fnc.libfs_mount	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,6 +1,8 @@
-?fs.ipc_m_connection_clone ;
-?fs.ipc_m_data_write /* mount options */ {
-	!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/srv/bd/bd.adl
===================================================================
--- contrib/arch/uspace/srv/bd/bd.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/bd/bd.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,6 +1,3 @@
 interface bd extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
 		/* Share out data buffer */
 		ipcarg_t ipc_m_share_out(in ipcarg_t as_area_base, in ipcarg_t as_area_size, in ipcarg_t flags, out ipcarg_t dst_as_area_base);
@@ -14,7 +11,4 @@
 		/* Write blocks via shared data buffer */
 		ipcarg_t write_blocks(in ipcarg_t index_lower, in ipcarg_t index_upper, in ipcarg_t count);
-		
-		/* Close connection */
-		ipcarg_t ipc_m_phone_hungup(void);
 	protocol:
 		[bd.bp]
@@ -26,7 +20,7 @@
 	[/uspace/lib/libc/subsume%rd]
 	
-	delegate bd to rd:bd;
+	delegate rd to rd:rd;
 	
 	subsume rd:ns to ns;
-	subsume rd:devmap to devmap;
+	subsume rd:devmap_driver to devmap_driver;
 };
Index: contrib/arch/uspace/srv/bd/rd/rd.adl
===================================================================
--- contrib/arch/uspace/srv/bd/rd/rd.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/bd/rd/rd.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,5 +1,7 @@
+interface rd extends bd;
+
 frame rd {
 	provides:
-		bd bd;
+		rd rd;
 	requires:
 		[/uspace/lib/libc/requires]
@@ -7,5 +9,5 @@
 		devmap_driver devmap_driver;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[rd.bp]
 };
Index: contrib/arch/uspace/srv/fs/devfs/devfs.adl
===================================================================
--- contrib/arch/uspace/srv/fs/devfs/devfs.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/devfs/devfs.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,5 +1,10 @@
+interface devfs extends fs {
+	protocol:
+		[devfs.bp]
+};
+
 frame devfs {
 	provides:
-		fs fs;
+		devfs devfs;
 	requires:
 		[/uspace/lib/libc/requires]
@@ -9,5 +14,5 @@
 		service device;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[devfs_server.bp]
 };
Index: contrib/arch/uspace/srv/fs/devfs/devfs.bp
===================================================================
--- contrib/arch/uspace/srv/fs/devfs/devfs.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
+++ contrib/arch/uspace/srv/fs/devfs/devfs.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -0,0 +1,62 @@
+(
+	?ipc_m_connect_me_to ;
+	(
+		?mounted {
+			?ipc_m_data_write /* mount options */
+		} +
+		
+		?lookup {
+			tentative {
+				[/uspace/lib/libc/fnc.devmap_device_get_handle] ;
+				tentative {
+					[/uspace/lib/libc/fnc.devmap_device_connect]
+				}
+			}
+		} +
+		
+		?open_node {
+			tentative {
+				[/uspace/lib/libc/fnc.devmap_device_connect]
+			}
+		} +
+		
+		?read {
+			tentative {
+				?ipc_m_data_read /* payload */ {
+					!device.read {
+						!device.ipc_m_data_read /* forward */
+					}
+				} +
+				(
+					[/uspace/lib/libc/fnc.devmap_device_get_count] ;
+					[/uspace/lib/libc/fnc.devmap_device_get_devices]
+				)
+			}
+		} +
+		
+		?write {
+			tentative {
+				?ipc_m_data_write /* payload */ {
+					!device.write {
+						!device.ipc_m_data_write /* forward */
+					}
+				}
+			}
+		} +
+		
+		?stat {
+			?ipc_m_data_read /* struct data */
+		} +
+		
+		?close {
+			!device.ipc_m_phone_hungup
+		} +
+		
+		?mount +
+		?truncate +
+		?destroy +
+		?sync
+	)* ;
+	?ipc_m_phone_hungup
+)* ;
+!vfs.ipc_m_phone_hungup
Index: contrib/arch/uspace/srv/fs/devfs/devfs_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/devfs/devfs_server.bp	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/devfs/devfs_server.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,65 +1,3 @@
 [/uspace/lib/libc/fnc.devmap_get_phone] ;
 !ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register] ;
-(
-	?fs.ipc_m_connect_me_to ;
-	(
-		?fs.mounted {
-			?fs.ipc_m_data_write /* mount options */
-		} +
-		
-		?fs.lookup {
-			tentative {
-				[/uspace/lib/libc/fnc.devmap_device_get_handle] ;
-				tentative {
-					[/uspace/lib/libc/fnc.devmap_device_connect]
-				}
-			}
-		} +
-		
-		?fs.open_node {
-			tentative {
-				[/uspace/lib/libc/fnc.devmap_device_connect]
-			}
-		} +
-		
-		?fs.read {
-			tentative {
-				?fs.ipc_m_data_read /* payload */ {
-					!device.read {
-						!device.ipc_m_data_read /* forward */
-					}
-				} +
-				(
-					[/uspace/lib/libc/fnc.devmap_device_get_count] ;
-					[/uspace/lib/libc/fnc.devmap_device_get_devices]
-				)
-			}
-		} +
-		
-		?fs.write {
-			tentative {
-				?fs.ipc_m_data_write /* payload */ {
-					!device.write {
-						!device.ipc_m_data_write /* forward */
-					}
-				}
-			}
-		} +
-		
-		?fs.stat {
-			?fs.ipc_m_data_read /* struct data */
-		} +
-		
-		?fs.close {
-			!device.ipc_m_phone_hungup
-		} +
-		
-		?fs.mount +
-		?fs.truncate +
-		?fs.destroy +
-		?fs.sync
-	)* ;
-	?fs.ipc_m_phone_hungup
-)* ;
-!vfs.ipc_m_phone_hungup
+[/uspace/lib/libfs/fnc.fs_register]
Index: contrib/arch/uspace/srv/fs/fat/fat.adl
===================================================================
--- contrib/arch/uspace/srv/fs/fat/fat.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/fat/fat.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,12 +1,17 @@
+interface fat extends fs {
+	protocol:
+		[fat.bp]
+};
+
 frame fat {
 	provides:
-		fs fs;
+		fat fat;
 	requires:
 		[/uspace/lib/libc/requires]
 		vfs vfs;
 		ns ns;
-		bd bd;
+		rd rd;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[fat_server.bp]
 };
Index: contrib/arch/uspace/srv/fs/fat/fat.bp
===================================================================
--- contrib/arch/uspace/srv/fs/fat/fat.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
+++ contrib/arch/uspace/srv/fs/fat/fat.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -0,0 +1,45 @@
+!ns.ipc_m_connect_me_to /* vfs */ ;
+[/uspace/lib/libfs/fnc.fs_register] ;
+(
+	?ipc_m_connect_me_to ;
+	(
+		?mounted {
+			?ipc_m_data_write /* mount options */
+		} +
+		
+		?mount {
+			[/uspace/lib/libfs/fnc.libfs_mount]
+		} +
+		
+		?lookup {
+			[/uspace/lib/libfs/fnc.libfs_lookup]
+		} +
+		
+		?open_node {
+			[/uspace/lib/libfs/fnc.libfs_open_node]
+		} +
+		
+		?read {
+			tentative {
+				?ipc_m_data_read /* payload */
+			}
+		} +
+		
+		?write {
+			tentative {
+				?ipc_m_data_write /* payload */
+			}
+		} +
+		
+		?stat {
+			[/uspace/lib/libfs/fnc.libfs_stat]
+		} +
+		
+		?truncate +
+		?close +
+		?destroy +
+		?sync
+	)* ;
+	?ipc_m_phone_hungup
+)* ;
+!vfs.ipc_m_phone_hungup
Index: contrib/arch/uspace/srv/fs/fat/fat_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/fat/fat_server.bp	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/fat/fat_server.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,45 +1,2 @@
 !ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register] ;
-(
-	?fs.ipc_m_connect_me_to ;
-	(
-		?fs.mounted {
-			?fs.ipc_m_data_write /* mount options */
-		} +
-		
-		?fs.mount {
-			[/uspace/lib/libfs/fnc.libfs_mount]
-		} +
-		
-		?fs.lookup {
-			[/uspace/lib/libfs/fnc.libfs_lookup]
-		} +
-		
-		?fs.open_node {
-			[/uspace/lib/libfs/fnc.libfs_open_node]
-		} +
-		
-		?fs.read {
-			tentative {
-				?fs.ipc_m_data_read /* payload */
-			}
-		} +
-		
-		?fs.write {
-			tentative {
-				?fs.ipc_m_data_write /* payload */
-			}
-		} +
-		
-		?fs.stat {
-			[/uspace/lib/libfs/fnc.libfs_stat]
-		} +
-		
-		?fs.truncate +
-		?fs.close +
-		?fs.destroy +
-		?fs.sync
-	)* ;
-	?fs.ipc_m_phone_hungup
-)* ;
-!vfs.ipc_m_phone_hungup
+[/uspace/lib/libfs/fnc.fs_register]
Index: contrib/arch/uspace/srv/fs/tmpfs/tmpfs.adl
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/tmpfs.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/tmpfs/tmpfs.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,12 +1,17 @@
+interface tmpfs extends fs {
+	protocol:
+		[tmpfs.bp]
+};
+
 frame tmpfs {
 	provides:
-		fs fs;
+		tmpfs tmpfs;
 	requires:
 		[/uspace/lib/libc/requires]
 		vfs vfs;
 		ns ns;
-		bd bd;
+		rd rd;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[tmpfs_server.bp]
 };
Index: contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
+++ contrib/arch/uspace/srv/fs/tmpfs/tmpfs.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -0,0 +1,43 @@
+(
+	?ipc_m_connect_me_to ;
+	(
+		?mounted {
+			?ipc_m_data_write /* mount options */
+		} +
+		
+		?mount {
+			[/uspace/lib/libfs/fnc.libfs_mount]
+		} +
+		
+		?lookup {
+			[/uspace/lib/libfs/fnc.libfs_lookup]
+		} +
+		
+		?open_node {
+			[/uspace/lib/libfs/fnc.libfs_open_node]
+		} +
+		
+		?read {
+			tentative {
+				?ipc_m_data_read /* payload */
+			}
+		} +
+		
+		?write {
+			tentative {
+				?ipc_m_data_write /* payload */
+			}
+		} +
+		
+		?stat {
+			[/uspace/lib/libfs/fnc.libfs_stat]
+		} +
+		
+		?truncate +
+		?close +
+		?destroy +
+		?sync
+	)* ;
+	?ipc_m_phone_hungup
+)* ;
+!vfs.ipc_m_phone_hungup
Index: contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp
===================================================================
--- contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/fs/tmpfs/tmpfs_server.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,45 +1,2 @@
 !ns.ipc_m_connect_me_to /* vfs */ ;
-[/uspace/lib/libfs/fnc.fs_register] ;
-(
-	?fs.ipc_m_connect_me_to ;
-	(
-		?fs.mounted {
-			?fs.ipc_m_data_write /* mount options */
-		} +
-		
-		?fs.mount {
-			[/uspace/lib/libfs/fnc.libfs_mount]
-		} +
-		
-		?fs.lookup {
-			[/uspace/lib/libfs/fnc.libfs_lookup]
-		} +
-		
-		?fs.open_node {
-			[/uspace/lib/libfs/fnc.libfs_open_node]
-		} +
-		
-		?fs.read {
-			tentative {
-				?fs.ipc_m_data_read /* payload */
-			}
-		} +
-		
-		?fs.write {
-			tentative {
-				?fs.ipc_m_data_write /* payload */
-			}
-		} +
-		
-		?fs.stat {
-			[/uspace/lib/libfs/fnc.libfs_stat]
-		} +
-		
-		?fs.truncate +
-		?fs.close +
-		?fs.destroy +
-		?fs.sync
-	)* ;
-	?fs.ipc_m_phone_hungup
-)* ;
-!vfs.ipc_m_phone_hungup
+[/uspace/lib/libfs/fnc.fs_register]
Index: contrib/arch/uspace/srv/kbd/kbd.adl
===================================================================
--- contrib/arch/uspace/srv/kbd/kbd.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/kbd/kbd.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,6 +1,3 @@
 interface kbd extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
 		/* Callback connection */
 		ipcarg_t ipc_m_connect_to_me(void);
@@ -11,7 +8,4 @@
 		/* Reclaim hardware */
 		ipcarg_t reclaim(void);
-		
-		/* Close connection */
-		ipcarg_t ipc_m_phone_hungup(void);
 	protocol:
 		[kbd.bp]
@@ -33,5 +27,5 @@
 		ns ns;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[kbd_server.bp]
 };
Index: contrib/arch/uspace/srv/loader/loader.adl
===================================================================
--- contrib/arch/uspace/srv/loader/loader.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/loader/loader.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,6 +1,3 @@
 interface loader extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
 		/* Set task pathname */
 		ipcarg_t set_pathname(in_copy string pathname);
@@ -20,7 +17,4 @@
 		/* Run binary */
 		ipcarg_t run(void);
-		
-		/* Close connection */
-		ipcarg_t ipc_m_phone_hungup(void);
 	protocol:
 		[loader.bp]
@@ -34,5 +28,5 @@
 		ns ns;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[loader_server.bp]
 };
Index: contrib/arch/uspace/srv/ns/service.adl
===================================================================
--- contrib/arch/uspace/srv/ns/service.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/ns/service.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -3,3 +3,6 @@
 		   (this call is forwarded from Naming Service or Device Mapper) */
 		ipcarg_t ipc_m_connect_me_to(void);
+		
+		/* Close connection */
+		ipcarg_t ipc_m_phone_hungup(void);
 };
Index: contrib/arch/uspace/srv/pci/pci.adl
===================================================================
--- contrib/arch/uspace/srv/pci/pci.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/pci/pci.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,8 +1,3 @@
 interface pci extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
-		/* Close connection */
-		ipcarg_t ipc_m_phone_hungup(void);
 	protocol:
 		[pci.bp]
@@ -16,5 +11,5 @@
 		ns ns;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[pci_server.bp]
 };
Index: contrib/arch/uspace/srv/vfs/vfs.adl
===================================================================
--- contrib/arch/uspace/srv/vfs/vfs.adl	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/vfs/vfs.adl	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -1,6 +1,3 @@
 interface vfs extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
 		/* Register a filesystem driver */
 		ipcarg_t register(in_copy string name);
@@ -55,7 +52,4 @@
 
 interface fs extends service {
-		/* Establish connection */
-		ipcarg_t ipc_m_connect_me_to(void);
-		
 		/* Notify filesystem that it was mounted */
 		ipcarg_t mounted(in ipcarg_t dev_handle, in_copy string opts);
@@ -87,49 +81,48 @@
 		/* Notify on file close */
 		ipcarg_t close(in ipcarg_t dev_handle, in ipcarg_t fs_index);
-		
-		/* Close connection */
-		ipcarg_t ipc_m_phone_hungup(void);
 };
 
-frame vfs_manager {
+frame dispatcher {
 	provides:
 		vfs vfs;
 	requires:
 		[/uspace/lib/libc/requires]
-		fs fs;
+		tmpfs tmpfs;
+		fat fat;
+		devfs devfs;
 		ns ns;
 	protocol:
-		[/uspace/lib/libc/protocol] +
+		[/uspace/lib/libc/protocol] |
 		[vfs_server.bp]
 };
 
 architecture vfs {
-	inst vfs_manager vfs;
+	inst dispatcher dispatcher;
 	inst tmpfs tmpfs;
 	inst fat fat;
 	inst devfs devfs;
 	
-	bind vfs:fs to tmpfs:fs;
-	bind vfs:fs to fat:fs;
-	bind vfs:fs to devfs:fs;
+	bind dispatcher:tmpfs to tmpfs:tmpfs;
+	bind dispatcher:fat to fat:fat;
+	bind dispatcher:devfs to devfs:devfs;
 	
-	bind tmpfs:vfs to vfs:vfs;
-	bind fat:vfs to vfs:vfs;
-	bind devfs:vfs to vfs:vfs;
+	bind tmpfs:vfs to dispatcher:vfs;
+	bind fat:vfs to dispatcher:vfs;
+	bind devfs:vfs to dispatcher:vfs;
 	
-	delegate vfs to vfs:vfs;
+	delegate vfs to dispatcher:vfs;
 	
-	[/uspace/lib/libc/subsume%vfs]
+	[/uspace/lib/libc/subsume%dispatcher]
 	[/uspace/lib/libc/subsume%tmpfs]
 	[/uspace/lib/libc/subsume%fat]
 	[/uspace/lib/libc/subsume%devfs]
 	
-	subsume vfs:ns to ns;
+	subsume dispatcher:ns to ns;
 	subsume tmpfs:ns to ns;
 	subsume fat:ns to ns;
 	subsume devfs:ns to ns;
 	
-	subsume tmpfs:bd to bd;
-	subsume fat:bd to bd;
+	subsume tmpfs:rd to rd;
+	subsume fat:rd to rd;
 	
 	subsume devfs:devmap_client to devmap_client;
Index: contrib/arch/uspace/srv/vfs/vfs.bp
===================================================================
--- contrib/arch/uspace/srv/vfs/vfs.bp	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/arch/uspace/srv/vfs/vfs.bp	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -21,21 +21,25 @@
 						(
 							/* root fs */
-							!fs.mounted ;
-							!fs.ipc_m_data_write /* mount options */
+							alternative fs tmpfs fat devfs {
+								!fs.mounted ;
+								!fs.ipc_m_data_write /* mount options */
+							}
 						) +
 						(
 							/* non-root fs */
 							tentative {
-								[fnc.vfs_lookup_internal] ;
-								tentative {
-									[fnc.vfs_grab_phone] ;
-									[fnc.vfs_grab_phone] ;
-									!fs.mount ;
-									!fs.ipc_m_connection_clone ;
-									[fnc.vfs_release_phone] ;
+								alternative fs tmpfs fat devfs {
+									[fnc.vfs_lookup_internal] ;
 									tentative {
-										!fs.vfs_m_data_write /* mount options */
-									} ;
-									[fnc.vfs_release_phone]
+										[fnc.vfs_grab_phone] ;
+										[fnc.vfs_grab_phone] ;
+										!fs.mount ;
+										!fs.ipc_m_connection_clone ;
+										[fnc.vfs_release_phone] ;
+										tentative {
+											!fs.vfs_m_data_write /* mount options */
+										} ;
+										[fnc.vfs_release_phone]
+									}
 								}
 							}
@@ -51,8 +55,44 @@
 			?ipc_m_data_write /* path */ ;
 			tentative {
-				[fnc.vfs_lookup_internal] ;
-				tentative {
+				alternative fs tmpfs fat devfs {
+					[fnc.vfs_lookup_internal] ;
+					tentative {
+						[fnc.vfs_grab_phone] ;
+						!fs.truncate ;
+						[fnc.vfs_release_phone]
+					}
+				}
+			}
+		}
+	} +
+	
+	?open_node {
+		alternative fs tmpfs fat devfs {
+			[fnc.vfs_open_node_internal] ;
+			tentative {
+				[fnc.vfs_grab_phone] ;
+				!fs.truncate ;
+				[fnc.vfs_release_phone]
+			}
+		}
+	} +
+	
+	?close {
+		tentative {
+			alternative fs tmpfs fat devfs {
+				[fnc.vfs_grab_phone] ;
+				!fs.close ;
+				[fnc.vfs_release_phone]
+			}
+		}
+	} +
+	
+	?read {
+		tentative {
+			?ipc_m_data_read {
+				alternative fs tmpfs fat devfs {
 					[fnc.vfs_grab_phone] ;
-					!fs.truncate ;
+					!fs.read ;
+					!fs.ipc_m_data_read /* forward payload */ ;
 					[fnc.vfs_release_phone]
 				}
@@ -61,27 +101,22 @@
 	} +
 	
-	?open_node {
-		[fnc.vfs_open_node_internal] ;
-		tentative {
-			[fnc.vfs_grab_phone] ;
-			!fs.truncate ;
-			[fnc.vfs_release_phone]
-		}
-	} +
-	
-	?close {
-		tentative {
-			[fnc.vfs_grab_phone] ;
-			!fs.close ;
-			[fnc.vfs_release_phone]
-		}
-	} +
-	
-	?read {
-		tentative {
-			?ipc_m_data_read {
+	?write {
+		tentative {
+			?ipc_m_data_write {
+				alternative fs tmpfs fat devfs {
+					[fnc.vfs_grab_phone] ;
+					!fs.write ;
+					!fs.ipc_m_data_write /* forward payload */ ;
+					[fnc.vfs_release_phone]
+				}
+			}
+		}
+	} +
+	
+	?truncate {
+		tentative {
+			alternative fs tmpfs fat devfs {
 				[fnc.vfs_grab_phone] ;
-				!fs.read ;
-				!fs.ipc_m_data_read /* forward payload */ ;
+				!fs.truncate ;
 				[fnc.vfs_release_phone]
 			}
@@ -89,30 +124,13 @@
 	} +
 	
-	?write {
-		tentative {
-			?ipc_m_data_write {
-				[fnc.vfs_grab_phone] ;
-				!fs.write ;
-				!fs.ipc_m_data_write /* forward payload */ ;
-				[fnc.vfs_release_phone]
-			}
-		}
-	} +
-	
-	?truncate {
-		tentative {
-			[fnc.vfs_grab_phone] ;
-			!fs.truncate ;
-			[fnc.vfs_release_phone]
-		}
-	} +
-	
 	?fstat {
 		tentative {
 			?ipc_m_data_read /* struct stat */ {
-				[fnc.vfs_grab_phone] ;
-				!fs.stat ;
-				!fs.ipc_m_data_read /* forward struct stat */ ;
-				[fnc.vfs_release_phone]
+				alternative fs tmpfs fat devfs {
+					[fnc.vfs_grab_phone] ;
+					!fs.stat ;
+					!fs.ipc_m_data_read /* forward struct stat */ ;
+					[fnc.vfs_release_phone]
+				}
 			}
 		}
@@ -123,8 +141,10 @@
 		tentative {
 			?ipc_m_data_read /* struct stat */ {
-				[fnc.vfs_lookup_internal] ;
-				tentative {
-					!fs.stat ;
-					!fs.ipc_m_data_read /* forward struct stat */
+				alternative fs tmpfs fat devfs {
+					[fnc.vfs_lookup_internal] ;
+					tentative {
+						!fs.stat ;
+						!fs.ipc_m_data_read /* forward struct stat */
+					}
 				}
 			}
@@ -135,5 +155,7 @@
 		?ipc_m_data_write /* path */ ;
 		tentative {
-			[fnc.vfs_lookup_internal]
+			alternative fs tmpfs fat devfs {
+				[fnc.vfs_lookup_internal]
+			}
 		}
 	} +
@@ -142,5 +164,7 @@
 		?ipc_m_data_write /* path */ ;
 		tentative {
-			[fnc.vfs_lookup_internal]
+			alternative fs tmpfs fat devfs {
+				[fnc.vfs_lookup_internal]
+			}
 		}
 	} +
@@ -151,13 +175,15 @@
 			?ipc_m_data_write /* new path */ ;
 			tentative {
-				[fnc.vfs_lookup_internal] /* lookup old path */ ;
-				tentative {
-					[fnc.vfs_lookup_internal] /* lookup parent of new path */ ;
-					tentative {
-						[fnc.vfs_lookup_internal] /* destroy old link for the new path */ ;
+				alternative fs tmpfs fat devfs {
+					[fnc.vfs_lookup_internal] /* lookup old path */ ;
+					tentative {
+						[fnc.vfs_lookup_internal] /* lookup parent of new path */ ;
 						tentative {
-							[fnc.vfs_lookup_internal] /* create new link for the new path */ ;
+							[fnc.vfs_lookup_internal] /* destroy old link for the new path */ ;
 							tentative {
-								[fnc.vfs_lookup_internal] /* destroy link for the old path */
+								[fnc.vfs_lookup_internal] /* create new link for the new path */ ;
+								tentative {
+									[fnc.vfs_lookup_internal] /* destroy link for the old path */
+								}
 							}
 						}
@@ -170,5 +196,7 @@
 	?sync {
 		tentative {
-			!fs.sync
+			alternative fs tmpfs fat devfs {
+				!fs.sync
+			}
 		}
 	} +
Index: contrib/highlight/bp.syntax
===================================================================
--- contrib/highlight/bp.syntax	(revision 57688fe23fa1c5a39b4fd977d3ee140ad42edb69)
+++ contrib/highlight/bp.syntax	(revision cf7b3e025e3db101a36b0419103a3b43b6675127)
@@ -5,4 +5,5 @@
 	keyword whole NULL yellow
 	keyword whole tentative yellow
+	keyword whole alternative yellow
 	
 	keyword /\* brown
