first try
diff --git a/.travis.yml b/.travis.yml
index 929095b..fc631ee 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,175 +1,228 @@
+#########################
+# project configuration #
+#########################
+
+# C++ project
 language: cpp
 
-dist: trusty
-sudo: required
+# container-based build
+sudo: false
 
-env:
-  global:
-   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
-   #   via the "travis encrypt" command using the project repo's public key
-   - secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
+addons:
+  apt:
+    packages:
+      - g++-6
+    sources: &sources
+      - ubuntu-toolchain-r-test
 
-# from http://stackoverflow.com/a/32127147/266378
+
+################
+# build matrix #
+################
+
 matrix:
   include:
-    - os: linux
-      compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-4.9', 'valgrind', 'python-pip', 'python-yaml']
-      before_script:
-        - pip install --user git+git://github.com/eddyxu/cpp-coveralls.git
-      after_success:
-        - make clean
-        - touch src/json.hpp
-        - make json_unit CXXFLAGS="-fprofile-arcs -ftest-coverage -std=c++11 -lstdc++" CXX=$COMPILER
-        - test/json_unit "*"
-        - coveralls --build-root test --exclude src/catch.hpp --exclude src/unit-algorithms.cpp --exclude src/unit-allocator.cpp --exclude src/unit-capacity.cpp --exclude src/unit-class_const_iterator.cpp --exclude src/unit-class_iterator.cpp --exclude src/unit-class_lexer.cpp --exclude src/unit-class_parser.cpp --exclude src/unit-comparison.cpp --exclude src/unit-concepts.cpp --exclude src/unit-constructor1.cpp --exclude src/unit-constructor2.cpp --exclude src/unit-convenience.cpp --exclude src/unit-conversions.cpp --exclude src/unit-deserialization.cpp --exclude src/unit-element_access1.cpp --exclude src/unit-element_access2.cpp --exclude src/unit-inspection.cpp --exclude src/unit-iterator_wrapper.cpp --exclude src/unit-iterators1.cpp --exclude src/unit-iterators2.cpp --exclude src/unit-json_patch.cpp --exclude src/unit-json_pointer.cpp --exclude src/unit-modifiers.cpp --exclude src/unit-pointer_access.cpp --exclude src/unit-readme.cpp --exclude src/unit-reference_access.cpp --exclude src/unit-regression.cpp --exclude src/unit-serialization.cpp --exclude src/unit-testsuites.cpp --exclude src/unit-unicode.cpp --include ../src/json.hpp --gcov-options '\-lp' --gcov 'gcov-4.9'
-      env: COMPILER=g++-4.9  
 
-    - os: linux
-      compiler: gcc
-      before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-5', 'valgrind']
-        coverity_scan:
-          project:
-            name: "nlohmann/json"
-            description: "Build submitted via Travis CI"
-          notification_email: niels.lohmann@gmail.com
-          build_command_prepend: "make clean ; sudo cp $(which g++-5) $(which g++)"
-          build_command: "make"
-          branch_pattern: coverity_scan
-      env: COMPILER=g++-5
+  - os: osx
+    osx_image: xcode7.3
 
-    - os: linux
-      compiler: gcc
-      addons:
-        apt:
-          sources: ['ubuntu-toolchain-r-test']
-          packages: ['g++-6', 'valgrind']
-      env: COMPILER=g++-6
+  - os: osx
+    osx_image: xcode8
 
-    # from https://github.com/travis-ci/travis-ci/issues/6120
-    - os: linux
-      env:
-        - LLVM_VERSION=3.8.0
-        - LLVM_ARCHIVE_PATH=$HOME/clang+llvm.tar.xz
-        - COMPILER=clang++
-        - CPPFLAGS="-I $HOME/clang-$LLVM_VERSION/include/c++/v1"
-        - LDFLAGS=-lc++
-        - PATH=$HOME/clang-$LLVM_VERSION/bin:$PATH
-        - LD_LIBRARY_PATH=$HOME/clang-$LLVM_VERSION/lib:$LD_LIBRARY_PATH
-      before_install:
-       - wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-14.04.tar.xz -O $LLVM_ARCHIVE_PATH
-       - mkdir $HOME/clang-$LLVM_VERSION
-       - tar xf $LLVM_ARCHIVE_PATH -C $HOME/clang-$LLVM_VERSION --strip-components 1
+  - os: linux
+    env: COMPILER=g++-6
+    compiler: gcc
 
-    # Clang 3.5 is not able to compile the code,
-    # see https://travis-ci.org/nlohmann/json/jobs/126720186
 
-#    - os: linux
-#      compiler: clang
-#      addons:
-#        apt:
-#          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
-#          packages: ['clang-3.6', 'valgrind']
-#      env: COMPILER=clang++-3.6
-#
-#    - os: linux
-#      compiler: clang
-#      addons:
-#        apt:
-#          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
-#          packages: ['clang-3.7', 'valgrind']
-#      env: COMPILER=clang++-3.7
-#
-#    - os: linux
-#      compiler: clang
-#      addons:
-#        apt:
-#          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8']
-#          packages: ['clang-3.8', 'valgrind']
-#      env: COMPILER=clang++-3.8
+#####################
+# installation step #
+#####################
 
-  #  - os: linux
-  #    compiler: clang
-  #    addons:
-  #      apt:
-  #        sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise']
-  #        packages: ['clang-3.9', 'valgrind']
-  #    env: COMPILER=clang++-3.9
+install:
+  - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
 
-    - os: osx
-      osx_image: beta-xcode6.1
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
 
-    - os: osx
-      osx_image: beta-xcode6.2
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-
-    - os: osx
-      osx_image: beta-xcode6.3
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-
-    - os: osx
-      osx_image: xcode6.4
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-
-    - os: osx
-      osx_image: xcode7.1
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-     
-    - os: osx
-      osx_image: xcode7.2
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-
-    - os: osx
-      osx_image: xcode7.3
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
-
-    - os: osx
-      osx_image: xcode8
-      compiler: clang
-      env:
-       - COMPILER=clang
-       - CXXFLAGS=-lstdc++
+################
+# build script #
+################
 
 script:
-  - uname -a
-  - $COMPILER --version
-  - make CXX=$COMPILER
-  - test/json_unit "*"
-  - if [ `which valgrind` ]; then
-    valgrind --error-exitcode=1 --leak-check=full test/json_unit ;
-    fi
-  - if [ `which brew` ]; then
-    brew update ;
-    brew tap nlohmann/json ;
-    brew install nlohmann_json --HEAD ;
-    brew test nlohmann_json ;
-    fi
+  - make
+  - test/json_unit
+
+#language: cpp
+#
+#dist: trusty
+#sudo: required
+#
+#env:
+#  global:
+#   # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
+#   #   via the "travis encrypt" command using the project repo's public key
+#   - secure: "m89SSgE+ASLO38rSKx7MTXK3n5NkP9bIx95jwY71YEiuFzib30PDJ/DifKnXxBjvy/AkCGztErQRk/8ZCvq+4HXozU2knEGnL/RUitvlwbhzfh2D4lmS3BvWBGS3N3NewoPBrRmdcvnT0xjOGXxtZaJ3P74TkB9GBnlz/HmKORA="
+#
+## from http://stackoverflow.com/a/32127147/266378
+#matrix:
+#  include:
+#    - os: linux
+#      compiler: gcc
+#      addons:
+#        apt:
+#          sources: ['ubuntu-toolchain-r-test']
+#          packages: ['g++-4.9', 'valgrind', 'python-pip', 'python-yaml']
+#      before_script:
+#        - pip install --user git+git://github.com/eddyxu/cpp-coveralls.git
+#      after_success:
+#        - make clean
+#        - touch src/json.hpp
+#        - make json_unit CXXFLAGS="-fprofile-arcs -ftest-coverage -std=c++11 -lstdc++" CXX=$COMPILER
+#        - test/json_unit "*"
+#        - coveralls --build-root test --exclude src/catch.hpp --exclude src/unit-algorithms.cpp --exclude src/unit-allocator.cpp --exclude src/unit-capacity.cpp --exclude src/unit-class_const_iterator.cpp --exclude src/unit-class_iterator.cpp --exclude src/unit-class_lexer.cpp --exclude src/unit-class_parser.cpp --exclude src/unit-comparison.cpp --exclude src/unit-concepts.cpp --exclude src/unit-constructor1.cpp --exclude src/unit-constructor2.cpp --exclude src/unit-convenience.cpp --exclude src/unit-conversions.cpp --exclude src/unit-deserialization.cpp --exclude src/unit-element_access1.cpp --exclude src/unit-element_access2.cpp --exclude src/unit-inspection.cpp --exclude src/unit-iterator_wrapper.cpp --exclude src/unit-iterators1.cpp --exclude src/unit-iterators2.cpp --exclude src/unit-json_patch.cpp --exclude src/unit-json_pointer.cpp --exclude src/unit-modifiers.cpp --exclude src/unit-pointer_access.cpp --exclude src/unit-readme.cpp --exclude src/unit-reference_access.cpp --exclude src/unit-regression.cpp --exclude src/unit-serialization.cpp --exclude src/unit-testsuites.cpp --exclude src/unit-unicode.cpp --include ../src/json.hpp --gcov-options '\-lp' --gcov 'gcov-4.9'
+#      env: COMPILER=g++-4.9  
+#
+#    - os: linux
+#      compiler: gcc
+#      before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
+#      addons:
+#        apt:
+#          sources: ['ubuntu-toolchain-r-test']
+#          packages: ['g++-5', 'valgrind']
+#        coverity_scan:
+#          project:
+#            name: "nlohmann/json"
+#            description: "Build submitted via Travis CI"
+#          notification_email: niels.lohmann@gmail.com
+#          build_command_prepend: "make clean ; sudo cp $(which g++-5) $(which g++)"
+#          build_command: "make"
+#          branch_pattern: coverity_scan
+#      env: COMPILER=g++-5
+#
+#    - os: linux
+#      compiler: gcc
+#      addons:
+#        apt:
+#          sources: ['ubuntu-toolchain-r-test']
+#          packages: ['g++-6', 'valgrind']
+#      env: COMPILER=g++-6
+#
+#    # from https://github.com/travis-ci/travis-ci/issues/6120
+#    - os: linux
+#      env:
+#        - LLVM_VERSION=3.8.0
+#        - LLVM_ARCHIVE_PATH=$HOME/clang+llvm.tar.xz
+#        - COMPILER=clang++
+#        - CPPFLAGS="-I $HOME/clang-$LLVM_VERSION/include/c++/v1"
+#        - LDFLAGS=-lc++
+#        - PATH=$HOME/clang-$LLVM_VERSION/bin:$PATH
+#        - LD_LIBRARY_PATH=$HOME/clang-$LLVM_VERSION/lib:$LD_LIBRARY_PATH
+#      before_install:
+#       - wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-14.04.tar.xz -O $LLVM_ARCHIVE_PATH
+#       - mkdir $HOME/clang-$LLVM_VERSION
+#       - tar xf $LLVM_ARCHIVE_PATH -C $HOME/clang-$LLVM_VERSION --strip-components 1
+#
+#    # Clang 3.5 is not able to compile the code,
+#    # see https://travis-ci.org/nlohmann/json/jobs/126720186
+#
+##    - os: linux
+##      compiler: clang
+##      addons:
+##        apt:
+##          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
+##          packages: ['clang-3.6', 'valgrind']
+##      env: COMPILER=clang++-3.6
+##
+##    - os: linux
+##      compiler: clang
+##      addons:
+##        apt:
+##          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
+##          packages: ['clang-3.7', 'valgrind']
+##      env: COMPILER=clang++-3.7
+##
+##    - os: linux
+##      compiler: clang
+##      addons:
+##        apt:
+##          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8']
+##          packages: ['clang-3.8', 'valgrind']
+##      env: COMPILER=clang++-3.8
+#
+#  #  - os: linux
+#  #    compiler: clang
+#  #    addons:
+#  #      apt:
+#  #        sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise']
+#  #        packages: ['clang-3.9', 'valgrind']
+#  #    env: COMPILER=clang++-3.9
+#
+#    - os: osx
+#      osx_image: beta-xcode6.1
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: beta-xcode6.2
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: beta-xcode6.3
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: xcode6.4
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: xcode7.1
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#     
+#    - os: osx
+#      osx_image: xcode7.2
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: xcode7.3
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#    - os: osx
+#      osx_image: xcode8
+#      compiler: clang
+#      env:
+#       - COMPILER=clang
+#       - CXXFLAGS=-lstdc++
+#
+#script:
+#  - uname -a
+#  - $COMPILER --version
+#  - make CXX=$COMPILER
+#  - test/json_unit "*"
+#  - if [ `which valgrind` ]; then
+#    valgrind --error-exitcode=1 --leak-check=full test/json_unit ;
+#    fi
+#  - if [ `which brew` ]; then
+#    brew update ;
+#    brew tap nlohmann/json ;
+#    brew install nlohmann_json --HEAD ;
+#    brew test nlohmann_json ;
+#    fi
+#
\ No newline at end of file