diff --git a/src/main/config/samples/mf-download-config.xml b/src/main/config/samples/mf-download-config.xml
index cfe24ccde9761affe085567e4c170fabebbd081b..32b65d4befbbd566ce1e51198f04828534d462bb 100644
--- a/src/main/config/samples/mf-download-config.xml
+++ b/src/main/config/samples/mf-download-config.xml
@@ -1,81 +1,81 @@
-<?xml version="1.0"?>
-<properties>
-	<server>
-		<!-- Mediaflux server host -->
-		<host>mediaflux.researchsoftware.unimelb.edu.au</host>
-		<!-- Mediaflux server port -->
-		<port>443</port>
-		<!-- Mediaflux server transport. https, http or tcp/ip -->
-		<transport>https</transport>
-		<session>
-			<!-- Retry times on Mediaflux connection failure -->
-			<connectRetryTimes>1</connectRetryTimes>
-			<!-- Time interval (in milliseconds) between retries -->
-			<connectRetryInterval>1000</connectRetryInterval>
-			<!-- Retry times on service execution error -->
-			<executeRetryTimes>1</executeRetryTimes>
-			<!-- Time interval (in milliseconds) between retries -->
-			<executeRetryInterval>1000</executeRetryInterval>
-		</session>
-	</server>
-	<credential>
-		<!-- Application name. Can be used as application key for secure identity 
-			token -->
-		<app>unimelb-mf-download</app>
-		<!-- Mediaflux user's authentication domain -->
-		<domain>DOMAIN</domain>
-		<!-- Mediaflux username -->
-		<user>USERNAME</user>
-		<!-- Mediaflux user's password -->
-		<password>PASSWD</password>
-		<!-- Mediaflux secure identity token -->
-		<token>XXXYYYZZZ</token>
-	</credential>
-	<sync>
-		<settings>
-			<!-- Number of query threads to compare local files with remote assets -->
-			<numberOfQueriers>2</numberOfQueriers>
-			<!-- Number of workers/threads to transfer (upload/download) data concurrently -->
-			<numberOfWorkers>4</numberOfWorkers>
-			<!-- Batch size for checking files with remote assets. Set to 1 will check 
-				files one by one, which will slow down significantly when there are large 
-				number of small files. -->
-			<batchSize>1000</batchSize>
-			<!-- Compare CRC32 checksum after uploading -->
-			<csumCheck>true</csumCheck>
-            <!-- Overwrite if destination file exists (when downloading)-->
-            <overwrite>false</overwrite>
-            <!-- Extract archive content (when downloading). 
-                Set to none to disable it;
-                Set to aar to extract only aar files; 
-                Set to all to extract all supported archive files (zip/tar/aar).-->
-            <unarchive>none</unarchive>
-			<!-- Running a daemon in background to scan for local file system changes 
-				periodically. -->
-			<daemon enabled="true">
-                <!-- Listener port. -->
-				<listenerPort>9761</listenerPort>
-				<!-- Time interval (in milliseconds) between scans -->
-				<scanInterval>60000</scanInterval>
-			</daemon>
-			<!-- Log directory location -->
-			<logDirectory>.</logDirectory>
-			<!-- Exclude empty directories for uploading -->
-			<excludeEmptyFolder>true</excludeEmptyFolder>
-            <!-- Verbose -->
-            <verbose>false</verbose>
-			<!-- Send notifications when jobs complete (Non-daemon mode only) -->
-			<notification>
-				<!-- The email recipients. Can be multiple. -->
-				<email>admin@your-domain.org</email>
-			</notification>
-		</settings>
-		<!-- download jobs -->
-		<job action="download">
-			<!-- dst directory -->
-			<directory parent="true">/path/to/dst-parent-directory</directory>
-            <!-- src asset namespace -->
-            <namespace>/path/to/src-ns</namspace>
-		</job>
-	</sync>
-</properties>
+<?xml version="1.0"?>
+<properties>
+	<server>
+		<!-- Mediaflux server host -->
+		<host>mediaflux.researchsoftware.unimelb.edu.au</host>
+		<!-- Mediaflux server port -->
+		<port>443</port>
+		<!-- Mediaflux server transport. https, http or tcp/ip -->
+		<transport>https</transport>
+		<session>
+			<!-- Retry times on Mediaflux connection failure -->
+			<connectRetryTimes>1</connectRetryTimes>
+			<!-- Time interval (in milliseconds) between retries -->
+			<connectRetryInterval>1000</connectRetryInterval>
+			<!-- Retry times on service execution error -->
+			<executeRetryTimes>1</executeRetryTimes>
+			<!-- Time interval (in milliseconds) between retries -->
+			<executeRetryInterval>1000</executeRetryInterval>
+		</session>
+	</server>
+	<credential>
+		<!-- Application name. Can be used as application key for secure identity 
+			token -->
+		<app>unimelb-mf-download</app>
+		<!-- Mediaflux user's authentication domain -->
+		<domain>DOMAIN</domain>
+		<!-- Mediaflux username -->
+		<user>USERNAME</user>
+		<!-- Mediaflux user's password -->
+		<password>PASSWD</password>
+		<!-- Mediaflux secure identity token -->
+		<token>XXXYYYZZZ</token>
+	</credential>
+	<sync>
+		<settings>
+			<!-- Number of query threads to compare local files with remote assets -->
+			<numberOfQueriers>2</numberOfQueriers>
+			<!-- Number of workers/threads to transfer (upload/download) data concurrently -->
+			<numberOfWorkers>4</numberOfWorkers>
+			<!-- Batch size for checking files with remote assets. Set to 1 will check 
+				files one by one, which will slow down significantly when there are large 
+				number of small files. -->
+			<batchSize>1000</batchSize>
+			<!-- Compare CRC32 checksum after uploading -->
+			<csumCheck>true</csumCheck>
+            <!-- Overwrite if destination file exists (when downloading)-->
+            <overwrite>false</overwrite>
+            <!-- Extract archive content (when downloading). 
+                Set to none to disable it;
+                Set to aar to extract only aar files; 
+                Set to all to extract all supported archive files (zip/tar/aar).-->
+            <unarchive>none</unarchive>
+			<!-- Running a daemon in background to scan for local file system changes 
+				periodically. -->
+			<daemon enabled="true">
+                <!-- Listener port. -->
+				<listenerPort>9761</listenerPort>
+				<!-- Time interval (in milliseconds) between scans -->
+				<scanInterval>60000</scanInterval>
+			</daemon>
+			<!-- Log directory location -->
+			<logDirectory>.</logDirectory>
+			<!-- Exclude empty directories for uploading -->
+			<excludeEmptyFolder>true</excludeEmptyFolder>
+            <!-- Verbose -->
+            <verbose>false</verbose>
+			<!-- Send notifications when jobs complete (Non-daemon mode only) -->
+			<notification>
+				<!-- The email recipients. Can be multiple. -->
+				<email>admin@your-domain.org</email>
+			</notification>
+		</settings>
+		<!-- download jobs -->
+		<job action="download">
+			<!-- dst directory -->
+			<directory parent="true">/path/to/dst-parent-directory</directory>
+            <!-- src asset namespace -->
+            <namespace>/path/to/src-ns</namspace>
+		</job>
+	</sync>
+</properties>
diff --git a/src/main/config/samples/mf-perf-config.xml b/src/main/config/samples/mf-perf-config.xml
index 31e8f61f5e1654a41b493ad56233718c8870f465..51c8c1aa06d1bd2613ef1143ce4dd8e2b345d4d5 100644
--- a/src/main/config/samples/mf-perf-config.xml
+++ b/src/main/config/samples/mf-perf-config.xml
@@ -1,37 +1,37 @@
-<?xml version="1.0"?>
-<properties>
-	<server>
-		<host>mediaflux.yourdomain.org</host>
-		<port>443</port>
-		<transport>https</transport>
-	</server>
-	<credential>
-		<domain>DOMAIN</domain>
-		<user>USER</user>
-		<password>PASSWORD</password>
-	</credential>
-	<perf>
-		<verbose>true</verbose>
-		<logDirectory>/tmp</logDirectory>
-		<test>
-			<action>ping</action>
-			<action>upload</action>
-			<action>download</action>
-			<numberOfThreads>1</numberOfThreads>
-			<useClusterIO>true</useClusterIO>
-			<useInMemoryFile>false</useInMemoryFile>
-			<numberOfFiles>10</numberOfFiles>
-			<fileSize>10000000</fileSize>
-			<namespace>/mf-perf-test</namespace>
-			<directory>/tmp/mf-perf-test</directory>
-		</test>
-		<result>
-			<asset>
-				<path>/test-result/mf-perf-result.csv</path>
-			</asset>
-			<file>
-				<path>/tmp/mf-perf-result.csv</path>
-			</file>
-		</result>
-	</perf>
-</properties>
+<?xml version="1.0"?>
+<properties>
+	<server>
+		<host>mediaflux.yourdomain.org</host>
+		<port>443</port>
+		<transport>https</transport>
+	</server>
+	<credential>
+		<domain>DOMAIN</domain>
+		<user>USER</user>
+		<password>PASSWORD</password>
+	</credential>
+	<perf>
+		<verbose>true</verbose>
+		<logDirectory>/tmp</logDirectory>
+		<test>
+			<action>ping</action>
+			<action>upload</action>
+			<action>download</action>
+			<numberOfThreads>1</numberOfThreads>
+			<useClusterIO>true</useClusterIO>
+			<useInMemoryFile>false</useInMemoryFile>
+			<numberOfFiles>10</numberOfFiles>
+			<fileSize>10000000</fileSize>
+			<namespace>/mf-perf-test</namespace>
+			<directory>/tmp/mf-perf-test</directory>
+		</test>
+		<result>
+			<asset>
+				<path>/test-result/mf-perf-result.csv</path>
+			</asset>
+			<file>
+				<path>/tmp/mf-perf-result.csv</path>
+			</file>
+		</result>
+	</perf>
+</properties>
diff --git a/src/main/config/samples/mf-upload-config.xml b/src/main/config/samples/mf-upload-config.xml
index 2302f0f89718dbaefcd5b12788cd956638bc3d49..ab0101d94c4b84c17b1fcdf08461b1ef2f55dec7 100644
--- a/src/main/config/samples/mf-upload-config.xml
+++ b/src/main/config/samples/mf-upload-config.xml
@@ -1,95 +1,95 @@
-<?xml version="1.0"?>
-<properties>
-	<server>
-		<!-- Mediaflux server host -->
-		<host>mediaflux.researchsoftware.unimelb.edu.au</host>
-		<!-- Mediaflux server port -->
-		<port>443</port>
-		<!-- Mediaflux server transport. https, http or tcp/ip -->
-		<transport>https</transport>
-		<session>
-			<!-- Retry times on Mediaflux connection failure -->
-			<connectRetryTimes>1</connectRetryTimes>
-			<!-- Time interval (in milliseconds) between retries -->
-			<connectRetryInterval>1000</connectRetryInterval>
-			<!-- Retry times on service execution error -->
-			<executeRetryTimes>1</executeRetryTimes>
-			<!-- Time interval (in milliseconds) between retries -->
-			<executeRetryInterval>1000</executeRetryInterval>
-		</session>
-	</server>
-	<credential>
-		<!-- Application name. Can be used as application key for secure identity 
-			token -->
-		<app>unimelb-mf-upload</app>
-		<!-- Mediaflux user's authentication domain -->
-		<domain>DOMAIN</domain>
-		<!-- Mediaflux username -->
-		<user>USERNAME</user>
-		<!-- Mediaflux user's password -->
-		<password>PASSWD</password>
-		<!-- Mediaflux secure identity token -->
-		<token>XXXYYYZZZ</token>
-	</credential>
-	<sync>
-		<settings>
-			<!-- Number of query threads to compare local files with remote assets -->
-			<numberOfQueriers>2</numberOfQueriers>
-			<!-- Number of workers/threads to transfer (upload/download) data concurrently -->
-			<numberOfWorkers>4</numberOfWorkers>
-			<!-- Batch size for checking files with remote assets. Set to 1 will check 
-				files one by one, which will slow down significantly when there are large 
-				number of small files. -->
-			<batchSize>1000</batchSize>
-			<!-- Compare CRC32 checksum after uploading -->
-			<csumCheck>true</csumCheck>
-            <!-- Overwrite if destination file exists (when downloading)-->
-            <overwrite>false</overwrite>
-            <!-- Extract archive content (when downloading). 
-                Set to none to disable it;
-                Set to aar to extract only aar files; 
-                Set to all to extract all supported archive files (zip/tar/aar).-->
-            <unarchive>none</unarchive>
-			<!-- Running a daemon in background to scan for local file system changes 
-				periodically. -->
-			<daemon enabled="true">
-                <!-- Listener port. -->
-				<listenerPort>9761</listenerPort>
-				<!-- Time interval (in milliseconds) between scans -->
-				<scanInterval>60000</scanInterval>
-			</daemon>
-			<!-- Log directory location -->
-			<logDirectory>.</logDirectory>
-			<!-- Exclude empty directories for uploading -->
-			<excludeEmptyFolder>true</excludeEmptyFolder>
-            <!-- Verbose -->
-            <verbose>false</verbose>
-			<!-- Send notifications when jobs complete (Non-daemon mode only) -->
-			<notification>
-				<!-- The email recipients. Can be multiple. -->
-				<email>admin@your-domain.org</email>
-			</notification>
-		</settings>
-		<!-- Upload jobs -->
-		<job action="upload">
-			<!-- source directory -->
-			<directory>/path/to/src-directory1</directory>
-            <namespace parent="true">/path/to/dst-parent-ns</namspace>
-   			<!-- Exclude empty directories for uploading -->
-			<excludeEmptyFolder>true</excludeEmptyFolder>
-   			<!-- The filter below excludes all .class files. -->
-			<exclude>**/*.class</exclude>
-		</job>
-		<job action="upload">
-			<!-- source directory -->
-			<directory>/path/to/src-directory2</directory>
-			<!-- destination asset namespace -->
-			<namespace parent="false">/path/to/dst-namespace2</namespace>
-            <!-- inclusive filter. The filter below select all sub-directories' name 
-                 start with wilson under the source directory, and all their descendants. -->
-			<include>wilson*/**</include>
-			<!-- exclusive filter. The filter below excludes all files with name: .DS_store -->
-			<exclude>**/.DS_Store</exclude>
-		</job>
-	</sync>
-</properties>
+<?xml version="1.0"?>
+<properties>
+	<server>
+		<!-- Mediaflux server host -->
+		<host>mediaflux.researchsoftware.unimelb.edu.au</host>
+		<!-- Mediaflux server port -->
+		<port>443</port>
+		<!-- Mediaflux server transport. https, http or tcp/ip -->
+		<transport>https</transport>
+		<session>
+			<!-- Retry times on Mediaflux connection failure -->
+			<connectRetryTimes>1</connectRetryTimes>
+			<!-- Time interval (in milliseconds) between retries -->
+			<connectRetryInterval>1000</connectRetryInterval>
+			<!-- Retry times on service execution error -->
+			<executeRetryTimes>1</executeRetryTimes>
+			<!-- Time interval (in milliseconds) between retries -->
+			<executeRetryInterval>1000</executeRetryInterval>
+		</session>
+	</server>
+	<credential>
+		<!-- Application name. Can be used as application key for secure identity 
+			token -->
+		<app>unimelb-mf-upload</app>
+		<!-- Mediaflux user's authentication domain -->
+		<domain>DOMAIN</domain>
+		<!-- Mediaflux username -->
+		<user>USERNAME</user>
+		<!-- Mediaflux user's password -->
+		<password>PASSWD</password>
+		<!-- Mediaflux secure identity token -->
+		<token>XXXYYYZZZ</token>
+	</credential>
+	<sync>
+		<settings>
+			<!-- Number of query threads to compare local files with remote assets -->
+			<numberOfQueriers>2</numberOfQueriers>
+			<!-- Number of workers/threads to transfer (upload/download) data concurrently -->
+			<numberOfWorkers>4</numberOfWorkers>
+			<!-- Batch size for checking files with remote assets. Set to 1 will check 
+				files one by one, which will slow down significantly when there are large 
+				number of small files. -->
+			<batchSize>1000</batchSize>
+			<!-- Compare CRC32 checksum after uploading -->
+			<csumCheck>true</csumCheck>
+            <!-- Overwrite if destination file exists (when downloading)-->
+            <overwrite>false</overwrite>
+            <!-- Extract archive content (when downloading). 
+                Set to none to disable it;
+                Set to aar to extract only aar files; 
+                Set to all to extract all supported archive files (zip/tar/aar).-->
+            <unarchive>none</unarchive>
+			<!-- Running a daemon in background to scan for local file system changes 
+				periodically. -->
+			<daemon enabled="true">
+                <!-- Listener port. -->
+				<listenerPort>9761</listenerPort>
+				<!-- Time interval (in milliseconds) between scans -->
+				<scanInterval>60000</scanInterval>
+			</daemon>
+			<!-- Log directory location -->
+			<logDirectory>.</logDirectory>
+			<!-- Exclude empty directories for uploading -->
+			<excludeEmptyFolder>true</excludeEmptyFolder>
+            <!-- Verbose -->
+            <verbose>false</verbose>
+			<!-- Send notifications when jobs complete (Non-daemon mode only) -->
+			<notification>
+				<!-- The email recipients. Can be multiple. -->
+				<email>admin@your-domain.org</email>
+			</notification>
+		</settings>
+		<!-- Upload jobs -->
+		<job action="upload">
+			<!-- source directory -->
+			<directory>/path/to/src-directory1</directory>
+            <namespace parent="true">/path/to/dst-parent-ns</namspace>
+   			<!-- Exclude empty directories for uploading -->
+			<excludeEmptyFolder>true</excludeEmptyFolder>
+   			<!-- The filter below excludes all .class files. -->
+			<exclude>**/*.class</exclude>
+		</job>
+		<job action="upload">
+			<!-- source directory -->
+			<directory>/path/to/src-directory2</directory>
+			<!-- destination asset namespace -->
+			<namespace parent="false">/path/to/dst-namespace2</namespace>
+            <!-- inclusive filter. The filter below select all sub-directories' name 
+                 start with wilson under the source directory, and all their descendants. -->
+			<include>wilson*/**</include>
+			<!-- exclusive filter. The filter below excludes all files with name: .DS_store -->
+			<exclude>**/.DS_Store</exclude>
+		</job>
+	</sync>
+</properties>
diff --git a/src/main/scripts/windows/unimelb-mf-perf.cmd b/src/main/scripts/windows/unimelb-mf-perf.cmd
index 4ee81fde2323c2a1654cdbac01036ffa32185a29..36c366094a681c8a639e9ad09cb2f2f4f4e04481 100644
--- a/src/main/scripts/windows/unimelb-mf-perf.cmd
+++ b/src/main/scripts/windows/unimelb-mf-perf.cmd
@@ -1,11 +1,11 @@
-@echo off
-
-pushd %~dp0..\..\
-set ROOT=%cd%
-popd
-
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
-
-set JAR=%ROOT%\lib\unimelb-mf-clients.jar
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.perf.cli.MFPerfCLI %*
\ No newline at end of file
+@echo off
+
+pushd %~dp0..\..\
+set ROOT=%cd%
+popd
+
+@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
+@REM set PATH=%JAVA_HOME%\bin;%PATH%
+
+set JAR=%ROOT%\lib\unimelb-mf-clients.jar
+java -Xmx200m -cp "%JAR%" unimelb.mf.client.perf.cli.MFPerfCLI %*