Index: uspace/lib/c/include/elf/elf_load.h
===================================================================
--- uspace/lib/c/include/elf/elf_load.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/elf/elf_load.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -45,5 +45,5 @@
 } elf_info_t;
 
-extern int elf_load(const char *, elf_info_t *);
+extern int elf_load(int, elf_info_t *);
 extern void elf_set_pcb(elf_info_t *, pcb_t *);
 
Index: uspace/lib/c/include/elf/elf_mod.h
===================================================================
--- uspace/lib/c/include/elf/elf_mod.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/elf/elf_mod.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -108,5 +108,6 @@
 
 extern const char *elf_error(unsigned int);
-extern int elf_load_file(const char *, size_t, eld_flags_t, elf_finfo_t *);
+extern int elf_load_file(int, size_t, eld_flags_t, elf_finfo_t *);
+extern int elf_load_file_name(const char *, size_t, eld_flags_t, elf_finfo_t *);
 
 #endif
Index: uspace/lib/c/include/ipc/loader.h
===================================================================
--- uspace/lib/c/include/ipc/loader.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/ipc/loader.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -42,7 +42,7 @@
 	LOADER_GET_TASKID,
 	LOADER_SET_CWD,
-	LOADER_SET_PATHNAME,
+	LOADER_SET_PROGRAM,
 	LOADER_SET_ARGS,
-	LOADER_SET_FILES,
+	LOADER_ADD_INBOX,
 	LOADER_LOAD,
 	LOADER_RUN
Index: uspace/lib/c/include/loader/loader.h
===================================================================
--- uspace/lib/c/include/loader/loader.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/loader/loader.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -47,7 +47,8 @@
 extern int loader_get_task_id(loader_t *, task_id_t *);
 extern int loader_set_cwd(loader_t *);
-extern int loader_set_pathname(loader_t *, const char *);
+extern int loader_set_program(loader_t *, const char *, int);
+extern int loader_set_program_path(loader_t *, const char *);
 extern int loader_set_args(loader_t *, const char *const[]);
-extern int loader_set_files(loader_t *, int *const[]);
+extern int loader_add_inbox(loader_t *, const char *, int);
 extern int loader_load_program(loader_t *);
 extern int loader_run(loader_t *);
Index: uspace/lib/c/include/loader/pcb.h
===================================================================
--- uspace/lib/c/include/loader/pcb.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/loader/pcb.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -41,4 +41,9 @@
 typedef void (*entry_point_t)(void);
 
+struct pcb_inbox_entry {
+	char *name;
+	int file;
+};
+
 /** Program Control Block.
  *
@@ -60,6 +65,7 @@
 	char **argv;
 	
-	/** Number of preset files. */
-	unsigned int filc;
+	/** List of inbox files. */
+	struct pcb_inbox_entry *inbox;
+	int inbox_entries;
 	
 	/*
Index: uspace/lib/c/include/task.h
===================================================================
--- uspace/lib/c/include/task.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/task.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -57,5 +57,5 @@
     const char *const []);
 extern int task_spawnvf(task_id_t *, task_wait_t *, const char *path,
-    const char *const [], int *const []);
+    const char *const [], int, int, int);
 extern int task_spawn(task_id_t *, task_wait_t *, const char *path, int,
     va_list ap);
Index: uspace/lib/c/include/vfs/inbox.h
===================================================================
--- uspace/lib/c/include/vfs/inbox.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
+++ uspace/lib/c/include/vfs/inbox.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -0,0 +1,14 @@
+
+#ifndef LIBC_VFS_INBOX_H_
+#define LIBC_VFS_INBOX_H_
+
+enum {
+	INBOX_MAX_ENTRIES = 256,
+};
+
+extern int inbox_set(const char *name, int file);
+extern int inbox_get(const char *name);
+
+extern int inbox_list(const char **names, int capacity);
+
+#endif
Index: uspace/lib/c/include/vfs/vfs.h
===================================================================
--- uspace/lib/c/include/vfs/vfs.h	(revision eca9fd05349e9264e5c8a47aa86c450cbf194a46)
+++ uspace/lib/c/include/vfs/vfs.h	(revision bb9ec2db4560230aeb342903a2cb929d99678366)
@@ -63,13 +63,12 @@
 extern void vfs_exchange_end(async_exch_t *);
 
-extern int _vfs_walk(int parent, const char *path, int flags);
-extern int _vfs_open(int file, int mode);
-extern int vfs_lookup(const char *path);
+extern int _vfs_walk(int, const char *, int);
+extern int _vfs_open(int, int);
+extern int vfs_lookup(const char *);
 
-extern int vfs_pass_handle(async_exch_t *vfs_exch, int file, async_exch_t *exch);
-extern int vfs_receive_handle(void);
+extern int vfs_pass_handle(async_exch_t *, int, async_exch_t *);
+extern int vfs_receive_handle(bool);
 
-extern int vfs_clone(int file, bool high_descriptor);
-
+extern int vfs_clone(int, bool);
 
 #endif
