diff --git a/CMakeLists.txt b/CMakeLists.txt
index df4e0d599d6d425cd99e852bd44c6bb01a5a24cf..6918c6fe947d815ccd678ac4ba3d67379256ceb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -70,6 +70,9 @@
 IF(NOT KWSYS_NAMESPACE)
   SET(KWSYS_NAMESPACE "kwsys")
   SET(KWSYS_STANDALONE 1)
+ENDIF(NOT KWSYS_NAMESPACE)
+
+IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
   SET(KWSYS_ENABLE_C 1)
 
   # Enable all components.
@@ -79,7 +82,7 @@ IF(NOT KWSYS_NAMESPACE)
   SET(KWSYS_USE_RegularExpression 1)
   SET(KWSYS_USE_SystemTools 1)
   SET(KWSYS_USE_CommandLineArguments 1)
-ENDIF(NOT KWSYS_NAMESPACE)
+ENDIF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
 
 #-----------------------------------------------------------------------------
 # The project name is that of the specified namespace.
@@ -87,7 +90,7 @@ PROJECT(${KWSYS_NAMESPACE})
 
 # Enable testing if building standalone.
 IF(KWSYS_STANDALONE)
-  INCLUDE(${CMAKE_ROOT}/Modules/Dart.cmake)
+  INCLUDE(Dart)
   MARK_AS_ADVANCED(BUILD_TESTING DART_ROOT TCL_TCLSH)
   IF(BUILD_TESTING)
     ENABLE_TESTING()
@@ -300,16 +303,6 @@ FOREACH(c Directory RegularExpression SystemTools CommandLineArguments)
   ENDIF(KWSYS_USE_${c})
 ENDFOREACH(c)
 
-IF(KWSYS_USE_CommandLineArguments)
-  IF(NOT ParaView_SOURCE_DIR)
-    IF(NOT CMake_SOURCE_DIR)
-      IF(NOT KWSYS_STANDALONE)
-        MESSAGE("Command Line Arguments is experimental code for now")
-      ENDIF(NOT KWSYS_STANDALONE)
-    ENDIF(NOT CMake_SOURCE_DIR)
-  ENDIF(NOT ParaView_SOURCE_DIR)
-ENDIF(KWSYS_USE_CommandLineArguments)
-
 # Add selected C components.
 FOREACH(c Process Base64)
   IF(KWSYS_USE_${c})
@@ -463,17 +456,25 @@ ENDIF(KWSYS_USE_Process)
 
 #-----------------------------------------------------------------------------
 # Setup testing if not being built as part of another project.
-IF(KWSYS_STANDALONE)
-  ADD_EXECUTABLE(testIOS testIOS.cxx)
-  ADD_EXECUTABLE(testhash testhash.cxx)
-  ADD_EXECUTABLE(testProcess testProcess.c)
-  ADD_EXECUTABLE(test1 test1.cxx)
-  ADD_EXECUTABLE(testCommandLineArguments testCommandLineArguments.cxx)
-  TARGET_LINK_LIBRARIES(testIOS ${KWSYS_NAMESPACE})
-  TARGET_LINK_LIBRARIES(testhash ${KWSYS_NAMESPACE})
-  TARGET_LINK_LIBRARIES(testProcess ${KWSYS_NAMESPACE}_c)
-  TARGET_LINK_LIBRARIES(test1 ${KWSYS_NAMESPACE})
-  TARGET_LINK_LIBRARIES(testCommandLineArguments ${KWSYS_NAMESPACE})
+IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
+  # C++ tests
+  FOREACH(test
+      testSystemTools
+      testIOS
+      testhash
+      test1
+      testCommandLineArguments
+      )
+    ADD_EXECUTABLE(${test} ${test}.cxx)
+    TARGET_LINK_LIBRARIES(${test} ${KWSYS_NAMESPACE})
+  ENDFOREACH(test)
+  # C tests
+  FOREACH(test
+      testProcess
+      )
+    ADD_EXECUTABLE(${test} ${test}.c)
+    TARGET_LINK_LIBRARIES(${test} ${KWSYS_NAMESPACE}_c)
+  ENDFOREACH(test)
 
   SET(EXEC_DIR "${CMAKE_CURRENT_BINARY_DIR}")
   IF(EXECUTABLE_OUTPUT_PATH)
@@ -481,11 +482,13 @@ IF(KWSYS_STANDALONE)
   ENDIF(EXECUTABLE_OUTPUT_PATH)
 
   IF(BUILD_TESTING)
-    ADD_TEST(testProcess-1 ${EXEC_DIR}/testProcess 1)
-    ADD_TEST(testProcess-2 ${EXEC_DIR}/testProcess 2)
-    ADD_TEST(testProcess-3 ${EXEC_DIR}/testProcess 3)
-    ADD_TEST(testProcess-4 ${EXEC_DIR}/testProcess 4)
-    ADD_TEST(testProcess-5 ${EXEC_DIR}/testProcess 5)
-    ADD_TEST(testProcess-6 ${EXEC_DIR}/testProcess 6)
+    ADD_TEST(kwsys-testSystemTools ${EXEC_DIR}/testSystemTools)
+    ADD_TEST(kwsys-testProcess-1 ${EXEC_DIR}/testProcess 1)
+    ADD_TEST(kwsys-testProcess-2 ${EXEC_DIR}/testProcess 2)
+    ADD_TEST(kwsys-testProcess-3 ${EXEC_DIR}/testProcess 3)
+    ADD_TEST(kwsys-testProcess-4 ${EXEC_DIR}/testProcess 4)
+    ADD_TEST(kwsys-testProcess-5 ${EXEC_DIR}/testProcess 5)
+    ADD_TEST(kwsys-testProcess-6 ${EXEC_DIR}/testProcess 6)
+    ADD_TEST(kwsys-hash ${EXEC_DIR}/testhash)
   ENDIF(BUILD_TESTING)
-ENDIF(KWSYS_STANDALONE)
+ENDIF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
diff --git a/Configure.hxx.in b/Configure.hxx.in
index a9a35a82b65e222d7afcb24d9af1f72160869df9..2b5e5ab12f1d5276ece455949eda99bc66456983 100644
--- a/Configure.hxx.in
+++ b/Configure.hxx.in
@@ -105,6 +105,7 @@
 # if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
 #  define kwsys_stl @KWSYS_NAMESPACE@_stl
 #  define kwsys_ios @KWSYS_NAMESPACE@_ios
+#  define kwsys     @KWSYS_NAMESPACE@
 # endif
 # define KWSYS_NAME_IS_KWSYS            @KWSYS_NAMESPACE@_NAME_IS_KWSYS
 # define KWSYS_STL_HAVE_STD             @KWSYS_NAMESPACE@_STL_HAVE_STD
diff --git a/Process.h.in b/Process.h.in
index 0d6c4be5191e402882765bcc91115915b2d75ee8..a773ab01d421db767d1edb7efe8a4bca6043cbbc 100644
--- a/Process.h.in
+++ b/Process.h.in
@@ -322,9 +322,9 @@ kwsysEXPORT void kwsysProcess_Kill(kwsysProcess* cp);
 } /* extern "C" */
 #endif
 
-/* If we are building a kwsysProcess .c file, let it use these macros.
+/* If we are building a kwsys .c or .cxx file, let it use these macros.
    Otherwise, undefine them to keep the namespace clean.  */
-#if !defined(KWSYS_IN_PROCESS_C)
+#if !defined(KWSYS_NAMESPACE)
 # undef kwsys_ns
 # undef kwsysEXPORT
 # undef kwsysProcess
diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index 1df588175e6f35dd6df069afcb144a2ec4d0338b..e6c092337204c77519fed63883fb55e9701278b6 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -11,7 +11,6 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#define KWSYS_IN_PROCESS_C
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Process.h)
 
diff --git a/ProcessWin32.c b/ProcessWin32.c
index 68cd6591e867c10ab8857b5260dbf8af7746b1b4..fb8ec651926e5f4b5014a8059f6808dd5e695dd2 100644
--- a/ProcessWin32.c
+++ b/ProcessWin32.c
@@ -11,7 +11,6 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#define KWSYS_IN_PROCESS_C
 #include "kwsysPrivate.h"
 #include KWSYS_HEADER(Process.h)
 
diff --git a/test1.cxx b/test1.cxx
index 183ea8618cbd77c265b77c301db0df3b378a51b4..a3f5b2f0aabdc1f541113b06e0f01e9743ae59fa 100644
--- a/test1.cxx
+++ b/test1.cxx
@@ -11,9 +11,10 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include <kwsys/Directory.hxx>
-#include <kwsys/Process.h>
-#include <kwsys/ios/iostream>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Directory.hxx)
+#include KWSYS_HEADER(Process.h)
+#include KWSYS_HEADER(ios/iostream)
 
 int main()
 {
diff --git a/testCommandLineArguments.cxx b/testCommandLineArguments.cxx
index af072922ea74be6d7591ea737671a43a0c299c17..6ed10468a1f5fdfbaf41618fdf84a7784f5118c1 100644
--- a/testCommandLineArguments.cxx
+++ b/testCommandLineArguments.cxx
@@ -11,9 +11,10 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include <kwsys/CommandLineArguments.hxx>
+#include "kwsysPrivate.h"
 
-#include <kwsys/ios/iostream>
+#include KWSYS_HEADER(CommandLineArguments.hxx)
+#include KWSYS_HEADER(ios/iostream)
 
 void* random_ptr = (void*)0x123;
 
diff --git a/testIOS.cxx b/testIOS.cxx
index f1441f6a6e795b546b5518cc0223c5affda984bb..a6f33d852a2b9922edf434e11cd6e1903579c131 100644
--- a/testIOS.cxx
+++ b/testIOS.cxx
@@ -1,6 +1,7 @@
-#include <kwsys/stl/vector>
-#include <kwsys/ios/sstream>
-#include <kwsys/ios/iostream>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(stl/vector)
+#include KWSYS_HEADER(ios/sstream)
+#include KWSYS_HEADER(ios/iostream)
 
 int main()
 {
diff --git a/testProcess.c b/testProcess.c
index 6b94e8f0dc953bbf3f396ad6438dce71c7934367..7aa147692155bd345c21c887ce825b370435e074 100644
--- a/testProcess.c
+++ b/testProcess.c
@@ -11,7 +11,8 @@
      PURPOSE.  See the above copyright notices for more information.
 
 =========================================================================*/
-#include <kwsys/Process.h>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(Process.h)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/testSystemTools.cxx b/testSystemTools.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..069aeca3a10d5d95ed85149dfb7921af0ba32aec
--- /dev/null
+++ b/testSystemTools.cxx
@@ -0,0 +1,64 @@
+/*=========================================================================
+
+  Program:   KWSys - Kitware System Library
+  Module:    testSystemTools.cxx
+
+  Copyright (c) Kitware, Inc., Insight Consortium.  All rights reserved.
+  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(SystemTools.hxx)
+#include KWSYS_HEADER(ios/iostream)
+
+const char* toUnixPaths[][2] = 
+{
+    { "/usr/local/bin/passwd", "/usr/local/bin/passwd" },
+    { "/usr/lo cal/bin/pa sswd", "/usr/lo cal/bin/pa sswd" },
+    { "/usr/lo\\ cal/bin/pa\\ sswd", "/usr/lo\\ cal/bin/pa\\ sswd" },
+    { "c:/usr/local/bin/passwd", "c:/usr/local/bin/passwd" },
+    { "c:/usr/lo cal/bin/pa sswd", "c:/usr/lo cal/bin/pa sswd" },
+    { "c:/usr/lo\\ cal/bin/pa\\ sswd", "c:/usr/lo\\ cal/bin/pa\\ sswd" },
+    { "\\usr\\local\\bin\\passwd", "/usr/local/bin/passwd" },
+    { "\\usr\\lo cal\\bin\\pa sswd", "/usr/lo cal/bin/pa sswd" },
+    { "\\usr\\lo\\ cal\\bin\\pa\\ sswd", "/usr/lo\\ cal/bin/pa\\ sswd" },
+    { "c:\\usr\\local\\bin\\passwd", "c:/usr/local/bin/passwd" },
+    { "c:\\usr\\lo cal\\bin\\pa sswd", "c:/usr/lo cal/bin/pa sswd" },
+    { "c:\\usr\\lo\\ cal\\bin\\pa\\ sswd", "c:/usr/lo\\ cal/bin/pa\\ sswd" },
+    { "\\\\usr\\local\\bin\\passwd", "//usr/local/bin/passwd" },
+    { "\\\\usr\\lo cal\\bin\\pa sswd", "//usr/lo cal/bin/pa sswd" },
+    { "\\\\usr\\lo\\ cal\\bin\\pa\\ sswd", "//usr/lo\\ cal/bin/pa\\ sswd" },
+    {0, 0}
+};
+
+bool CheckConvertToUnixSlashes(kwsys_stl::string input, kwsys_stl::string output)
+{
+  kwsys_stl::string result = input;
+  kwsys::SystemTools::ConvertToUnixSlashes(result);
+  if ( result != output )
+    {
+    kwsys_ios::cerr << "Problem with ConvertToUnixSlashes - input: " << input.c_str() << " output: " << result.c_str() << " expected: " << output.c_str() << kwsys_ios::endl;
+    return false;
+    }
+  return true;
+}
+
+int main(/*int argc, char* argv*/)
+{
+  int cc;
+  for ( cc = 0; toUnixPaths[cc][0]; cc ++ )
+    {
+    CheckConvertToUnixSlashes(toUnixPaths[cc][0], toUnixPaths[cc][1]);
+    }
+    {
+    // Special check for ~
+    kwsys_stl::string output = kwsys::SystemTools::GetEnv("HOME");
+    output += "/foo bar/lala";
+    CheckConvertToUnixSlashes("~/foo bar/lala", output);
+    }
+  return 0;
+}
diff --git a/testhash.cxx b/testhash.cxx
index 0ca54e63ff8e127df7c8ae49bd9ca457a8485e89..8360a187f609d0d1ac99577fb10bf58f30e7bc35 100644
--- a/testhash.cxx
+++ b/testhash.cxx
@@ -1,7 +1,7 @@
-#include <kwsys/hash_map.hxx>
-#include <kwsys/hash_set.hxx>
-
-#include <kwsys/ios/iostream>
+#include "kwsysPrivate.h"
+#include KWSYS_HEADER(hash_map.hxx)
+#include KWSYS_HEADER(hash_set.hxx)
+#include KWSYS_HEADER(ios/iostream)
 
 #if defined(_MSC_VER)
 # pragma warning (disable:4786)