diff --git a/CMake/Utilities/imstkExternalDataDownloadTest.cmake b/CMake/Utilities/imstkExternalDataDownloadTest.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..0eff52c48e84a843805a63fd0537075cca94c4f2
--- /dev/null
+++ b/CMake/Utilities/imstkExternalDataDownloadTest.cmake
@@ -0,0 +1,29 @@
+#-----------------------------------------------------------------------------
+# Add ExternalData
+#-----------------------------------------------------------------------------
+# Remove the data if already here
+set(hashStampPath "${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt-hash-stamp")
+if(EXISTS hashStampPath)
+  file(READ hashStampPath hash)
+  string(STRIP "${hash}" hash)
+endif()
+execute_process(
+    COMMAND rm ${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt
+    COMMAND rm ${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt-hash-stamp
+    COMMAND rm ${ExternalData_BINARY_ROOT}/Objects/SHA512/${hash}
+    OUTPUT_QUIET
+    ERROR_QUIET)
+
+# Download the data
+imstk_add_data(ExternalDataTest "Testing/ExternalDataTest.txt")
+
+#-----------------------------------------------------------------------------
+# Add Test
+#-----------------------------------------------------------------------------
+# Check if the data has been correctly downloaded
+add_test(
+  NAME imstkExternalDataTest
+  COMMAND ${CMAKE_COMMAND}
+  -DFileToCheck=${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt
+  -P ${CMAKE_SOURCE_DIR}/CMake/Utilities/imstkCheckFileExists.cmake
+)
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8d8405eb99b0387c03ea187f47d423b720e2249e..3fecf1af911e10c4707ad76986a6f8b1b6a34417 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -377,11 +377,30 @@ install(
     Devel
   )
 
+#--------------------------------------------------------------------------
+# Test data download
+#--------------------------------------------------------------------------
+include(imstkExternalDataDownloadTest)
+
+#--------------------------------------------------------------------------
+# Append external data needed for testing to be downloaded later
+#--------------------------------------------------------------------------
+list(APPEND FILE_LIST
+    asianDragon/,REGEX:.*
+    human/,REGEX:.*
+    oneTet/,REGEX:.*)
+    
 #--------------------------------------------------------------------------
 # Add Examples subdirectories
 #--------------------------------------------------------------------------
-add_subdirectory(Examples)
+if(BUILD_EXAMPLES)
+    add_subdirectory(Examples)
+endif()
 
+#-----------------------------------------------------------------------------
+# Download the external data needed for both testing and examples
+#-----------------------------------------------------------------------------
+imstk_add_data(${PROJECT_NAME} ${FILE_LIST})
 
 #--------------------------------------------------------------------------
 # Innerbuild dummy test
@@ -389,4 +408,4 @@ add_subdirectory(Examples)
 add_test(
   NAME imstkDummyTest
   COMMAND ${CMAKE_COMMAND} -E echo "Success"
-)
+)
\ No newline at end of file
diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt
index 4002d359775dc4efa802a0feee060b86551b9e3a..274d53b038823f1011fdf7148391817637a79409 100644
--- a/Examples/CMakeLists.txt
+++ b/Examples/CMakeLists.txt
@@ -1,44 +1,7 @@
-#-----------------------------------------------------------------------------
-# Add ExternalData
-#-----------------------------------------------------------------------------
-# Remove the data if already here
-set(hashStampPath "${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt-hash-stamp")
-if(EXISTS hashStampPath)
-  file(READ hashStampPath hash)
-  string(STRIP "${hash}" hash)
-endif()
-execute_process(
-    COMMAND rm ${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt
-    COMMAND rm ${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt-hash-stamp
-    COMMAND rm ${ExternalData_BINARY_ROOT}/Objects/SHA512/${hash}
-    OUTPUT_QUIET
-    ERROR_QUIET)
-
-# Download the data
-imstk_add_data(ExternalDataTest "Testing/ExternalDataTest.txt")
-
-#-----------------------------------------------------------------------------
-# Add Test
-#-----------------------------------------------------------------------------
-# Check if the data has been correctly downloaded
-add_test(
-  NAME imstkExternalDataTest
-  COMMAND ${CMAKE_COMMAND}
-  -DFileToCheck=${ExternalData_BINARY_ROOT}/Data/Testing/ExternalDataTest.txt
-  -P ${CMAKE_SOURCE_DIR}/CMake/Utilities/imstkCheckFileExists.cmake
-)
-
-# Associate external data needed for testing
-list(APPEND FILE_LIST
-    asianDragon/,REGEX:.*,
-    human/,REGEX:.*,
-    oneTet/,REGEX:.*)
-
 #-----------------------------------------------------------------------------
 # Add Example subdirectories
 #-----------------------------------------------------------------------------
-if(BUILD_EXAMPLES)
-    macro(listOfSubDir result curdir)
+macro(listOfSubDir result curdir)
       file(GLOB children RELATIVE ${curdir} ${curdir}/*)
       set(dirlist "")
       foreach(child ${children})
@@ -53,10 +16,6 @@ if(BUILD_EXAMPLES)
 
     foreach(subdir ${subDirs})
       add_subdirectory(${subdir})
-    endforeach()
-endif()
+endforeach()
+
 
-#-----------------------------------------------------------------------------
-# Add external data
-#-----------------------------------------------------------------------------
-imstk_add_data(${PROJECT_NAME} ${FILE_LIST})