working on the command line doc
diff --git a/.travis.yml b/.travis.yml
index 9a5a139..f08da44 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,352 +1,353 @@
-sudo: false
-language: c++
-
-notifications:
-  email:
-    on_success: change
-    on_failure: always
-  # gitter
-  webhooks:
-    urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
-    on_success: change
-    on_failure: always
-git:
-  depth: 5
-
-# both apt and ccache make the builds slower...
-#cache:
-#  - apt
-#  - ccache
-
-env:
-  global:
-#    - USE_CCACHE=1
-#    - CCACHE_SLOPPINESS=pch_defines,time_macros
-#    - CCACHE_COMPRESS=1
-#    - CCACHE_MAXSIZE=200M
-#    - CCACHE_CPP2=1
-    - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
-  # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
-  # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
-  matrix:
-    - TRAVIS_EMPTY_JOB_WORKAROUND=true
-
-addons:
-  coverity_scan:
-    # COVERITY_SCAN_TOKEN added as env var in travis project
-    project:
-      name: onqtam/doctest
-    notification_email: vik.kirilov@gmail.com
-    build_command_prepend: cd examples/hello_world && cmake .
-    build_command: make
-    branch_pattern: coverity_scan
-  # these apt sources will be referenced later (by using *name)
-  apt:
-    sources: &apt_sources
-      - ubuntu-toolchain-r-test
-      - llvm-toolchain-precise-3.5
-      - llvm-toolchain-precise-3.6
-      - llvm-toolchain-precise-3.7
-      - llvm-toolchain-precise-3.8
-      - llvm-toolchain-precise
-
-compiler: clang
-os: linux
-
-matrix:
-  exclude:
-    - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
-
-  include:
-    # coverage
-    - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
-      compiler: gcc
-      addons:
-        apt:
-          packages: ["lcov", "curl"]
-
-    # GCC 4.4
-    - env: COMPILER=g++-4.4
-      compiler: gcc
-      addons: &gcc44
-        apt:
-          packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 4.5
-    - env: COMPILER=g++-4.5
-      compiler: gcc
-      addons: &gcc45
-        apt:
-          packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 4.6
-    - env: COMPILER=g++-4.6
-      compiler: gcc
-      addons: &gcc46
-        apt:
-          packages: [           "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 4.7
-    - env: COMPILER=g++-4.7
-      compiler: gcc
-      addons: &gcc47
-        apt:
-          packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 4.8
-    - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
-      compiler: gcc
-      addons: &gcc48
-        apt:
-          packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 4.9
-    - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      compiler: gcc
-      addons: &gcc49
-        apt:
-          packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # GCC 5
-    - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      compiler: gcc
-      addons: &gcc5
-        apt:
-          packages: ["g++-5",   "valgrind", "g++-5-multilib",   "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-#    # GCC 6
-#    # released on 2016.04.27
-#    # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
-#    # also with homebrew under OSX!!!
-#    - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#sudo: false
+#language: c++
+#
+#notifications:
+#  email:
+#    on_success: change
+#    on_failure: always
+#  # gitter
+#  webhooks:
+#    urls: https://webhooks.gitter.im/e/10941dd1c67e5e967706
+#    on_success: change
+#    on_failure: always
+#git:
+#  depth: 5
+#
+## both apt and ccache make the builds slower...
+##cache:
+##  - apt
+##  - ccache
+#
+#env:
+#  global:
+##    - USE_CCACHE=1
+##    - CCACHE_SLOPPINESS=pch_defines,time_macros
+##    - CCACHE_COMPRESS=1
+##    - CCACHE_MAXSIZE=200M
+##    - CCACHE_CPP2=1
+#    - CMAKE_OPTIONS_GLOBAL="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
+#  # Workaround for https://github.com/travis-ci/travis-ci/issues/4681
+#  # "Defining the build matrix only with matrix.include leads to an additional, unwanted job"
+#  matrix:
+#    - TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+#addons:
+#  coverity_scan:
+#    # COVERITY_SCAN_TOKEN added as env var in travis project
+#    project:
+#      name: onqtam/doctest
+#    notification_email: vik.kirilov@gmail.com
+#    build_command_prepend: cd examples/hello_world && cmake .
+#    build_command: make
+#    branch_pattern: coverity_scan
+#  # these apt sources will be referenced later (by using *name)
+#  apt:
+#    sources: &apt_sources
+#      - ubuntu-toolchain-r-test
+#      - llvm-toolchain-precise-3.5
+#      - llvm-toolchain-precise-3.6
+#      - llvm-toolchain-precise-3.7
+#      - llvm-toolchain-precise-3.8
+#      - llvm-toolchain-precise
+#
+#compiler: clang
+#os: linux
+#
+#matrix:
+#  exclude:
+#    - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
+#
+#  include:
+#    # coverage
+#    - env: COMPILER=g++ COVERALLS_SERVICE_NAME=travis-ci
 #      compiler: gcc
-#      addons: &gcc6
+#      addons:
 #        apt:
-#          packages: ["g++-6",   "valgrind", "g++-6-multilib",   "libc6-dbg", "libc6-dbg:i386"]
+#          packages: ["lcov", "curl"]
+#
+#    # GCC 4.4
+#    - env: COMPILER=g++-4.4
+#      compiler: gcc
+#      addons: &gcc44
+#        apt:
+#          packages: ["g++-4.4", "valgrind", "g++-4.4-multilib", "libc6-dbg", "libc6-dbg:i386"]
 #          sources: *apt_sources
-
-    # Clang 3.4
-    - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
-      addons: &clang
-        apt:
-          packages: [             "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # Clang 3.5
-    - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
-      addons: &clang35
-        apt:
-          packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # Clang 3.6
-    - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
-      addons: &clang36
-        apt:
-          packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # Clang 3.7
-    - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
-      addons: &clang37
-        apt:
-          packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # Clang 3.8
-    - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
-      addons: &clang38
-        apt:
-          packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
-          sources: *apt_sources
-
-    # Xcode 6.1 Clang
-    - env: COMPILER=clang++
-      os: osx
-
-    # Xcode 6.2 Clang
-    - env: COMPILER=clang++
-      osx_image: beta-xcode6.2
-      os: osx
-
-    # Xcode 6.3 Clang
-    - env: COMPILER=clang++
-      osx_image: beta-xcode6.3
-      os: osx
-
-    # Xcode 6.4 Clang
-    - env: COMPILER=clang++
-      osx_image: xcode6.4
-      os: osx
-
-    # Xcode 7 Clang
-    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
-      osx_image: xcode7
-      os: osx
-
-    # Xcode 7.1 Clang
-    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
-      osx_image: xcode7.1
-      os: osx
-
-    # Xcode 7.2 Clang
-    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
-      osx_image: xcode7.2
-      os: osx
-
-    # Xcode 7.3 Clang
-    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
-      osx_image: xcode7.3
-      os: osx
-
-    # OSX GCC 4.4
-    - env: COMPILER=g++-4.4
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 4.5
-    - env: COMPILER=g++-4.5
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 4.6
-    - env: COMPILER=g++-4.6
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 4.7
-    - env: COMPILER=g++-4.7
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 4.8
-    - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 4.9
-    - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      compiler: gcc
-      os: osx
-
-    # OSX GCC 5
-    - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      compiler: gcc
-      os: osx
-
-#    # OSX GCC 6
-#    - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#
+#    # GCC 4.5
+#    - env: COMPILER=g++-4.5
+#      compiler: gcc
+#      addons: &gcc45
+#        apt:
+#          packages: ["g++-4.5", "valgrind", "g++-4.5-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # GCC 4.6
+#    - env: COMPILER=g++-4.6
+#      compiler: gcc
+#      addons: &gcc46
+#        apt:
+#          packages: [           "valgrind", "g++-4.6-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # GCC 4.7
+#    - env: COMPILER=g++-4.7
+#      compiler: gcc
+#      addons: &gcc47
+#        apt:
+#          packages: ["g++-4.7", "valgrind", "g++-4.7-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # GCC 4.8
+#    - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+#      compiler: gcc
+#      addons: &gcc48
+#        apt:
+#          packages: ["g++-4.8", "valgrind", "g++-4.8-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # GCC 4.9
+#    - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#      compiler: gcc
+#      addons: &gcc49
+#        apt:
+#          packages: ["g++-4.9", "valgrind", "g++-4.9-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # GCC 5
+#    - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#      compiler: gcc
+#      addons: &gcc5
+#        apt:
+#          packages: ["g++-5",   "valgrind", "g++-5-multilib",   "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+##    # GCC 6
+##    # released on 2016.04.27
+##    # wait for it to enter the whitelist - https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
+##    # also with homebrew under OSX!!!
+##    - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+##      compiler: gcc
+##      addons: &gcc6
+##        apt:
+##          packages: ["g++-6",   "valgrind", "g++-6-multilib",   "libc6-dbg", "libc6-dbg:i386"]
+##          sources: *apt_sources
+#
+#    # Clang 3.4
+#    - env: COMPILER=clang++ HAS_ASAN_64=true HAS_UBSAN_64=true
+#      addons: &clang
+#        apt:
+#          packages: [             "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # Clang 3.5
+#    - env: COMPILER=clang++-3.5 HAS_ASAN_64=true HAS_UBSAN_64=true
+#      addons: &clang35
+#        apt:
+#          packages: ["clang-3.5", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # Clang 3.6
+#    - env: COMPILER=clang++-3.6 HAS_ASAN_64=true HAS_UBSAN_64=true
+#      addons: &clang36
+#        apt:
+#          packages: ["clang-3.6", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # Clang 3.7
+#    - env: COMPILER=clang++-3.7 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+#      addons: &clang37
+#        apt:
+#          packages: ["clang-3.7", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # Clang 3.8
+#    - env: COMPILER=clang++-3.8 # no sanitizers - not even for 64 bit - https://llvm.org/bugs/show_bug.cgi?id=22757
+#      addons: &clang38
+#        apt:
+#          packages: ["clang-3.8", "valgrind", "g++-multilib", "libc6-dbg", "libc6-dbg:i386"]
+#          sources: *apt_sources
+#
+#    # Xcode 6.1 Clang
+#    - env: COMPILER=clang++
+#      os: osx
+#
+#    # Xcode 6.2 Clang
+#    - env: COMPILER=clang++
+#      osx_image: beta-xcode6.2
+#      os: osx
+#
+#    # Xcode 6.3 Clang
+#    - env: COMPILER=clang++
+#      osx_image: beta-xcode6.3
+#      os: osx
+#
+#    # Xcode 6.4 Clang
+#    - env: COMPILER=clang++
+#      osx_image: xcode6.4
+#      os: osx
+#
+#    # Xcode 7 Clang
+#    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+#      osx_image: xcode7
+#      os: osx
+#
+#    # Xcode 7.1 Clang
+#    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+#      osx_image: xcode7.1
+#      os: osx
+#
+#    # Xcode 7.2 Clang
+#    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+#      osx_image: xcode7.2
+#      os: osx
+#
+#    # Xcode 7.3 Clang
+#    - env: COMPILER=clang++ HAS_ASAN_32=true HAS_ASAN_64=true
+#      osx_image: xcode7.3
+#      os: osx
+#
+#    # OSX GCC 4.4
+#    - env: COMPILER=g++-4.4
 #      compiler: gcc
 #      os: osx
-
-    # OSX LLVM-GCC
-    - env: COMPILER=g++
-      compiler: gcc
-      os: osx
-
-before_install:
-  - |
-    if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
-      brew update
-      # brew install ccache
-      brew install valgrind
-      # cmake
-      if brew list -1 | grep -q "^cmake\$"; then
-        brew outdated cmake || brew upgrade cmake
-      else
-        brew install cmake
-      fi
-      # gcc
-      if [[ "${COMPILER}" = "g++-4.4" ]]; then
-        brew install gcc44
-      fi
-      if [[ "${COMPILER}" = "g++-4.5" ]]; then
-        brew install gcc45
-      fi
-      if [[ "${COMPILER}" = "g++-4.6" ]]; then
-        brew install gcc46
-      fi
-      if [[ "${COMPILER}" = "g++-4.7" ]]; then
-        brew install gcc47
-      fi
-      if [[ "${COMPILER}" = "g++-4.8" ]]; then
-        brew outdated gcc48 || brew upgrade gcc48
-      fi
-      if [[ "${COMPILER}" = "g++-4.9" ]]; then
-        brew install gcc49
-      fi
-      if [[ "${COMPILER}" = "g++-5" ]]; then
-        brew install gcc5
-      fi
-      if [[ "${COMPILER}" = "g++-6" ]]; then
-        brew install gcc6
-      fi
-    fi
-  - git submodule update --init --recursive
-
-install:
-  - ${CXX} --version
-#  - export CXX="ccache ${COMPILER}"
-  - export CXX="${COMPILER}"
-  - ${CXX} --version
-#  - ccache -s
-
-script:
-  # coverage - do not continue with other build configurations after that
-  - |
-    if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
-      cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
-      make -j2 && make coveralls
-      exit
-    fi
-
-  # initial run with options
-  - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
-
-  # debug x86
-  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
-  - make clean && make -j2
-  # valgrind for 32bit under osx fails
-  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-  # debug x64
-  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
-  - make clean && make -j2
-  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-  # release x86
-  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
-  - make clean && make -j2
-  # valgrind for 32bit under osx fails
-  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
-#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-  # release x64
-  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
-  - make clean && make -j2
-  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
-#  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
-
-  # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
-  - cmake -DTEST_MODE=NORMAL .
-#  - cmake -DTEST_MODE=COMPARE .
-  # on separate commands because when something fails I want to see which one exactly
-  - if [[ "${HAS_ASAN_64}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_ASAN_32}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_ASAN_64}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_ASAN_32}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-  - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
-
-#  - ccache -s
-
-after_script:
-  - cat compile_commands.json
+#
+#    # OSX GCC 4.5
+#    - env: COMPILER=g++-4.5
+#      compiler: gcc
+#      os: osx
+#
+#    # OSX GCC 4.6
+#    - env: COMPILER=g++-4.6
+#      compiler: gcc
+#      os: osx
+#
+#    # OSX GCC 4.7
+#    - env: COMPILER=g++-4.7
+#      compiler: gcc
+#      os: osx
+#
+#    # OSX GCC 4.8
+#    - env: COMPILER=g++-4.8 HAS_ASAN_32=true HAS_ASAN_64=true
+#      compiler: gcc
+#      os: osx
+#
+#    # OSX GCC 4.9
+#    - env: COMPILER=g++-4.9 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#      compiler: gcc
+#      os: osx
+#
+#    # OSX GCC 5
+#    - env: COMPILER=g++-5 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+#      compiler: gcc
+#      os: osx
+#
+##    # OSX GCC 6
+##    - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+##      compiler: gcc
+##      os: osx
+#
+#    # OSX LLVM-GCC
+#    - env: COMPILER=g++
+#      compiler: gcc
+#      os: osx
+#
+#before_install:
+#  - |
+#    if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
+#      brew update
+#      # brew install ccache
+#      brew install valgrind
+#      # cmake
+#      if brew list -1 | grep -q "^cmake\$"; then
+#        brew outdated cmake || brew upgrade cmake
+#      else
+#        brew install cmake
+#      fi
+#      # gcc
+#      if [[ "${COMPILER}" = "g++-4.4" ]]; then
+#        brew install gcc44
+#      fi
+#      if [[ "${COMPILER}" = "g++-4.5" ]]; then
+#        brew install gcc45
+#      fi
+#      if [[ "${COMPILER}" = "g++-4.6" ]]; then
+#        brew install gcc46
+#      fi
+#      if [[ "${COMPILER}" = "g++-4.7" ]]; then
+#        brew install gcc47
+#      fi
+#      if [[ "${COMPILER}" = "g++-4.8" ]]; then
+#        brew outdated gcc48 || brew upgrade gcc48
+#      fi
+#      if [[ "${COMPILER}" = "g++-4.9" ]]; then
+#        brew install gcc49
+#      fi
+#      if [[ "${COMPILER}" = "g++-5" ]]; then
+#        brew install gcc5
+#      fi
+#      if [[ "${COMPILER}" = "g++-6" ]]; then
+#        brew install gcc6
+#      fi
+#    fi
+#  - git submodule update --init --recursive
+#
+#install:
+#  - ${CXX} --version
+##  - export CXX="ccache ${COMPILER}"
+#  - export CXX="${COMPILER}"
+#  - ${CXX} --version
+##  - ccache -s
+#
+#script:
+#  # coverage - do not continue with other build configurations after that
+#  - |
+#    if [[ "${COVERALLS_SERVICE_NAME}" = "travis-ci" ]]; then
+#      cmake ${CMAKE_OPTIONS_GLOBAL} -DCMAKE_BUILD_TYPE=Debug .
+#      make -j2 && make coveralls
+#      exit
+#    fi
+#
+#  # initial run with options
+#  - cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} .
+#
+#  # debug x86
+#  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m32" .
+#  - make clean && make -j2
+#  # valgrind for 32bit under osx fails
+#  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+##  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#  # debug x64
+#  - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-m64" .
+#  - make clean && make -j2
+#  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+##  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#  # release x86
+#  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32" .
+#  - make clean && make -j2
+#  # valgrind for 32bit under osx fails
+#  - if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure ; fi
+##  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#  # release x64
+#  - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64" .
+#  - make clean && make -j2
+#  - cmake -DTEST_MODE=VALGRIND . && ctest --output-on-failure
+##  - cmake -DTEST_MODE=COMPARE . && ctest --output-on-failure
+#
+#  # sanitizers - again 32/64 bit Debug/Release configs through address/undefined sanitizers
+#  - cmake -DTEST_MODE=NORMAL .
+##  - cmake -DTEST_MODE=COMPARE .
+#  # on separate commands because when something fails I want to see which one exactly
+#  - if [[ "${HAS_ASAN_64}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_ASAN_32}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_ASAN_64}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_ASAN_32}" = "true" ]];  then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=address" .   && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Debug   -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_UBSAN_64}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m64 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#  - if [[ "${HAS_UBSAN_32}" = "true" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-m32 -fsanitize=undefined" . && make clean && make -j2 && ctest --output-on-failure ; fi
+#
+##  - ccache -s
+#
+#after_script:
+#  - cat compile_commands.json
+#
\ No newline at end of file