diff --git a/rfb/FileInfo.cxx b/rfb/FileInfo.cxx
index 0d770f3..5b151d9 100644
--- a/rfb/FileInfo.cxx
+++ b/rfb/FileInfo.cxx
@@ -237,23 +237,3 @@
 
   return filenamesSize;
 }
-
-char *
-FileInfo::getAllFilenames(unsigned int *pFilenameSize)
-{
-  unsigned int filenameSize = getFilenamesSize() + getNumEntries();
-
-  char *pFilenames = new char[filenameSize];
-  unsigned int pos = 0;
-
-  for (unsigned int i = 0; i < getNumEntries(); i++) {
-    char *pName = getNameAt(i);
-    unsigned int len = strlen(pName);
-
-    memcpy((void *)&pFilenames[pos], pName, len + 1);
-    pos += len + 2;
-  }
-
-  *pFilenameSize = filenameSize;
-  return pFilenames;
-}
diff --git a/rfb/FileInfo.h b/rfb/FileInfo.h
index c2b63ac..4dccc95 100644
--- a/rfb/FileInfo.h
+++ b/rfb/FileInfo.h
@@ -55,7 +55,6 @@
     unsigned int getNumEntries();
 
     unsigned int getFilenamesSize();
-    char *getAllFilenames(unsigned int *pFilenameSize);
     
     void sort();
     void free();
diff --git a/rfb/SFTMsgWriter.cxx b/rfb/SFTMsgWriter.cxx
index 4ea85a8..4edfc46 100644
--- a/rfb/SFTMsgWriter.cxx
+++ b/rfb/SFTMsgWriter.cxx
@@ -37,7 +37,43 @@
 bool 
 SFTMsgWriter::writeFileListData(unsigned char flags, rfb::FileInfo *pFileInfo)
 {
-  return false;
+  unsigned int numFiles = pFileInfo->getNumEntries();
+
+  m_pOS->writeU8(msgTypeFileListData);
+  m_pOS->writeU8(flags);
+  m_pOS->writeU16(numFiles);
+  
+  if (numFiles == 0) {
+    m_pOS->writeU16(0);
+    m_pOS->writeU16(0);
+  } else {
+    unsigned int filenamesSize = pFileInfo->getFilenamesSize() + numFiles;
+
+    m_pOS->writeU16(filenamesSize);
+    m_pOS->writeU16(filenamesSize);
+
+    char *pFilenames = new char [filenamesSize];
+    unsigned int pos = 0;
+
+    for (unsigned int i = 0; i < numFiles; i++) {
+      char *pName = pFileInfo->getNameAt(i);
+      unsigned int len = strlen(pName);
+
+      memcpy((void *)&pFilenames[pos], pName, len + 1);
+      pos += len + 2;
+
+      m_pOS->writeU32(pFileInfo->getSizeAt(i));
+      m_pOS->writeU32(pFileInfo->getDataAt(i));
+    }
+
+    m_pOS->writeBytes(pFilenames, filenamesSize);
+
+    delete [] pFilenames;
+  }
+
+  m_pOS->flush();
+
+  return true;
 }
 
 bool 
