Index: kernel/generic/include/ipc/ipc.h
===================================================================
--- kernel/generic/include/ipc/ipc.h	(revision 38c706cc8a6d3b4125c0704bdb5d9d6fe37e7fbf)
+++ kernel/generic/include/ipc/ipc.h	(revision 6364d3c5a4f6a39d32c14922f17a23eaa8bb3507)
@@ -119,5 +119,5 @@
  * The protocol for negotiating is:
  * - sys_connect_to_me - sends a message IPC_M_CONNECT_TO_ME
- * - sys_wait_for_call - upon receipt tries to allocate new phone
+ * - recipient         - upon receipt tries to allocate new phone
  *                       - if it fails, responds with ELIMIT
  *                     - passes call to userspace. If userspace
@@ -127,5 +127,4 @@
  *                     - the allocated phoneid is passed to userspace 
  *                       (on the receiving side) as ARG5 of the call.
- *                     - the caller obtains taskid of the called thread
  */
 #define IPC_M_CONNECT_TO_ME	1
@@ -142,8 +141,7 @@
  *                       address of the phone that should be connected
  *                       (TODO: it leaks to userspace)
- *   recipient         -  if ipc_answer == 0, then accept connection
+ *  - recipient        -  if ipc_answer == 0, then accept connection
  *                     -  otherwise connection refused
- *                     -  recepient may forward message. Forwarding
- *                        system message 
+ *                     -  recepient may forward message.
  *
  */
Index: kernel/generic/src/ipc/sysipc.c
===================================================================
--- kernel/generic/src/ipc/sysipc.c	(revision 38c706cc8a6d3b4125c0704bdb5d9d6fe37e7fbf)
+++ kernel/generic/src/ipc/sysipc.c	(revision 6364d3c5a4f6a39d32c14922f17a23eaa8bb3507)
@@ -185,5 +185,5 @@
 			/* The connection was accepted */
 			phone_connect(phoneid, &answer->sender->answerbox);
-			/* Set 'phone hash' as arg3 of response */
+			/* Set 'phone hash' as arg5 of response */
 			IPC_SET_ARG5(answer->data,
 			    (unative_t) &TASK->phones[phoneid]);
@@ -270,5 +270,5 @@
 		if (newphid < 0)
 			return ELIMIT;
-		/* Set arg3 for server */
+		/* Set arg5 for server */
 		IPC_SET_ARG5(call->data, (unative_t) &TASK->phones[newphid]);
 		call->flags |= IPC_CALL_CONN_ME_TO;
Index: uspace/srv/fs/fat/fat.h
===================================================================
--- uspace/srv/fs/fat/fat.h	(revision 38c706cc8a6d3b4125c0704bdb5d9d6fe37e7fbf)
+++ uspace/srv/fs/fat/fat.h	(revision 6364d3c5a4f6a39d32c14922f17a23eaa8bb3507)
@@ -136,7 +136,17 @@
 extern uint8_t *plb_ro;
 
+extern void fat_lookup(ipc_callid_t, ipc_call_t *);
+
+/*
+ * The following interfaces are rather fs-neutral and might be later moved to a
+ * dedicated library (e.g. libfs). We just wait until the interfaces stabilize
+ * and until there is more than one fs implementation.
+ */
 extern int block_read(int, unsigned long, void *);
+extern int block_write(int, unsigned long, void *);
 
-extern void fat_lookup(ipc_callid_t, ipc_call_t *);
+extern void node_add_mp(int, unsigned long);
+extern void node_del_mp(int, unsigned long);
+extern bool node_is_mp(int, unsigned long);
 
 #endif
Index: uspace/srv/fs/fat/fat_ops.c
===================================================================
--- uspace/srv/fs/fat/fat_ops.c	(revision 38c706cc8a6d3b4125c0704bdb5d9d6fe37e7fbf)
+++ uspace/srv/fs/fat/fat_ops.c	(revision 6364d3c5a4f6a39d32c14922f17a23eaa8bb3507)
@@ -37,7 +37,25 @@
 
 #include "fat.h"
+#include "../../vfs/vfs.h"
 #include <ipc/ipc.h>
 #include <async.h>
 #include <errno.h>
+
+#define PLB_GET_CHAR(i)		(plb_ro[(i) % PLB_SIZE])
+
+#define FAT_NAME_LEN		8
+#define FAT_EXT_LEN		3
+
+#define FAT_PAD			' ' 
+
+#define FAT_DENTRY_UNUSED	0x00
+#define FAT_DENTRY_E5_ESC	0x05
+#define FAT_DENTRY_DOT		0x2e
+#define FAT_DENTRY_ERASED	0xe5
+
+static int match_path_component(fat_dentry_t *dentry, unsigned index,
+    size_t len)
+{
+}
 
 void fat_lookup(ipc_callid_t rid, ipc_call_t *request)
