diff --git a/AutoTx/AutoTx.cs b/AutoTx/AutoTx.cs
index cd4e76bf6407a15f939d316c2f8d03cc30bb8d14..6ab83e794da65e286c605f26e559871b959f1bd3 100644
--- a/AutoTx/AutoTx.cs
+++ b/AutoTx/AutoTx.cs
@@ -19,6 +19,8 @@ namespace AutoTx
         // ending with "Dir" are DirectoryInfo objects
         private string _configPath;
         private string _statusPath;
+        private string _incomingPath;
+        private string _managedPath;
         private List<string> _transferredFiles = new List<string>();
 
         private int _txProgress;
@@ -142,14 +144,18 @@ namespace AutoTx
                              @" and a backslash, e.g. 'D:\'!");
                     configInvalid = true;
                 }
+                // IncomingDirectory
                 if (_config.IncomingDirectory.StartsWith(@"\")) {
                     writeLog("ERROR: IncomingDirectory must not start with a backslash!");
                     configInvalid = true;
                 }
+                _incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory);
+                // ManagedDirectory
                 if (_config.ManagedDirectory.StartsWith(@"\")) {
                     writeLog("ERROR: ManagedDirectory must not start with a backslash!");
                     configInvalid = true;
                 }
+                _managedPath = Path.Combine(_config.SourceDrive, _config.ManagedDirectory);
                 if (_config.ServiceTimer < 1000) {
                     writeLog("ERROR: ServiceTimer must not be smaller than 1000 ms!");
                     configInvalid = true;
@@ -535,8 +541,7 @@ namespace AutoTx
                 return;
 
             // select next directory from "processing" for transfer:
-            var processingDir = Path.Combine(_config.SourceDrive,
-                _config.ManagedDirectory, "PROCESSING");
+            var processingDir = Path.Combine(_managedPath, "PROCESSING");
             var queued = new DirectoryInfo(processingDir).GetDirectories();
             if (queued.Length == 0)
                 return;
@@ -555,9 +560,8 @@ namespace AutoTx
         /// Check the incoming directories for files, move them to the processing location.
         /// </summary>
         private void CheckIncomingDirectories() {
-            var incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory);
             // iterate over all user-subdirectories:
-            foreach (var userDir in new DirectoryInfo(incomingPath).GetDirectories()) {
+            foreach (var userDir in new DirectoryInfo(_incomingPath).GetDirectories()) {
                 if (IncomingDirIsEmpty(userDir))
                     continue;
 
@@ -704,8 +708,8 @@ namespace AutoTx
                 
                 // now everything that is supposed to be transferred is in a folder,
                 // for example: D:\ATX\PROCESSING\2017-04-02__12-34-56\user00
-                var targetDir = Path.Combine(_config.SourceDrive,
-                    _config.ManagedDirectory,
+                var targetDir = Path.Combine(
+                    _managedPath,
                     target,
                     CreateTimestamp(),
                     userDir.Name);
@@ -728,8 +732,8 @@ namespace AutoTx
             string errMsg;
             // CurrentTransferSrc is e.g. D:\ATX\PROCESSING\2017-04-02__12-34-56\user00
             var sourceDirectory = new DirectoryInfo(_status.CurrentTransferSrc);
-            var dstPath = Path.Combine(_config.SourceDrive,
-                _config.ManagedDirectory,
+            var dstPath = Path.Combine(
+                _managedPath,
                 "DONE",
                 sourceDirectory.Name, // the username directory
                 CreateTimestamp());