diff --git a/.circleci/config.yml b/.circleci/config.yml
index a8aaab29d04a460f4eb1d553e3d3bf62ed99f45b..d579b60e5f03523d27121f590250d5d3f491b744 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,16 +1,17 @@
 defaults: &defaults
-  working_directory: /home/adios2/hidecirclesource
+  working_directory: /home/adios2
   steps:
-    - checkout
+    - checkout:
+        path: /home/adios2/source
     - run:
         name: Configure
-        command: bash --login $CIRCLE_WORKING_DIRECTORY/scripts/circle/runOnCircle.sh configure
+        command: bash --login source/scripts/circle/runOnCircle.sh configure
     - run:
         name: Build
-        command: bash --login $CIRCLE_WORKING_DIRECTORY/scripts/circle/runOnCircle.sh build
+        command: bash --login source/scripts/circle/runOnCircle.sh build
     - run:
         name: Test
-        command: bash --login $CIRCLE_WORKING_DIRECTORY/scripts/circle/runOnCircle.sh test
+        command: bash --login source/scripts/circle/runOnCircle.sh test
 
 version: 2
 
diff --git a/.gitignore b/.gitignore
index 04e38af8eabeb74636565371d2f097b1143b8827..e8f3faf4a79b32344df3ad93783d6da29a36cd74 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,5 @@
 *.bp.dir
 build/
 
+# Mac OSX finder-related files
+.DS_Store
diff --git a/scripts/circle/.dockerignore b/scripts/circle/.dockerignore
index 4293e59caf3af13a832da57c3db1dfc76ca7e8fe..5e89737d45787bd093c1ac4c6d3d3034825ed06f 100644
--- a/scripts/circle/.dockerignore
+++ b/scripts/circle/.dockerignore
@@ -1,3 +1,3 @@
 runOnCircle.sh
 postComment.sh
-
+*.cmake
diff --git a/scripts/circle/Dockerfile b/scripts/circle/Dockerfile
index a9387bc7c2017a034bf08a79e69fa78731000cb6..8d391cc385ac98e0779796ccbb52e6e7d3f0d99b 100644
--- a/scripts/circle/Dockerfile
+++ b/scripts/circle/Dockerfile
@@ -1,36 +1,79 @@
-FROM centos:centos7.3.1611
-
-RUN yum -y update && \
-    yum -y install \
-        bzip2-devel.x86_64 \
-        curl \
-        git \
-        gcc \
-        gcc-c++ \
-        gcc-gfortran \
-        gmake \
-        hdf5-devel.x86_64 \
-        numpy.x86_64 \
-        python-devel.x86_64 \
-        https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
-
-RUN yum -y update && \
-    yum -y install \
-        ohpc-base \
-        openmpi-gnu7-ohpc \
-        phdf5-gnu7-openmpi-ohpc \
-        netcdf-gnu7-openmpi-ohpc
+FROM centos:centos7
 
-WORKDIR /home/adios2
+# Install extra repos
+RUN yum -y install epel-release https://github.com/openhpc/ohpc/releases/download/v1.3.GA/ohpc-release-1.3-1.el7.x86_64.rpm
+
+# Install core dev packages
+RUN yum -y install \
+      curl file \
+      gcc gcc-c++ gcc-gfortran \
+      git make autoconf automake libtool\
+      bzip2-devel zeromq-devel hdf5-devel \
+      python-devel numpy
+
+# Install gcc7 OpenHPC packages
+RUN yum -y install \
+      lmod-ohpc gnu7-compilers-ohpc openmpi-gnu7-ohpc phdf5-gnu7-openmpi-ohpc \
+      python-numpy-gnu7-ohpc
+
+# Cleanup headers and packages
+RUN yum clean all
+
+# Install the CMake binary
+WORKDIR /opt/cmake/3.6.0
+RUN curl -L https://cmake.org/files/v3.6/cmake-3.6.0-Linux-x86_64.tar.gz | \
+      tar --strip-components=1 -xzv
+
+# ZFP
+WORKDIR /opt/zfp
+RUN mkdir build install && \
+    git clone https://github.com/LLNL/zfp.git src && \
+    cd build && \
+    /opt/cmake/3.6.0/bin/cmake \
+      -DCMAKE_INSTALL_PREFIX=/opt/zfp/install \
+      ../src && \
+    make -j8 install && \
+    cd ../ && \
+    rm -rf build src
+
+# ADIOS1
+
+# Source setup
+WORKDIR /opt/adios1/1.12.0
+RUN mkdir source && \
+    curl -L https://github.com/ornladios/ADIOS/archive/v1.12.0.tar.gz | \
+      tar -C source --strip-components=1 -xzv && \
+    cd source && ./autogen.sh
+
+# GCC 4.8
+RUN cd source && \
+    CFLAGS="-O2 -fPIC" CXXFLAGS="-O2 -fPIC" FCFLAGS="-O2 -fPIC" \
+      ./configure --prefix=/opt/adios1/1.12.0/gnu48 --without-mpi && \
+    make -j8 install && \
+    make distclean
+
+# GCC 7
+RUN cd source && \
+    . /etc/profile && \
+    module load gnu7 openmpi phdf5 && \
+    CFLAGS="-O2 -fPIC" CXXFLAGS="-O2 -fPIC" FCFLAGS="-O2 -fPIC" \
+      ./configure --prefix=/opt/adios1/1.12.0/gnu7_openmpi && \
+    make -j8 install
+
+# Cleanup
+RUN rm -rf /opt/adios1/1.12.0/source
 
-RUN curl -O https://cmake.org/files/v3.6/cmake-3.6.0-Linux-x86_64.tar.gz && \
-    mkdir -p /opt/cmake && \
-    cd /opt/cmake && \
-    tar -zxvf /home/adios2/cmake-3.6.0-Linux-x86_64.tar.gz && \
-    rm -rf /home/adios2/cmake-3.6.0-Linux-x86_64.tar.gz && \
-    ln -s /opt/cmake/cmake-3.6.0-Linux-x86_64/bin/cmake /usr/local/bin/cmake && \
-    ln -s /opt/cmake/cmake-3.6.0-Linux-x86_64/bin/cpack /usr/local/bin/cpack && \
-    ln -s /opt/cmake/cmake-3.6.0-Linux-x86_64/bin/ctest /usr/local/bin/ctest && \
-    mkdir -p /home/adios2/hidecirclesource
+# Create a non-root user to run the builds/tests
+RUN export uid=1001 gid=1001 && \
+    mkdir -p /home/adios2 && \
+    echo "adios2:x:${uid}:${gid}:adios2,,,:/home/adios2:/bin/bash" >> /etc/passwd && \
+    echo "adios2:x:${uid}:" >> /etc/group && \
+    mkdir -p /etc/sudoers.d && \
+    echo "adios2 ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/adios2 && \
+    chmod 0440 /etc/sudoers.d/adios2 && \
+    chown ${uid}:${gid} -R /home/adios2
 
+USER adios2
+ENV HOME /home/adios2
 WORKDIR /home/adios2
+CMD /bin/bash
diff --git a/scripts/circle/circle_el7-gcc48.cmake b/scripts/circle/circle_el7-gcc48.cmake
index ed0fa8dd6ebb586ada7eaed7bb7185289f9d99f7..fe5696c9d4f020badf9e54cd7f5413eac51687a0 100644
--- a/scripts/circle/circle_el7-gcc48.cmake
+++ b/scripts/circle/circle_el7-gcc48.cmake
@@ -9,7 +9,7 @@ set(CTEST_TEST_ARGS PARALLEL_LEVEL 4)
 set(dashboard_model Experimental)
 set(dashboard_binary_name "build-$ENV{CIRCLE_JOB}")
 
-set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}")
+set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}/source")
 set(CTEST_DASHBOARD_ROOT "$ENV{HOME}")
 
 include(${CMAKE_CURRENT_LIST_DIR}/EnvironmentModules.cmake)
@@ -29,6 +29,8 @@ ADIOS2_USE_MPI:STRING=OFF
 ADIOS2_USE_Python:STRING=ON
 ADIOS2_USE_ZFP:STRING=ON
 ADIOS2_USE_ZeroMQ:STRING=ON
+ZFP_ROOT_DIR:PATH=/opt/zfp/install
+ADIOS1_ROOT:PATH=/opt/adios1/1.12.0/gnu48
 ")
 
 include(${CMAKE_CURRENT_LIST_DIR}/../dashboard/adios_common.cmake)
diff --git a/scripts/circle/circle_el7-gcc7-openmpi.cmake b/scripts/circle/circle_el7-gcc7-openmpi.cmake
index 4171fb10343db80e417c04ba932dcd7742b84baf..e1378a3b0e0aade482e4bb959fc2c7c393574771 100644
--- a/scripts/circle/circle_el7-gcc7-openmpi.cmake
+++ b/scripts/circle/circle_el7-gcc7-openmpi.cmake
@@ -9,7 +9,7 @@ set(CTEST_TEST_ARGS PARALLEL_LEVEL 4)
 set(dashboard_model Experimental)
 set(dashboard_binary_name "build_$ENV{CIRCLE_JOB}")
 
-set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}")
+set(CTEST_SOURCE_DIRECTORY "$ENV{CIRCLE_WORKING_DIRECTORY}/source")
 set(CTEST_DASHBOARD_ROOT "$ENV{HOME}")
 
 include(${CMAKE_CURRENT_LIST_DIR}/EnvironmentModules.cmake)
@@ -17,7 +17,7 @@ module(purge)
 module(load gnu7)
 module(load openmpi)
 module(load phdf5)
-module(load netcdf)
+module(load python)
 
 set(ENV{CC}  gcc)
 set(ENV{CXX} g++)
@@ -30,9 +30,11 @@ ADIOS2_USE_DataMan:STRING=ON
 ADIOS2_USE_Fortran:STRING=ON
 ADIOS2_USE_HDF5:STRING=ON
 ADIOS2_USE_MPI:STRING=ON
-ADIOS2_USE_Python:STRING=ON
+ADIOS2_USE_Python:STRING=OFF
 ADIOS2_USE_ZFP:STRING=ON
 ADIOS2_USE_ZeroMQ:STRING=ON
+ZFP_ROOT_DIR:PATH=/opt/zfp/install
+ADIOS1_ROOT:PATH=/opt/adios1/1.12.0/gnu7_openmpi
 ")
 
 include(${CMAKE_CURRENT_LIST_DIR}/../dashboard/adios_common.cmake)
diff --git a/scripts/circle/runOnCircle.sh b/scripts/circle/runOnCircle.sh
index 9e4e321fff0ea3716303e19940d3aa20dd8adfca..75eab7ae295af42026cbc4ab2e0cf40434c645ea 100755
--- a/scripts/circle/runOnCircle.sh
+++ b/scripts/circle/runOnCircle.sh
@@ -12,7 +12,8 @@ check_var CIRCLE_WORKING_DIRECTORY
 check_var CIRCLE_BRANCH
 check_var CIRCLE_JOB
 
-CTEST_SCRIPT="${CIRCLE_WORKING_DIRECTORY}/scripts/circle/circle_${CIRCLE_JOB}.cmake"
+SOURCE_DIR=${CIRCLE_WORKING_DIRECTORY}/source
+CTEST_SCRIPT="${SOURCE_DIR}/scripts/circle/circle_${CIRCLE_JOB}.cmake"
 
 if [ ! -f "${CTEST_SCRIPT}" ]
 then
@@ -30,4 +31,4 @@ case "$1" in
     ;;
 esac
 
-ctest -VV -S ${CTEST_SCRIPT} -Ddashboard_full=OFF -Ddashboard_do_${STEP}=TRUE
+/opt/cmake/3.6.0/bin/ctest -VV -S ${CTEST_SCRIPT} -Ddashboard_full=OFF -Ddashboard_do_${STEP}=TRUE
diff --git a/scripts/dashboard/common.cmake b/scripts/dashboard/common.cmake
index 08f91ada37449a0960b6e234c84feec86e2c5876..ba68c7ef7bc68bf56e369427261c9f5f3ccdc4c8 100644
--- a/scripts/dashboard/common.cmake
+++ b/scripts/dashboard/common.cmake
@@ -393,7 +393,12 @@ if(dashboard_do_test)
     dashboard_hook_test()
   endif()
   message("Calling ctest_test")
-  ctest_test(${CTEST_TEST_ARGS})
+  ctest_test(${CTEST_TEST_ARGS} RETURN_VALUE TEST_RESULTS)
+  if(${TEST_RESULTS} EQUAL 0)
+    message("ctest test results return value: ${TEST_RESULTS}")
+  else()
+    message(SEND_ERROR "Some tests failed")
+  endif()
   ctest_submit(PARTS Test)
 endif()