diff --git a/vncviewer/FTDialog.cxx b/vncviewer/FTDialog.cxx
index 15cb919..f8054b0 100644
--- a/vncviewer/FTDialog.cxx
+++ b/vncviewer/FTDialog.cxx
@@ -31,16 +31,14 @@
   m_pFileTransfer = pFT;
   m_hInstance = hInst;
   m_bDlgShown = false;
-  m_szLocalPath[0] = '\0';
-  m_szRemotePath[0] = '\0';
-  m_szLocalPathTmp[0] = '\0';
-  m_szRemotePathTmp[0] = '\0';
 
   m_pLocalLV = NULL;
   m_pRemoteLV = NULL;
   m_pProgress = NULL;
 
   m_hwndFTDialog = NULL;
+  m_hwndLocalPath = NULL;
+  m_hwndRemotePath = NULL;
 }
 
 FTDialog::~FTDialog()
@@ -92,6 +90,9 @@
 
   m_pProgress->initialize(0,0);
 
+  m_hwndLocalPath = GetDlgItem(m_hwndLocalPath, IDC_FTLOCALPATH);
+  m_hwndRemotePath = GetDlgItem(m_hwndRemotePath, IDC_FTREMOTEPATH);
+
   return true;
 }
 
@@ -127,16 +128,6 @@
 	return FALSE;
 }
 
-void
-FTDialog::reloadLocalFileList()
-{
-}
-
-void
-FTDialog::reloadRemoteFileList()
-{
-}
-
 void 
 FTDialog::onLocalItemActivate(LPNMITEMACTIVATE lpnmia)
 {
@@ -148,21 +139,29 @@
 }
 
 void
-FTDialog::addLocalLVItems(FileInfo *pFI)
+FTDialog::addLocalLVItems(char *pPath, FileInfo *pFI)
+{
+  pFI->sort();
+  SetWindowText(m_hwndLocalPath, pPath);
+  m_pLocalLV->deleteAllItems();
+  m_pLocalLV->addItems(pFI);
+}
+
+void 
+FTDialog::addRemoteLVItems(char *pPath, FileInfo *pFI)
+{
+  pFI->sort();
+  SetWindowText(m_hwndRemotePath, pPath);
+  m_pRemoteLV->deleteAllItems();
+  m_pRemoteLV->addItems(pFI);
+}
+
+void 
+FTDialog::onLocalOneUpFolder()
 {
 }
 
 void 
-FTDialog::addRemoteLVItems(FileInfo *pFI)
-{
-}
-
-void 
-FTDialog::onLocalOneUpFolder(char *pPath)
-{
-}
-
-void 
-FTDialog::onRemoteOneUpFolder(char *pPath)
+FTDialog::onRemoteOneUpFolder()
 {
 }
diff --git a/vncviewer/FTDialog.h b/vncviewer/FTDialog.h
index a019910..b1fa68a 100644
--- a/vncviewer/FTDialog.h
+++ b/vncviewer/FTDialog.h
@@ -49,19 +49,15 @@
       
       static BOOL CALLBACK FTDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
       
-      void addLocalLVItems(FileInfo *pFI);
-      void addRemoteLVItems(FileInfo *pFI);
-      
-      void reloadLocalFileList();
-      void reloadRemoteFileList();
-      
-      char *getLocalPath() { return m_szLocalPath; };
-      char *getRemotePath() { return m_szRemotePath; };
+      void addLocalLVItems(char *pPath, FileInfo *pFI);
+      void addRemoteLVItems(char *pPath, FileInfo *pFI);
       
     private:
       FileTransfer *m_pFileTransfer;
       
       HWND m_hwndFTDialog;
+      HWND m_hwndLocalPath;
+      HWND m_hwndRemotePath;
       HINSTANCE m_hInstance;
       
       void onLocalItemActivate(LPNMITEMACTIVATE lpnmia);
@@ -69,13 +65,8 @@
 
       bool initFTDialog();
       
-      void onLocalOneUpFolder(char *pPath);
-      void onRemoteOneUpFolder(char *pPath);
-      
-      char m_szLocalPath[MAX_PATH];
-      char m_szRemotePath[MAX_PATH];
-      char m_szLocalPathTmp[MAX_PATH];
-      char m_szRemotePathTmp[MAX_PATH];
+      void onLocalOneUpFolder();
+      void onRemoteOneUpFolder();
       
       bool m_bDlgShown;
 
diff --git a/vncviewer/FileTransfer.cxx b/vncviewer/FileTransfer.cxx
index 5faef69..73e77ca 100644
--- a/vncviewer/FileTransfer.cxx
+++ b/vncviewer/FileTransfer.cxx
@@ -34,6 +34,11 @@
   m_pFTDialog = new FTDialog(GetModuleHandle(0), this);
   m_pInStream = NULL;
   m_pOutStream = NULL;
+
+  m_szLocalPath[0] = '\0';
+  m_szRemotePath[0] = '\0';
+  m_szLocalPathTmp[0] = '\0';
+  m_szRemotePathTmp[0] = '\0';
 }
 
 FileTransfer::~FileTransfer()
@@ -57,7 +62,7 @@
 }
 
 bool 
-FileTransfer::create()
+FileTransfer::show()
 {
   if (!m_bInitialized) return false;
 
diff --git a/vncviewer/FileTransfer.h b/vncviewer/FileTransfer.h
index 64d951a..d358d82 100644
--- a/vncviewer/FileTransfer.h
+++ b/vncviewer/FileTransfer.h
@@ -39,7 +39,7 @@
       ~FileTransfer();
 
       bool initialize(rdr::InStream *pIS, rdr::OutStream *pOS);
-      bool create();
+      bool show();
 
     private:
       bool m_bFTDlgShown;
@@ -49,6 +49,11 @@
 
       rdr::InStream *m_pInStream;
       rdr::OutStream *m_pOutStream;
+
+      char m_szLocalPath[FT_FILENAME_SIZE];
+      char m_szRemotePath[FT_FILENAME_SIZE];
+      char m_szLocalPathTmp[FT_FILENAME_SIZE];
+      char m_szRemotePathTmp[FT_FILENAME_SIZE];
     };
   }
 }
diff --git a/vncviewer/cview.cxx b/vncviewer/cview.cxx
index 306b1cd..fbf55bf 100644
--- a/vncviewer/cview.cxx
+++ b/vncviewer/cview.cxx
@@ -683,7 +683,7 @@
       AboutDialog::instance.showDialog();
       return 0;
     case IDM_FILE_TRANSFER:
-      m_fileTransfer.create();
+      m_fileTransfer.show();
       return 0;
     case IDM_CONN_SAVE_AS:
       return 0;
