fixed the range based example
better examples
diff --git a/.travis.yml b/.travis.yml
index f08da44..fc6c694 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,70 +1,70 @@
-#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"]
-#
+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
@@ -131,14 +131,14 @@
 ##        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.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
@@ -250,104 +250,103 @@
 #    - 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
+
+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