diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..110ccc43cea3b21dbdecde66f3a3b3e5bef2426d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "gtest"]
+	path = gtest
+	url = git@github.com:google/googletest.git
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6a02fd21c96c3dd2e22599aa11b4348c4bbee7c9
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,25 @@
+language: cpp
+
+os: linux
+
+env:
+  - CSM_LIBRARY_PATH="$HOME/miniconda/lib"
+  - CSM_INCLUDE_PATH="$HOME/miniconda/include"
+ addons:
+   apt:
+     sources:
+       - ubuntu-toolchain-r-test
+     packages:
+       - g++-6
+
+install:
+  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+       wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
+    else
+      curl -o miniconda.sh  https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh;
+    fi
+  - conda install -c usgs-astrogeology libcsm
+
+script:
+  - CXX=/usr/bin/g++-6 CC=/usr/bin/gcc-6 cmake .
+  - cmake --build . 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e9b24556adfa36ddd33ab79fec5681efd0bb031..0ce01285392b8d384651f0ad0590461f698dc88c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,12 @@
 cmake_minimum_required(VERSION 3.10)
 project(usgscsm VERSION 0.0.1 DESCRIPTION "usgscsm library")
 
+include(cmake/gtest.cmake)
+include(GNUInstallDirs)
+include(GoogleTest)
+
 set(CMAKE_CXX_STANDARD 11)
 
-include(GNUInstallDirs)
 add_library(usgscsm SHARED
             src/UsgsAstroFramePlugin.cpp
             src/UsgsAstroFrameSensorModel.cpp
@@ -22,8 +25,8 @@ set_target_properties(usgscsm PROPERTIES
     UsgsAstroLsStateData.h
 )
 
-find_library(CSM_LIBRARY csmapi REQUIRED)
-find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h)
+find_library(CSM_LIBRARY csmapi REQUIRED HINTS $ENV{CSM_LIBRARY_PATH})
+find_path(CSM_INCLUDE_DIR PATH_SUFFIXES csm NAMES csm.h HINTS $ENV{CSM_INCLUDE_PATH})
 
 target_include_directories(usgscsm
                            PUBLIC
@@ -32,12 +35,20 @@ target_include_directories(usgscsm
                            ${CSM_INCLUDE_DIR}
 )
 
-target_link_libraries(usgscsm ${CSM_LIBRARY})
+# Setup for GoogleTest
+
+find_package (Threads)
+
+target_link_libraries(usgscsm
+                      ${CSM_LIBRARY} 
+                      gtest ${CMAKE_THREAD_LIBS_INIT})
 
 install(TARGETS usgscsm
     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
     PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
 
+
+
 include(CTest)
 
 enable_testing()
diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..5534ad267be742d283e7e191541ab0b2cbc43659
--- /dev/null
+++ b/cmake/gtest.cmake
@@ -0,0 +1,17 @@
+set(GOOGLETEST_ROOT gtest/googletest CACHE STRING "Google Test source root")
+
+include_directories(SYSTEM
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/include
+    )
+
+set(GOOGLETEST_SOURCES
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest-all.cc
+    ${PROJECT_SOURCE_DIR}/${GOOGLETEST_ROOT}/src/gtest_main.cc
+    )
+
+foreach(_source ${GOOGLETEST_SOURCES})
+    set_source_files_properties(${_source} PROPERTIES GENERATED 1)
+endforeach()
+
+add_library(gtest ${GOOGLETEST_SOURCES})
\ No newline at end of file
diff --git a/gtest b/gtest
new file mode 160000
index 0000000000000000000000000000000000000000..e5e2ef7cd27cc089c1d8302a11970ef870554294
--- /dev/null
+++ b/gtest
@@ -0,0 +1 @@
+Subproject commit e5e2ef7cd27cc089c1d8302a11970ef870554294
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d4b60235ffeacd39a4a3364760e99c234b699ed1..207b959e3d0ee77156d4fa4d6d9a90e47bb2a080 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,9 +1,5 @@
 cmake_minimum_required(VERSION 3.10)
 
-# Locate GTest
-find_package(GTest REQUIRED)
-include_directories(${GTEST_INCLUDE_DIRS})
-
 # Link runTests with what we want to test and the GTest and pthread library
 add_executable(runTests TestyMcTestFace.cpp)
 target_link_libraries(runTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)