diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 262bba7..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.hg
-.gradle
-build
-target
-out
-.idea
-*.iml
-*.ipr
-*.iws
-*.log*
-.DS_Store
-Thumbs.db
-/public/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index 4e15160..0000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-image: openjdk:8u171-jdk-stretch
-#services:
-#- docker:dind
-
-variables:
-  TERM: dumb
-  DOCKER_DRIVER: overlay2
-
-cache:
-  key: ${CI_BUILD_REF_NAME}
-  untracked: true
-  paths:
-  - ${HOME}/.m2
-  - ${HOME}/.gradle
-
-ci-job:
-  before_script:
-  - pwd
-  - whoami
-  - ls -lah .
-  - uname -a
-  - which bash
-  - which apt-get
-  - which apt || true
-  - apt-get update -y >/dev/null || true
-  - apt-get install -y --no-install-recommends curl jq bash sudo lsof >/dev/null
-  - source <(curl -s https://raw.githubusercontent.com/daggerok/bash-functions/master/main.bash)
-  - stop_any 80 8080
-
-  script:
-  - echo "uncomment what's needed."
-  - #./gradlew -S >/dev/null
-  - #bash build/libs/*.jar &
-  - #wait_for 8080
-  - #curl -s 127.0.0.1:8080
-  - #curl -s 127.0.0.1:8080/api/ | jq .
-  - #stop_any 80 8080
-  #
-  - #./mvnw >/dev/hull
-  - #bash target/*.jar &
-  - #wait_for 8080
-  - #curl http://127.0.0.1:8080
-  - #curl -sH'content-type:application/json' http://127.0.0.1:8080/api/ | jq .
-  - #stop_any 80 8080
-
-pages:
-  script:
-  - ./gradlew documentation >/dev/null
-
-  artifacts:
-    paths:
-    - public
diff --git a/.hgignore b/.hgignore
deleted file mode 100644
index 121d275..0000000
--- a/.hgignore
+++ /dev/null
@@ -1,16 +0,0 @@
-syntax: glob
-^.gradle/*
-.gradle
-^.git/*
-.git
-*/build/*
-*/target/*
-.DS_Store
-Thumbs.db
-*/out/*
-^.idea/*
-.idea
-*.iml
-*.ipr
-*.iws
-*.log*
diff --git a/.mvn/Dockerfile b/.mvn/Dockerfile
deleted file mode 100644
index d90b16d..0000000
--- a/.mvn/Dockerfile
+++ /dev/null
@@ -1,33 +0,0 @@
-FROM openjdk:8u151-jre-alpine3.7
-MAINTAINER Maksim Kostromin https://github.com/daggerok
-RUN apk --no-cache --update add busybox-suid bash curl unzip sudo openssh-client shadow wget \
- && adduser -h /home/appuser -s /bin/bash -D -u 1025 appuser wheel \
- && echo 'appuser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \
- && sed -i 's/.*requiretty$/Defaults !requiretty/' /etc/sudoers \
- && wget --no-cookies \
-         --no-check-certificate \
-         --header 'Cookie: oraclelicense=accept-securebackup-cookie' \
-                  'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' \
-         -O /tmp/jce_policy-8.zip \
- && unzip -o /tmp/jce_policy-8.zip -d /tmp \
- && mv -f ${JAVA_HOME}/lib/security ${JAVA_HOME}/lib/backup-security \
- && mv -f /tmp/UnlimitedJCEPolicyJDK8 ${JAVA_HOME}/lib/security \
- && apk del busybox-suid unzip openssh-client shadow wget \
- && rm -rf /var/cache/apk/* /tmp/*
-USER appuser
-WORKDIR /home/appuser
-VOLUME /home/appuser
-ARG JAVA_OPTS_ARGS='\
- -Djavax.net.debug=ssl \
- -Djava.net.preferIPv4Stack=true \
- -XX:+UnlockExperimentalVMOptions \
- -XX:+UseCGroupMemoryLimitForHeap \
- -XshowSettings:vm '
-ENV JAVA_OPTS="${JAVA_OPTS} ${JAVA_OPTS_ARGS}"
-ENTRYPOINT java ${JAVA_OPTS} -jar ./app.jar
-CMD /bin/bash
-#EXPOSE 8080
-#HEALTHCHECK --timeout=1s \
-#            --retries=66 \
-#            CMD curl -f http://127.0.0.1:8080/actuator/health || exit 1
-COPY --chown=appuser ./target/*-all.jar ./app.jar
diff --git a/.mvn/redeploy.sh b/.mvn/redeploy.sh
deleted file mode 100644
index f4bede8..0000000
--- a/.mvn/redeploy.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-# bash mvnw clean war:war -DskipTests; bash .mvn/redeploy.sh
-container=java-examples_maven-java-examples-app_1
-docker cp ./target/*.war ${container}:/home/jboss-eap-7.1/jboss-eap-7.1/standalone/deployments/app.war
-
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100755
index 41c70a7..0000000
Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100755
index c9023ed..0000000
--- a/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1 +0,0 @@
-distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index a452595..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-service:
-- docker
-env:
-  global:
-  - TERM=dumb
-  - secure: WPou9qMnFvvUsWHnwg21Q6GvWPl05rnnTiZzOZS7a4WH/D6xqdhAJS3mLXRrJiz1YMAaPtMPUjdWut4oMKPdZDLmxz6+GLE48K/kvx5XaiPIl7/oAOi8FgcWL2yGOM01sv0vNQln6c3pOuxdJFpc+wPzqgPplubVXjhfrY03E0GKGi4YQRMR2ldWSVG3B9RmcQZ5+UAbnwqz2FFYeKctcKHhg7WOAQpdUIuSGo02ht5LCzmO62gDfUwHcdckFGPJMTGYdk8/7bamxzAevJQlsxydhNZ2fn+HUVr8ZAUVOZArKnjjIKkMxnfsT+kRUS3v0zkxqDa0PjkCwhaIMOOjDVYunZrLlO35q22DPR0XrnCGe0aw2Zk0lTXcnqJs3CuAiELAARFu/sahp+Yw3phKqnlwJON2Awsv2k8zBGgLbaSXSjpeC6qLxJdrzt7YxCBBmZO3LoXR0o/B96yirYlTr3uHFX27fx4qvoKWMfRGr1AOO7p/nFhReAz/wnwSdLNGscNsaLJjQt2FHHgiMcDgv2gtVX0gszp8AatdeL+InqncB5K8kkGzNcSRnGO9XZqDDsKfsMUiGxUkmPEyEzf/qWYpLGt7QyZBzdArhIu0rBl73pwLhug1BYrsVBcNUZ6KiofDBY3QxlhczdLoU0voVwlgw+Pz7iUjUooQ+PZ2Bgg=
-language: java
-jdk:
-- openjdk8
-- openjdk11
-python: 3.8
-addons:
-  apt:
-    update: true
-    packages:
-    - jq
-    - sudo
-    - lsof
-    - bash
-    - curl
-    - unzip
-    - httpie
-    - docker-ce
-    - docker-compose
-install: true
-before_script:
-- source <(curl -s https://raw.githubusercontent.com/daggerok/bash-functions/master/main.bash)
-jobs:
-  includes:
-    - stage: test
-      name: tests
-      script:
-      - bash gradlew >/dev/null
-      - java -jar ./build/libs/*-all.jar
-      #
-      - bash gradlew clean installDist >/dev/null
-      - bash ./build/install/java-examples/bin/java-examples
-      #
-      - bash gradlew clean distZip >/dev/null
-      - unzip -o ./build/distributions/java-examples-0.0.1.zip -d /tmp
-      - bash /tmp/java-examples-0.0.1/bin/java-examples
-      #
-      - bash gradlew clean composeUp
-      - bash gradlew composeDown
-      #
-      - bash mvnw clean package >/dev/null
-      - java -jar target/*-all.jar
-      #
-      - bash mvnw com.dkanejs.maven.plugins:docker-compose-maven-plugin:1.0.1:up -P docker
-      - bash mvnw com.dkanejs.maven.plugins:docker-compose-maven-plugin:1.0.1:down -P docker
-    - stage: deploy
-      name: GitHub pages
-      before_deploy:
-      - ./mvnw -Pdocs
-      deploy:
-        provider: pages
-        skip-cleanup: true
-        keep-history: true
-        target_branch: gh-pages
-        github-token: "$GITHUB_TOKEN"
-        # travis encrypt GITHUB_TOKEN=..
-        local-dir: target/generated-docs
-        on:
-          branch: master
-before_cache:
-- |
-  for item in $(find ~/.gradle -name "*.lock") ; do
-    sudo rm -rf $item ;
-  done
-- ./gradlew --stop
-cache:
-  packages: true
-  directories:
-  - ~/.m2
-  - ~/.gradle
-  - ~/.docker
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 00aad36..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Maksim Kostromin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.adoc b/README.adoc
deleted file mode 100644
index ceffee3..0000000
--- a/README.adoc
+++ /dev/null
@@ -1,24 +0,0 @@
-= java-examples image:https://travis-ci.org/daggerok/java-examples.svg?branch=master["Build Status", link="https://travis-ci.org/daggerok/java-examples"]
-
-////
-image:https://gitlab.com/daggerok/java-examples/badges/master/build.svg["Build Status", link="https://gitlab.com/daggerok/java-examples/-/jobs"]
-image:https://img.shields.io/bitbucket/pipelines/daggerok/java-examples.svg["Build Status", link="https://bitbucket.com/daggerok/java-examples"]
-////
-
-//tag::content[]
-in progress...
-
-Read link:https://daggerok.github.io/java-examples[project reference documentation]
-
-Initially generated by using link:https://github.com/daggerok/generator-jvm/[generator-jvm] yeoman generator (java)
-
-//end::content[]
-
-== other repositories
-
-- link:https://github.com/daggerok/java-11-http-client[java-11-http-client]
-- link:https://github.com/daggerok/java-14[java-14]
-- link:https://github.com/daggerok/lazy-java[lazy-java]
-- link:https://github.com/daggerok/java-examples[java-examples]
-- link:https://github.com/daggerok/learn-jvm[learn-jvm]
-- link:https://github.com/daggerok/fold-java[fold-java]
diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml
deleted file mode 100644
index 71c38fc..0000000
--- a/bitbucket-pipelines.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# This is a sample build configuration for Docker.
-# Check our guides at https://confluence.atlassian.com/x/O1toN for more examples.
-# Only use spaces to indent your .yml configuration.
-# -----
-# You can specify a custom docker image from Docker Hub as your build environment.
-image: openjdk:8u171-jdk-stretch
-
-pipelines:
-  default:
-    - step:
-        services:
-        - docker
-        script:
-        - #export IMAGE_NAME=daggerok/java-examples:$BITBUCKET_COMMIT
-        - #docker build -t $IMAGE_NAME .
-        - #docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
-        - #docker push $IMAGE_NAME
-        - #./gradlew -Si
-        - #./mvnw
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 4dd3197..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,67 +0,0 @@
-buildscript {
-  ext {
-    javaVersion = JavaVersion.VERSION_1_8
-    lombokVersion = '1.18.2'    // java 10
-    //lombokVersion = '1.16.20' // java 8
-    logbackVersion = '1.2.3'
-    slf4jVersion = '1.7.25'
-    vavrVersion = '0.9.2'
-
-    phantomjsDriverVersion = '1.4.4'
-    seleniumDriverVersion = '3.12.0'
-    junitPlatformVersion = '1.2.0'
-    junitJupiterVersion = '5.2.0'
-    selenideVersion = '4.11.4'
-    assertjVersion = '3.10.0'
-    jgivenVersion = '0.15.3'
-    hamcrestVersion = '1.3'
-    junit4Version = '4.12'
-
-    allureVersion = '2.6.0'
-
-    asciidoctorjPdfVersion = '1.5.0-alpha.15'
-  }
-
-  dependencies {
-    classpath "org.asciidoctor:asciidoctorj-pdf:$asciidoctorjPdfVersion"
-  }
-
-  //// spring-boot versions overriding, be careful with it!
-  // In our case we are fixing PhantomJS (replacing older spring-boot version):
-  ext['selenium.version'] = "$seleniumDriverVersion"
-}
-
-plugins {
-  id 'org.asciidoctor.convert' version '1.5.7' apply false
-  id 'org.ajoberstar.git-publish' version '0.3.0' apply false
-  id 'io.spring.dependency-management' version '1.0.5.RELEASE' apply false
-  id 'com.avast.gradle.docker-compose' version '0.6.13' apply false
-  id 'com.github.johnrengelman.shadow' version '2.0.2' apply false
-  id 'io.franzbecker.gradle-lombok' version '1.14' apply false
-  id 'cn.bestwu.propdeps-eclipse' version '0.0.10' apply false
-  id 'cn.bestwu.propdeps-maven' version '0.0.10' apply false
-  id 'cn.bestwu.propdeps-idea' version '0.0.10' apply false
-  id 'cn.bestwu.propdeps' version '0.0.10' apply false
-  id 'io.qameta.allure' version '2.5' apply false
-}
-
-/*
-wrapper {
-  gradleVersion = '4.9'
-  distributionType = 'BIN'
-}
-*/
-
-apply from: "$projectDir/gradle/ide.gradle"
-apply from: "$projectDir/gradle/clean.gradle"
-apply from: "$projectDir/gradle/repositories.gradle"
-apply from: "$projectDir/gradle/java.gradle"
-apply from: "$projectDir/gradle/main.gradle"
-apply from: "$projectDir/gradle/junit.gradle"
-apply from: "$projectDir/gradle/publish.gradle"
-apply from: "$projectDir/gradle/findbugs.gradle"
-//apply from: "$projectDir/gradle/jacoco.gradle"
-//apply from: "$projectDir/gradle/allure.gradle"
-//apply from: "$projectDir/gradle/selenide.gradle"
-apply from: "$projectDir/gradle/docker-compose.gradle"
-apply from: "$projectDir/gradle/docs.gradle"
diff --git a/docker-compose-gradle.yaml b/docker-compose-gradle.yaml
deleted file mode 100644
index a1045ea..0000000
--- a/docker-compose-gradle.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-version: "2.1"
-
-services:
-
-  gradle-java-examples-app:
-    build:
-      context: .
-      dockerfile: gradle/Dockerfile
-    volumes: ["gradle-java-examples-app-data:/home/appuser"]
-    networks: [backing-services]
-    #ports: ["8080:8080"]
-    #restart: unless-stopped
-    #mem_limit: 209715200 # container limit: 200Mb (200 * 1024 * 1024)
-
-volumes:
-  gradle-java-examples-app-data: {}
-
-networks:
-  backing-services:
-    driver: bridge
diff --git a/docker-compose-maven.yaml b/docker-compose-maven.yaml
deleted file mode 100644
index dbff6df..0000000
--- a/docker-compose-maven.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-version: "2.1"
-
-services:
-
-  maven-java-examples-app:
-    build:
-      context: .
-      dockerfile: .mvn/Dockerfile
-    volumes: ["maven-java-examples-app-data:/home/appuser"]
-    networks: [backing-services]
-    #ports: ["8080:8080"]
-    #restart: unless-stopped
-    #mem_limit: 209715200 # container limit: 200Mb (200 * 1024 * 1024)
-
-volumes:
-  maven-java-examples-app-data: {}
-
-networks:
-  backing-services:
-    driver: bridge
diff --git a/docs/docinfo.html b/docs/docinfo.html
deleted file mode 100644
index 82c7c6a..0000000
--- a/docs/docinfo.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<style>
-  #content {
-    max-width: 98%;
-  }
-  .positioned-image {
-    position: absolute;
-    top: 0;
-    right: 0;
-    border: 0;
-  }
-</style>
-
-<meta name="keywords"
-      content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples">
-<meta name="description"
-      content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples">
-
-<!-- highlight.js highlighter -->
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
-
-<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico">
-<div>
-  <!--<a href="https://gitlab.com/daggerok/java-examples">-->
-  <a href="https://github.com/daggerok/java-examples">
-    <img class="positioned-image"
-         src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"
-         alt="Don't fork me!">
-  </a>
-</div>
diff --git a/docs/footer-docinfo.html b/docs/footer-docinfo.html
deleted file mode 100644
index ff77690..0000000
--- a/docs/footer-docinfo.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-<!-- jquery -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
-<!-- highlight.js highlighter -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/dos.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/bash.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/java.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/scala.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/kotlin.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/json.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/javascript.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/typescript.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/markdown.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script>
-<!-- add other npn standard languages you are using in your documentation... -->
-<script>
-  (function main() {
-    'use strict';
-    window.document.addEventListener('DOMContentLoaded', function onDOMContentLoaded() {
-      window.hljs.initHighlighting();
-    }, false);
-  })();
-</script>
diff --git a/docs/index.adoc b/docs/index.adoc
deleted file mode 100644
index 212dbf8..0000000
--- a/docs/index.adoc
+++ /dev/null
@@ -1,64 +0,0 @@
-ifdef::backend-html5[]
-= {root-project-name} ({project-version}) image:https://travis-ci.org/daggerok/{root-project-name}.svg?branch=master["Build Status", link={github-url}]
-endif::backend-html5[]
-ifndef::backend-html5[]
-= {root-project-name} ({project-version})
-endif::backend-html5[]
-////
-image:https://travis-ci.org/daggerok/root-project-name.svg?branch=master["Build Status", link=github-url]
-image:https://gitlab.com/daggerok/root-project-name/badges/master/build.svg["Build Status", link=gitlab-url]
-image:https://img.shields.io/bitbucket/pipelines/daggerok/root-project-name.svg["Build Status", link=bitbucket-url]
-////
-Maksim Kostromin <daggerok@gmail.com>
-{docdatetime}
-:doctype: book
-:toc: left
-:toclevels: 4
-:numbered:
-:icons: font
-:hide-uri-scheme:
-:revnumber: {project-version}
-:example-caption!:
-:source-highlighter: highlightjs
-
-Travis CI status:
-image:https://travis-ci.org/daggerok/{root-project-name}.svg?branch=master["Build Status", link={github-url}]
-
-////
-GitLab CI status:
-image:https://gitlab.com/daggerok/{root-project-name}/badges/master/build.svg["Build Status", link={gitlab-url}]
-
-BitBucket CI status:
-image:https://img.shields.io/bitbucket/pipelines/daggerok/{root-project-name}.svg["Build Status", link={bitbucket-url}]
-////
-
-== Introduction
-
-include::../README.adoc[tags=content]
-
-== Implementation
-
-=== predicate (java 7 API):
-
-.impl
-[source,java]
-----
-include::../src/main/java/daggerok/java7/predicate/Java7Predicate.java[tags=content]
-----
-
-.test
-[source,java]
-----
-include::../src/test/java/daggerok/java7/predicate/Java7PredicateTest.java[tags=content]
-----
-
-== Links
-
-ifdef::backend-html5[- link:./index.pdf[Documentation in PFD format]]
-- link:{github-url}[GitHub repo]
-- link:https://daggerok.github.io/{root-project-name}[GitHub pages]
-////
-- link:{gitlab-url}[GitLab repo]
-- link:https://daggerok.gitlab.io/{root-project-name}[GitLab pages]
-- link:{bitbucket-url}[BitBucket repo]
-////
diff --git a/gradle.properties b/gradle.properties
deleted file mode 100644
index 5d34ecc..0000000
--- a/gradle.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-org.gradle.daemon=false
-#org.gradle.console=rich
-org.gradle.console=plain
-#org.gradle.console=verbose
diff --git a/gradle/Dockerfile b/gradle/Dockerfile
deleted file mode 100644
index a2ae83a..0000000
--- a/gradle/Dockerfile
+++ /dev/null
@@ -1,40 +0,0 @@
-FROM openjdk:8u151-jre-alpine3.7
-MAINTAINER Maksim Kostromin https://github.com/daggerok
-RUN apk --no-cache --update add busybox-suid bash curl unzip sudo openssh-client shadow wget \
- && adduser -h /home/appuser -s /bin/bash -D -u 1025 appuser wheel \
- && echo 'appuser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \
- && sed -i 's/.*requiretty$/Defaults !requiretty/' /etc/sudoers \
- && wget --no-cookies \
-         --no-check-certificate \
-         --header 'Cookie: oraclelicense=accept-securebackup-cookie' \
-                  'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' \
-         -O /tmp/jce_policy-8.zip \
- && unzip -o /tmp/jce_policy-8.zip -d /tmp \
- && mv -f ${JAVA_HOME}/lib/security ${JAVA_HOME}/lib/backup-security \
- && mv -f /tmp/UnlimitedJCEPolicyJDK8 ${JAVA_HOME}/lib/security \
- && apk del busybox-suid unzip openssh-client shadow wget \
- && rm -rf /var/cache/apk/* /tmp/*
-USER appuser
-WORKDIR /home/appuser
-VOLUME /home/appuser
-ARG JAVA_OPTS_ARGS='\
- -Djavax.net.debug=ssl \
- -Djava.net.preferIPv4Stack=true \
- -XX:+UnlockExperimentalVMOptions \
- -XX:+UseCGroupMemoryLimitForHeap \
- -XshowSettings:vm '
-ENV JAVA_OPTS="${JAVA_OPTS} ${JAVA_OPTS_ARGS}"
-ENTRYPOINT java ${JAVA_OPTS} -jar ./app.jar
-CMD /bin/bash
-#ENTRYPOINT java -XX:+UnlockExperimentalVMOptions \
-#                -XX:+UseCGroupMemoryLimitForHeap \
-#                -XshowSettings:vm \
-#                -Djava.net.preferIPv4Stack=true \
-#                -Djavax.net.debug=ssl \
-#                -jar ./app.jar
-#CMD /bin/bash
-#EXPOSE 8080
-#HEALTHCHECK --timeout=2s \
-#            --retries=22 \
-#            CMD curl -f http://127.0.0.1:8080/api/health || exit 1
-COPY --chown=appuser ./build/libs/*-all.jar ./app.jar
diff --git a/gradle/allure.gradle b/gradle/allure.gradle
deleted file mode 100644
index c271ae3..0000000
--- a/gradle/allure.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-allprojects {
-  apply plugin: 'io.qameta.allure'
-
-  dependencies {
-    testCompile "io.qameta.allure:allure-selenide:$allureVersion"
-  }
-
-  allure {
-
-    useJUnit4 {
-      version = project.allureVersion
-    }
-
-    useJUnit5 {
-      version = project.allureVersion
-    }
-
-    version = project.allureVersion
-    autoconfigure = true
-    allureJavaVersion = project.allureVersion
-    //reportDir = file("$rootDir/build/allure-report")
-    //resultsDir = file("$rootDir/build/allure-results")
-    downloadLink = "https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/$allureVersion/allure-${allureVersion}.zip"
-  }
-}
diff --git a/gradle/clean.gradle b/gradle/clean.gradle
deleted file mode 100644
index 9f8e4ad..0000000
--- a/gradle/clean.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-allprojects {
-  apply plugin: 'base'
-
-  clean.doFirst {
-    [
-        project.buildDir,
-        project.file('out'),
-        project.file('bin'),
-        project.file('build'),
-        project.file('target'),
-        project.file('public'),
-        project.file('.allure'),
-        project.file('.project'),
-        project.file('.settings'),
-        project.file('.classpath'),
-        project.file("$rootDir/dist"),
-        project.file('allure-report'),
-        project.file('allure-results'),
-        project.file("$rootDir/src/main/resources/public/docs"),
-    ].each { delete it }
-    // rm -rf $(find . -name 'ajcore.*.txt')
-    delete fileTree(rootDir).matching {
-      include '**/ajcore.*.txt'
-      include '**/allure-results/**'
-      include '**/allure-report/**'
-      include '**/.allure/**'
-    }
-  }
-}
diff --git a/gradle/docker-compose.gradle b/gradle/docker-compose.gradle
deleted file mode 100644
index 5aac9ec..0000000
--- a/gradle/docker-compose.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-def dockerComposeFile = project.file("$rootDir/docker-compose-gradle.yaml")
-def profile = 'gradle'
-
-if (project.hasProperty('profile')) {
-  profile = project.property('profile') ?: ''
-  if (!profile.trim().isEmpty()) {
-    def path = dockerComposeFile.absolutePath.replace('-gradle.yaml', "-${profile}.yaml")
-    dockerComposeFile = project.file(path)
-  }
-}
-
-apply plugin: 'com.avast.gradle.docker-compose'
-
-dockerCompose {
-  useComposeFiles = [dockerComposeFile]
-  // captureContainersOutput = true
-  captureContainersOutput = false
-  stopContainers = true
-  removeContainers = true
-  removeImages = 'Local'
-  removeVolumes = true
-  removeOrphans = true
-  forceRecreate = true
-  waitForTcpPorts = false
-  projectName = project.name
-}
-
-composeUp.dependsOn assemble
-composeUp.shouldRunAfter clean, assemble
diff --git a/gradle/docs.gradle b/gradle/docs.gradle
deleted file mode 100644
index 4d60dbe..0000000
--- a/gradle/docs.gradle
+++ /dev/null
@@ -1,79 +0,0 @@
-buildscript {
-  ext {
-    adocProcessingOutputDir = project.file("$buildDir/asciidoc")
-    adocOutputDir = project.file("$rootDir/target/generated-docs")
-  }
-}
-
-apply plugin: 'org.asciidoctor.convert'
-apply plugin: 'org.ajoberstar.git-publish'
-
-asciidoctor {
-  sourceDir = project.file("$rootDir/docs")
-  sources {
-    include 'index.adoc'
-  }
-  outputDir = adocProcessingOutputDir
-  attributes toc: 'left',
-    doctype: 'book',
-    ruby: 'erubis',
-    encoding: 'utf-8',
-    linkattrs: true,
-    numbered: true,
-    sectanchors: true,
-    sectlink: true,
-    idprefix: '',
-    docinfo1: '',
-    icons: 'font',
-    idseparator: '-',
-    setanchors: 'true',
-    imagesdir: './images',
-    'toc-title': 'Table of Contents',
-    'source-highlighter': 'highlightjs',
-    'root-project-name': rootProject.name,
-    'build-gradle': project.file('build.gradle'),
-    'github-url': "https://github.com/daggerok/$rootProject.name",
-    'gitlab-url': "https://gitlab.com/daggerok/$rootProject.name",
-    'bitbucket-url': "https://bitbucket.com/daggerok/$rootProject.name"
-
-  logDocuments = true
-  //backends 'pdf', 'html5'
-  backends = ['html5', 'pdf']
-}
-
-asciidoctor.doLast {
-  def html5 = "$adocProcessingOutputDir/html5"
-  project.file("$html5/404.html").text = project.file("$html5/index.html").text
-  project.file("$html5/.nojekyll").text = ''
-}
-
-task documentation(type: Copy, dependsOn: asciidoctor) {
-  shouldRunAfter clean, asciidoctor
-  from "$asciidoctor.outputDir/html5"
-  from "$asciidoctor.outputDir/pdf"
-  from "$asciidoctor.sourceDir/static", {
-    into '.'
-  }
-  into adocOutputDir
-}
-
-gitPublish {
-  // repoUri = "git@gitlab.com:daggerok/${rootProject.name}.git" // same gitlab plugin?
-  repoUri = "git@github.com:daggerok/${rootProject.name}.git"
-  branch = 'gh-pages'
-
-  contents {
-    from adocOutputDir, {
-      into '.'
-    }
-  }
-
-  commitMessage = "Publish $rootProject.name documentation (${project.group}:${project.name}:$project.version)"
-}
-
-gitPublishPush.dependsOn documentation
-gitPublishPush.shouldRunAfter clean, documentation
-
-task docs(dependsOn: gitPublishPush) {
-  shouldRunAfter clean, asciidoctor
-}
diff --git a/gradle/findbugs.gradle b/gradle/findbugs.gradle
deleted file mode 100644
index 857dd33..0000000
--- a/gradle/findbugs.gradle
+++ /dev/null
@@ -1,52 +0,0 @@
-allprojects {
-  apply plugin: 'findbugs'
-
-  tasks.withType(FindBugs) {
-    reports {
-      xml.enabled false
-      html.enabled true
-      //// see for details/example: https://github.com/findbugsproject/findbugs/blob/master/findbugs/src/xsl/default.xsl
-      //html.stylesheet resources.text.fromFile('config/xsl/findbugs-custom.xsl')
-    }
-  }
-
-  findbugs {
-    reportsDir = file("$rootProject.buildDir/findbugs")
-    ignoreFailures = true
-  }
-
-  /* // hell, no!
-  findbugs {
-    reportsDir = file("$project.buildDir/findbugs")
-
-    // specify concrete tested and worked version for you
-    toolVersion = '...'
-
-    // specify custome sources for analysis:
-    sourceSets = [
-        sourceSets.main,
-        sourceSets.test,
-    ]
-
-    // do not fail on errors
-    ignoreFailures = true
-
-    effort = 'max'
-    showProgress = true
-    reportLevel = 'high'
-
-    // specify which bugs detect to analysis:
-    visitors = ['FindSqlInjection', 'SwitchFallthrough']
-    // specify which bugs skip for analysis:
-    omitVisitors = ['FindNonShortCircuit']
-
-    //// avoid configuration errors:
-    // Cannot read file specified for FindBugs 'excludeFilter' property: /private/tmp/findbugs-example/config/findbugs/excludeFilter.xml
-    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
-    // Cannot read file specified for FindBugs 'includeFilter' property: /private/tmp/findbugs-example/config/findbugs/includeFilter.xml
-    includeFilter = file("$rootProject.projectDir/config/findbugs/includeFilter.xml")
-    // Cannot read file specified for FindBugs 'excludeBugsFilter' property: /private/tmp/findbugs-example/config/findbugs/excludeBugsFilter.xml
-    excludeBugsFilter = file("$rootProject.projectDir/config/findbugs/excludeBugsFilter.xml")
-  }
-  */
-}
diff --git a/gradle/ide.gradle b/gradle/ide.gradle
deleted file mode 100644
index 6528f22..0000000
--- a/gradle/ide.gradle
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-// Plugin 'idea' is a core Gradle plugin, which is already on the classpath. Requesting it with the 'apply false' option is a no-op.
-plugins {
-  id 'idea' apply false // will fail
-}
-*/
-
-apply plugin: 'idea'
-allprojects*.apply plugin: 'cn.bestwu.propdeps-idea'
-
-idea {
-  module {
-    downloadJavadoc = false
-    downloadSources = true
-  }
-}
-
-/*
-apply plugin: 'eclipse'
-allprojects*.apply plugin: 'cn.bestwu.propdeps-eclipse'
-
-eclipse {
-  classpath {
-    downloadJavadoc = false
-    downloadSources = true
-  }
-}
-
-allprojects*.apply plugin: 'maven'
-allprojects*.apply plugin: 'cn.bestwu.propdeps-maven'
-*/
diff --git a/gradle/jacoco.gradle b/gradle/jacoco.gradle
deleted file mode 100644
index 824ec44..0000000
--- a/gradle/jacoco.gradle
+++ /dev/null
@@ -1,83 +0,0 @@
-// read more: https://docs.gradle.org/current/userguide/jacoco_plugin.html
-// Also got some thoughts from here: https://gist.github.com/aalmiray/e6f54aa4b3803be0bcac
-
-allprojects {
-  apply plugin: 'jacoco'
-
-  jacoco {
-    toolVersion = '0.8.1'
-  }
-
-  jacocoTestCoverageVerification {
-    violationRules {
-      rule {
-        limit {
-          minimum = 0.5
-        }
-      }
-      rule {
-        enabled = false
-        element = 'CLASS'
-        includes = [
-            'org.gradle.*',
-        ]
-        limit {
-          counter = 'LINE'
-          value = 'TOTALCOUNT'
-          maximum = 0.3
-        }
-      }
-    }
-  }
-}
-
-subprojects {
-  jacocoTestReport {
-    def main = sourceSets.main
-    def srcDirs = main.allSource.srcDirs
-    additionalSourceDirs = files(srcDirs)
-    sourceDirectories = files(srcDirs)
-    classDirectories = files(main.output)
-    reports {
-      xml.enabled = false
-      csv.enabled = false
-      html.enabled = true
-      html.destination file("$buildDir/jacoco/html")
-    }
-  }
-}
-
-jacocoTestReport {
-  def main = subprojects.sourceSets.main
-  def srcDirs = main.allSource.srcDirs
-  dependsOn = subprojects.check
-  additionalSourceDirs = files(srcDirs)
-  sourceDirectories = files(srcDirs)
-  classDirectories = files(main.output)
-  executionData = files(subprojects.jacocoTestReport.executionData)
-  afterEvaluate {
-    classDirectories = files(classDirectories.files.collect {
-      fileTree(
-        dir    : it,
-        exclude: [
-          '*donot/check/me*',
-          '*dont/check/metoo*',
-        ]
-      )
-    })
-  }
-  reports {
-    xml.enabled = false
-    csv.enabled = false
-    html.enabled = true
-    html.destination file("$rootProject.buildDir/jacoco/html")
-  }
-  onlyIf = {
-    true
-  }
-  doFirst {
-    executionData = files(executionData.findAll {
-      it.exists()
-    })
-  }
-}
diff --git a/gradle/java.gradle b/gradle/java.gradle
deleted file mode 100644
index f06d5df..0000000
--- a/gradle/java.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-allprojects {
-  apply plugin: 'java'
-
-  apply plugin: 'io.franzbecker.gradle-lombok'
-  lombok.version = project.lombokVersion
-
-  version = '0.0.1'
-  group = 'com.github.daggerok'
-  sourceCompatibility = targetCompatibility = "$javaVersion"
-
-  defaultTasks 'clean', 'build'
-
-  dependencies {
-    // In java we trust...
-    implementation "io.vavr:vavr:$vavrVersion"
-    implementation "org.slf4j:slf4j-api:$slf4jVersion"
-    implementation "ch.qos.logback:logback-classic:$logbackVersion"
-  }
-}
diff --git a/gradle/jgiven.gradle b/gradle/jgiven.gradle
deleted file mode 100644
index 2db5cc5..0000000
--- a/gradle/jgiven.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-dependencies {
-  testCompile "com.tngtech.jgiven:jgiven-junit:$jgivenVersion"
-  testCompile "com.tngtech.jgiven:jgiven-junit5:$jgivenVersion"
-  testRuntime "com.tngtech.jgiven:jgiven-html5-report:$jgivenVersion"
-  //testRuntime "org.slf4j:slf4j-api:$slf4jVersion"
-  testCompile "ch.qos.logback:logback-classic:$logbackVersion"
-}
-
-task jgivenTestReport(type: JavaExec, dependsOn: 'test') {
-  main = 'com.tngtech.jgiven.report.ReportGenerator'
-  args '--targetDir=./build/jgiven-report', '--format=html'
-  classpath = configurations.testCompile
-  shouldRunAfter clean, assemble
-}
-
-test.finalizedBy jgivenTestReport
diff --git a/gradle/junit.gradle b/gradle/junit.gradle
deleted file mode 100644
index 37c8515..0000000
--- a/gradle/junit.gradle
+++ /dev/null
@@ -1,26 +0,0 @@
-allprojects {
-  // read more: https://docs.gradle.org/4.6/release-notes.html#junit-5-support
-
-  dependencies {
-    testImplementation "org.assertj:assertj-core:$assertjVersion"
-    testImplementation "junit:junit:$junit4Version"
-    testImplementation "org.hamcrest:hamcrest-core:$hamcrestVersion"
-    testImplementation "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion"
-    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion"
-    testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$junitJupiterVersion", {
-      because 'allows JUnit 3 and JUnit 4 tests to run'
-    }
-    testRuntime "org.junit.platform:junit-platform-launcher:$junitPlatformVersion", {
-      because 'allows tests to run from IDEs that bundle older version of launcher'
-    }
-    //testCompileOnly 'org.apiguardian:apiguardian-api:1.0.0'
-  }
-
-  test {
-    useJUnitPlatform {
-      includeEngines 'junit-jupiter', 'junit-vintage'
-    }
-  }
-
-  //apply from: "$project.rootDir/gradle/jgiven.gradle"
-}
diff --git a/gradle/kotlin.gradle b/gradle/kotlin.gradle
deleted file mode 100644
index 1028c45..0000000
--- a/gradle/kotlin.gradle
+++ /dev/null
@@ -1,50 +0,0 @@
-allprojects {
-  apply plugin: 'org.jetbrains.kotlin.jvm'
-  apply plugin: 'org.jetbrains.kotlin.plugin.noarg'
-  apply plugin: 'org.jetbrains.kotlin.plugin.spring'
-
-  def projectIncremental = true
-  def projectFreeCompileArgs = [
-      '-Xjsr305=strict',
-      '-java-parameters',
-      //1.2.41:
-      //"-Xenable-jvm-default",
-      //1.2.50:
-      "-Xjvm-default=compatibility",
-  ]
-
-  kotlin {
-    experimental {
-      coroutines 'enable'
-    }
-  }
-
-  kapt {
-    useBuildCache = true
-  }
-
-  compileKotlin {
-    incremental = projectIncremental
-    kotlinOptions {
-      jvmTarget = "$javaVersion"
-      freeCompilerArgs = projectFreeCompileArgs
-    }
-  }
-
-  compileTestKotlin {
-    incremental = projectIncremental
-    kotlinOptions {
-      jvmTarget = "$javaVersion"
-      freeCompilerArgs = projectFreeCompileArgs
-    }
-  }
-
-  dependencies {
-    //implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonKotlinVersion"
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
-    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
-
-    testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlinVersion"
-    testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
-  }
-}
diff --git a/gradle/main.gradle b/gradle/main.gradle
deleted file mode 100644
index 6e2d021..0000000
--- a/gradle/main.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'application'
-apply plugin: 'com.github.johnrengelman.shadow'
-
-mainClassName = 'daggerok.App'
-shadowJar.mustRunAfter jar
-defaultTasks 'clean', 'build', 'installDist', 'distZip', 'publish'
diff --git a/gradle/publish.gradle b/gradle/publish.gradle
deleted file mode 100644
index 693b817..0000000
--- a/gradle/publish.gradle
+++ /dev/null
@@ -1,102 +0,0 @@
-/* please, read this: https://docs.gradle.org/4.8/userguide/publishing_maven.html#publishing_m */
-
-allprojects {
-  apply plugin: 'java'
-
-  project.javadoc.failOnError = false
-
-  task sourcesJar(type: Jar) {
-    from sourceSets.main.allJava
-    classifier 'sources'
-  }
-
-  task javadocJar(type: Jar) {
-    from javadoc
-    classifier 'javadoc'
-  }
-
-  apply plugin: 'maven-publish'
-
-  publishing {
-    publications {
-      mavenJava(MavenPublication) { publication ->
-        afterEvaluate {
-          project.shadow.component(publication)
-          artifact sourcesJar
-          artifact javadocJar
-          //artifactId = jar.baseName
-
-          pom {
-            name = project.name
-            description = project.description
-            url = "https://github.com/daggerok/$project.name" as String
-            licenses {
-              license {
-                name = 'MIT License'
-                url = "https://github.com/daggerok/${project.name}/blob/master/LICENSE" as String
-              }
-            }
-            developers {
-              developer {
-                id = 'daggerok'
-                name = 'Maksim Kostromin'
-                email = 'daggerok@gmail.com'
-              }
-            }
-            scm {
-              connection = "scm:git:git://github.com/daggeropk/${project.name}.git" as String
-              developerConnection = "scm:git:ssh://github.com/daggeropk/${project.name}.git" as String
-              url = "http://github.com/daggeropk/$project.name" as String
-            }
-          }
-        }
-      }
-    }
-  }
-
-  publishing {
-    repositories {
-      maven {
-        url """$rootProject.buildDir/maven-publish/repos/${(
-          project.version.endsWith("SNAPSHOT") ? 'snapshots' : 'releases'
-        )}"""
-      }
-    }
-  }
-
-  publish.dependsOn assemble
-
-  /* // This one is required signatory to be configured (gpg stuff...)
-  apply plugin: 'signing'
-
-  signing {
-    sign project.publishing.publications.mavenJava
-  }
-  */
-}
-
-/*
-allprojects {
-  // with shadow plugin
-  publishing {
-    publications {
-      mavenJava(MavenPublication) { publication ->
-        project.shadow.component(publication)
-        artifact sourcesJar
-        artifact javadocJar
-        // ...
-      }
-    }
-  }
-  // without shadow plugin
-  publishing {
-    publications {
-      mavenJava(MavenPublication) ->
-        artifact sourcesJar
-        artifact javadocJar
-      }
-    }
-  }
-  // ...
-}
-*/
diff --git a/gradle/redeploy.sh b/gradle/redeploy.sh
deleted file mode 100755
index 17c4006..0000000
--- a/gradle/redeploy.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-# ./grdlew clean war; bash ./gradle/redeploy.sh
-container=jax-rs-hateoas-links_gradle-jax-rs-hateoas-links-app_1
-docker cp ./build/libs/*.war ${container}:/home/jboss-eap-7.1/jboss-eap-7.1/standalone/deployments/app.war
diff --git a/gradle/repositories-config.gradle b/gradle/repositories-config.gradle
deleted file mode 100644
index fe50614..0000000
--- a/gradle/repositories-config.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-repositories {
-  //mavenLocal() // for some reasons code source not attaching with this mavenLocal repository enabled in idea...
-  mavenCentral()
-  jcenter()
-  //maven { url 'https://repo.spring.io/libs-milestone' }
-}
diff --git a/gradle/repositories.gradle b/gradle/repositories.gradle
deleted file mode 100644
index 30d999d..0000000
--- a/gradle/repositories.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-allprojects {
-  buildscript {
-    apply from: "$rootDir/gradle/repositories-config.gradle"
-  }
-  apply from: "$rootDir/gradle/repositories-config.gradle"
-}
diff --git a/gradle/selenide.gradle b/gradle/selenide.gradle
deleted file mode 100644
index 5477451..0000000
--- a/gradle/selenide.gradle
+++ /dev/null
@@ -1,59 +0,0 @@
-dependencies {
-  testImplementation "com.codeborne:selenide:$selenideVersion", {
-    exclude module: 'selenium-opera-driver'
-    exclude module: 'selenium-safari-driver'
-    exclude module: 'selenium-edge-driver'
-    exclude module: 'selenium-ie-driver'
-    because "we don't wanna use any of these..."
-  }
-  testImplementation "com.codeborne:phantomjsdriver:$phantomjsDriverVersion"
-  ////these are must be included by selenide library as a transitive dependencies:
-  //testImplementation "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumDriverVersion"
-  //testImplementation "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumDriverVersion"
-}
-
-static def findAllSelenideSystemProps() {
-  System.properties?.findAll { it.key.startsWith('selenide') } ?: [:]
-}
-
-test {
-  systemProperties = findAllSelenideSystemProps() + [
-      'selenide.browser': System.getProperty('selenide.browser', 'chrome')
-  ]
-}
-
-['firefox', 'chrome', 'phantomjs'].each { taskName ->
-  Task e2eTestBrowserSelectorTask = tasks.create(name: taskName) {
-    def systemProps = findAllSelenideSystemProps()
-    systemProps['selenide.browser'] = taskName
-
-    doFirst {
-      test {
-        systemProperties = systemProps
-      }
-    }
-  }
-  test.shouldRunAfter(e2eTestBrowserSelectorTask)
-}
-
-task headless {
-  def systemProps = findAllSelenideSystemProps()
-  systemProps['selenide.headless'] = true
-
-  doFirst {
-    test {
-      systemProperties = systemProps
-    }
-  }
-}
-
-task headful {
-  def systemProps = findAllSelenideSystemProps()
-  systemProps['selenide.headless'] = false
-
-  doFirst {
-    test {
-      systemProperties = systemProps
-    }
-  }
-}
diff --git a/gradle/spring-boot.gradle b/gradle/spring-boot.gradle
deleted file mode 100644
index c552dca..0000000
--- a/gradle/spring-boot.gradle
+++ /dev/null
@@ -1,68 +0,0 @@
-apply plugin: 'idea'
-apply plugin: 'cn.bestwu.propdeps'
-apply plugin: 'org.springframework.boot'
-apply plugin: 'io.spring.dependency-management'
-
-defaultTasks 'clean', 'build'
-
-compileJava.dependsOn(processResources)
-
-dependencies {
-
-  // spring-boot
-  implementation 'org.springframework.boot:spring-boot-starter-webflux'
-  implementation 'org.springframework.boot:spring-boot-starter-actuator'
-  //runtime 'org.springframework.boot:spring-boot-devtools'
-
-  //annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
-  //testAnnotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
-
-  //// JPA (+embedded)
-  //runtime 'com.h2database:h2'
-  //implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
-  //implementation 'org.springframework.boot:spring-boot-starter-data-rest'
-
-  //// Kafka (+embedded)
-  //implementation 'org.springframework.cloud:spring-cloud-stream'
-  //implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka'
-  //implementation 'org.springframework.kafka:spring-kafka'
-  //implementation 'org.springframework.kafka:spring-kafka-test'
-  //testImplementation 'org.springframework.cloud:spring-cloud-stream-test-support'
-
-  testImplementation 'org.springframework.boot:spring-boot-starter-test'
-  testImplementation 'io.projectreactor:reactor-test'
-}
-
-dependencyManagement {
-  imports {
-    mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
-    mavenBom "org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion"
-  }
-}
-
-bootJar {
-  launchScript()
-}
-
-/*
-// spring-boot multi-module preamble:
-// this in dependencies closure really doesn't work:
-// compile project(':submodule').sourceSets.main.output // dot't do this!
-
-// 1. in spring-boot submodules use next configs:
-
-bootJar {
-  enabled = false
-}
-jar {
-  enabled = true
-}
-
-// 2. in spring-boot target main module to fix gradle compile build + lombok issue use all of these:
-
-dependencies {
-  annotationProcessor(project(':submodule'))
-  compileOnly(project(':submodule'))
-  compile(project(':submodule'))
-}
-*/
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100755
index 91ca28c..0000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index a95009c..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
deleted file mode 100755
index cccdd3d..0000000
--- a/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
-    echo "$*"
-}
-
-die () {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Escape application args
-save () {
-    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
-    echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100755
index e95643d..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/idea.xml b/idea.xml
deleted file mode 100644
index bda9eab..0000000
--- a/idea.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<code_scheme name="Default" version="173">
-  <option name="OTHER_INDENT_OPTIONS">
-    <value>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="TAB_SIZE" value="2" />
-    </value>
-  </option>
-  <option name="FORMATTER_TAGS_ENABLED" value="true" />
-  <JSCodeStyleSettings>
-    <option name="FORCE_SEMICOLON_STYLE" value="true" />
-    <option name="USE_DOUBLE_QUOTES" value="false" />
-    <option name="FORCE_QUOTE_STYlE" value="true" />
-    <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
-    <option name="SPACES_WITHIN_IMPORTS" value="true" />
-  </JSCodeStyleSettings>
-  <TypeScriptCodeStyleSettings>
-    <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
-    <option name="SPACES_WITHIN_IMPORTS" value="true" />
-  </TypeScriptCodeStyleSettings>
-  <codeStyleSettings language="CSS">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="GSP">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="Groovy">
-    <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
-    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="HTML">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="JAVA">
-    <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
-    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
-    <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" />
-    <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" />
-    <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
-    <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
-    <option name="CALL_PARAMETERS_WRAP" value="5" />
-    <option name="METHOD_CALL_CHAIN_WRAP" value="5" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="JSP">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="JSPX">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="JavaScript">
-    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="2" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="TypeScript">
-    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="2" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="XML">
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-  <codeStyleSettings language="kotlin">
-    <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
-    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
-    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
-    <indentOptions>
-      <option name="INDENT_SIZE" value="2" />
-      <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      <option name="TAB_SIZE" value="2" />
-    </indentOptions>
-  </codeStyleSettings>
-</code_scheme>
\ No newline at end of file
diff --git a/docs/images/favicon.ico b/images/favicon.ico
similarity index 100%
rename from docs/images/favicon.ico
rename to images/favicon.ico
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..5c04223
--- /dev/null
+++ b/index.html
@@ -0,0 +1,603 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.6.1">
+<meta name="author" content="Maksim Kostromin">
+<title>java-examples (0.0.1)</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Remove comment around @import statement below when using as a custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+[hidden],template{display:none}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.spread{width:100%}
+p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite:before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7;font-weight:bold}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
+.clearfix:after,.float-group:after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
+b.button:before{content:"[";padding:0 3px 0 2px}
+b.button:after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
+#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
+#content{margin-top:1.25em}
+#content:before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
+#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span:before{content:"\00a0\2013\00a0"}
+#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark:before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber:after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
+@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+.sect1{padding-bottom:.625em}
+@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
+.sect1+.sect1{border-top:1px solid #efefed}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
+.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:initial}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
+.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
+@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]:before{display:block}
+.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
+.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
+.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
+.quoteblock .quoteblock blockquote:before{display:none}
+.verseblock{margin:0 1em 1.25em 1em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
+.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
+.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
+table.tableblock{max-width:100%;border-collapse:separate}
+table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot{border-width:1px 0}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
+ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
+ul.inline>li>*{display:block}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top}
+.colist>table tr>td:first-of-type img{max-width:initial}
+.colist>table tr>td:last-of-type{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
+.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]:after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@media print{@page{margin:1.25cm .75cm}
+*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]:after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
+.sect1{padding-bottom:0!important}
+.sect1+.sect1{border:0!important}
+#header>h1:first-child{margin-top:1.25rem}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span:before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]:before{display:block}
+#footer{background:none!important;padding:0 .9375em}
+#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+</style>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
+<style>
+  #content {
+    max-width: 98%;
+  }
+  .positioned-image {
+    position: absolute;
+    top: 0;
+    right: 0;
+    border: 0;
+  }
+</style>
+
+<meta name="keywords"
+      content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples">
+<meta name="description"
+      content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples">
+
+<!-- highlight.js highlighter -->
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
+
+<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico">
+<div>
+  <!--<a href="https://gitlab.com/daggerok/java-examples">-->
+  <a href="https://github.com/daggerok/java-examples">
+    <img class="positioned-image"
+         src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"
+         alt="Don't fork me!">
+  </a>
+</div>
+</head>
+<body class="book toc2 toc-left">
+<div id="header">
+<h1>java-examples (0.0.1) <span class="image"><a class="image" href="https://github.com/daggerok/java-examples"><img src="https://travis-ci.org/daggerok/java-examples.svg?branch=master" alt="Build Status"></a></span></h1>
+<div class="details">
+<span id="author" class="author">Maksim Kostromin</span><br>
+<span id="email" class="email"><a href="mailto:daggerok@gmail.com">daggerok@gmail.com</a></span><br>
+<span id="revnumber">version 0.0.1,</span>
+<span id="revdate">2020-04-18 12:10:32 UTC</span>
+</div>
+<div id="toc" class="toc2">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#introduction">1. Introduction</a></li>
+<li><a href="#implementation">2. Implementation</a>
+<ul class="sectlevel2">
+<li><a href="#predicate-java-7-api">2.1. predicate (java 7 API):</a></li>
+</ul>
+</li>
+<li><a href="#links">3. Links</a></li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Travis CI status:
+<span class="image"><a class="image" href="https://github.com/daggerok/java-examples"><img src="https://travis-ci.org/daggerok/java-examples.svg?branch=master" alt="Build Status"></a></span></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="introduction"><a class="anchor" href="#introduction"></a>1. Introduction</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>in progress&#8230;&#8203;</p>
+</div>
+<div class="paragraph">
+<p>Read <a href="https://daggerok.github.io/java-examples">project reference documentation</a></p>
+</div>
+<div class="paragraph">
+<p>Initially generated by using <a href="https://github.com/daggerok/generator-jvm/">generator-jvm</a> yeoman generator (java)</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="implementation"><a class="anchor" href="#implementation"></a>2. Implementation</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="predicate-java-7-api"><a class="anchor" href="#predicate-java-7-api"></a>2.1. predicate (java 7 API):</h3>
+<div class="listingblock">
+<div class="title">impl</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class Java7Predicate {
+
+    public interface MyPredicate {
+        boolean test(final String value);
+    }
+
+    @RequiredArgsConstructor
+    public static class Is implements MyPredicate {
+        final String value;
+
+        @Override
+        public boolean test(String value) {
+            return value != null &amp;&amp; value.contains(this.value);
+        }
+    }
+
+    public static class IsRed implements MyPredicate {
+        @Override
+        public boolean test(final String value) {
+            return nonNull(value) &amp;&amp; value.toLowerCase().contains("red");
+        }
+    }
+
+    public static void sideEffect(final MyPredicate predicate) {
+        final List&lt;String&gt; list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil");
+        for (String i : list) {
+            if (predicate.test(i)) {
+                System.out.println("i = " + i);
+            }
+        }
+    }
+}</code></pre>
+</div>
+</div>
+<div class="listingblock">
+<div class="title">test</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@Slf4j
+@CaptureSystemOutput
+@DisplayName("test predicate API: java 7")
+class Java7PredicateTest {
+
+    @Test
+    @DisplayName("test positive")
+    void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) {
+
+        assertAll(() -&gt; {
+
+            sideEffect(new Java7Predicate.IsRed());
+            Assertions.assertThat(outputCapture.toString())
+                    .contains("i = red", "i = red devil");
+
+            sideEffect(new Java7Predicate.Is("green"));
+            Assertions.assertThat(outputCapture.toString().contains("t = green"));
+        });
+    }
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="links"><a class="anchor" href="#links"></a>3. Links</h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p><a href="./index.pdf">Documentation in PFD format</a></p>
+</li>
+<li>
+<p><a href="https://github.com/daggerok/java-examples">GitHub repo</a></p>
+</li>
+<li>
+<p><a href="https://daggerok.github.io/java-examples">GitHub pages</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version 0.0.1<br>
+Last updated 2020-04-18 12:10:32 UTC
+</div>
+</div>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
+<script>hljs.initHighlighting()</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/index.pdf b/index.pdf
new file mode 100644
index 0000000..1307442
Binary files /dev/null and b/index.pdf differ
diff --git a/index.xml b/index.xml
new file mode 100644
index 0000000..0b3d45f
--- /dev/null
+++ b/index.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?asciidoc-toc maxdepth="4"?>
+<?asciidoc-numbered?>
+<book xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
+<info>
+<title>java-examples (0.0.1)</title>
+<date>2020-04-18 12:10:32 UTC</date>
+<author>
+<personname>
+<firstname>Maksim</firstname>
+<surname>Kostromin</surname>
+</personname>
+<email>daggerok@gmail.com</email>
+</author>
+<authorinitials>MK</authorinitials>
+<revhistory>
+<revision>
+<revnumber>0.0.1</revnumber>
+<date>2020-04-18 12:10:32 UTC</date>
+<authorinitials>MK</authorinitials>
+</revision>
+</revhistory>
+</info>
+<preface>
+<title></title>
+<simpara>Travis CI status:
+<inlinemediaobject>
+<imageobject>
+<imagedata fileref="https://travis-ci.org/daggerok/java-examples.svg?branch=master"/>
+</imageobject>
+<textobject><phrase>Build Status</phrase></textobject>
+</inlinemediaobject></simpara>
+</preface>
+<chapter xml:id="introduction">
+<title>Introduction</title>
+<simpara>in progress&#8230;&#8203;</simpara>
+<simpara>Read <link xl:href="https://daggerok.github.io/java-examples">project reference documentation</link></simpara>
+<simpara>Initially generated by using <link xl:href="https://github.com/daggerok/generator-jvm/">generator-jvm</link> yeoman generator (java)</simpara>
+</chapter>
+<chapter xml:id="implementation">
+<title>Implementation</title>
+<section xml:id="predicate-java-7-api">
+<title>predicate (java 7 API):</title>
+<formalpara>
+<title>impl</title>
+<para>
+<programlisting language="java" linenumbering="unnumbered">public class Java7Predicate {
+
+    public interface MyPredicate {
+        boolean test(final String value);
+    }
+
+    @RequiredArgsConstructor
+    public static class Is implements MyPredicate {
+        final String value;
+
+        @Override
+        public boolean test(String value) {
+            return value != null &amp;&amp; value.contains(this.value);
+        }
+    }
+
+    public static class IsRed implements MyPredicate {
+        @Override
+        public boolean test(final String value) {
+            return nonNull(value) &amp;&amp; value.toLowerCase().contains("red");
+        }
+    }
+
+    public static void sideEffect(final MyPredicate predicate) {
+        final List&lt;String&gt; list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil");
+        for (String i : list) {
+            if (predicate.test(i)) {
+                System.out.println("i = " + i);
+            }
+        }
+    }
+}</programlisting>
+</para>
+</formalpara>
+<formalpara>
+<title>test</title>
+<para>
+<programlisting language="java" linenumbering="unnumbered">@Slf4j
+@CaptureSystemOutput
+@DisplayName("test predicate API: java 7")
+class Java7PredicateTest {
+
+    @Test
+    @DisplayName("test positive")
+    void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) {
+
+        assertAll(() -&gt; {
+
+            sideEffect(new Java7Predicate.IsRed());
+            Assertions.assertThat(outputCapture.toString())
+                    .contains("i = red", "i = red devil");
+
+            sideEffect(new Java7Predicate.Is("green"));
+            Assertions.assertThat(outputCapture.toString().contains("t = green"));
+        });
+    }
+}</programlisting>
+</para>
+</formalpara>
+</section>
+</chapter>
+<chapter xml:id="links">
+<title>Links</title>
+<itemizedlist>
+<listitem>
+<simpara><link xl:href="https://github.com/daggerok/java-examples">GitHub repo</link></simpara>
+</listitem>
+<listitem>
+<simpara><link xl:href="https://daggerok.github.io/java-examples">GitHub pages</link></simpara>
+</listitem>
+</itemizedlist>
+</chapter>
+</book>
\ No newline at end of file
diff --git a/mvnw b/mvnw
deleted file mode 100755
index e96ccd5..0000000
--- a/mvnw
+++ /dev/null
@@ -1,227 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Maven2 Start Up Batch script
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   M2_HOME - location of maven2's installed home dir
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "`uname`" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        export JAVA_HOME="`/usr/libexec/java_home`"
-      else
-        export JAVA_HOME="/Library/Java/Home"
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=`java-config --jre-home`
-  fi
-fi
-
-if [ -z "$M2_HOME" ] ; then
-  ## resolve links - $0 may be a link to maven's home
-  PRG="$0"
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-      PRG="$link"
-    else
-      PRG="`dirname "$PRG"`/$link"
-    fi
-  done
-
-  saveddir=`pwd`
-
-  M2_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  M2_HOME=`cd "$M2_HOME" && pwd`
-
-  cd "$saveddir"
-  # echo Using m2 at $M2_HOME
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --unix "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME="`(cd "$M2_HOME"; pwd)`"
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
-  # TODO classpath?
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="`which javac`"
-  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=`which readlink`
-    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
-      if $darwin ; then
-        javaHome="`dirname \"$javaExecutable\"`"
-        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
-      else
-        javaExecutable="`readlink -f \"$javaExecutable\"`"
-      fi
-      javaHome="`dirname \"$javaExecutable\"`"
-      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="`which java`"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=`cd "$wdir/.."; pwd`
-    fi
-    # end of workaround
-  done
-  echo "${basedir}"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    echo "$(tr -s '\n' ' ' < "$1")"
-  fi
-}
-
-BASE_DIR=`find_maven_basedir "$(pwd)"`
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
-  echo $MAVEN_PROJECTBASEDIR
-fi
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --path --windows "$M2_HOME"`
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
-fi
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
deleted file mode 100755
index 48c810e..0000000
--- a/mvnw.cmd
+++ /dev/null
@@ -1,143 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Maven2 Start Up Batch script
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
-
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-
-exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index aeb5885..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="
-         http://maven.apache.org/POM/4.0.0
-         http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>com.github.daggerok</groupId>
-  <version>0.0.1</version>
-  <artifactId>java-examples</artifactId>
-  <packaging>jar</packaging>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <junit.platform.version>1.2.0</junit.platform.version>
-    <junit.jupiter.version>5.1.0</junit.jupiter.version>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <assertj.version>3.10.0</assertj.version>
-    <lombok.version>1.18.0</lombok.version>
-    <jgiven.version>0.15.3</jgiven.version>
-    <junit4.version>4.12</junit4.version>
-    <slf4j.version>1.7.25</slf4j.version>
-    <vavr.version>0.9.2</vavr.version>
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.junit</groupId>
-        <artifactId>junit-bom</artifactId>
-        <version>${junit.jupiter.version}</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <dependencies>
-    <dependency>
-      <groupId>io.vavr</groupId>
-      <artifactId>vavr</artifactId>
-      <version>${vavr.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <version>${lombok.version}</version>
-      <optional>true</optional>
-      <scope>provided</scope>
-    </dependency>
-    <!-- logging -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <version>${slf4j.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <version>1.2.3</version>
-    </dependency>
-
-    <!-- assertj -->
-    <dependency>
-      <groupId>org.assertj</groupId>
-      <artifactId>assertj-core</artifactId>
-      <version>3.10.0</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- junit 4 -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>${junit4.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- junit 5 -->
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-commons</artifactId>
-      <version>${junit.platform.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
-      <version>${junit.platform.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-runner</artifactId>
-      <version>${junit.platform.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-params</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- jgiven -->
-    <dependency>
-      <groupId>com.tngtech.jgiven</groupId>
-      <artifactId>jgiven-html5-report</artifactId>
-      <version>${jgiven.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.tngtech.jgiven</groupId>
-      <artifactId>jgiven-junit</artifactId>
-      <version>${jgiven.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.tngtech.jgiven</groupId>
-      <artifactId>jgiven-junit5</artifactId>
-      <version>${jgiven.version}</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <defaultGoal>clean package</defaultGoal>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.7.0</version>
-      </plugin>
-
-      <!-- fat jar -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.1.0</version>
-        <configuration>
-          <finalName>${project.artifactId}-${project.version}-all</finalName>
-          <!--
-          <descriptors>
-            <descriptor>${project.basedir}/.mvn/assembly.xml</descriptor>
-          </descriptors>
-          -->
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptorRefs>
-            <descriptorRef>jar-with-dependencies</descriptorRef>
-          </descriptorRefs>
-          <archive>
-            <manifest>
-              <mainClass>daggerok.App</mainClass>
-            </manifest>
-          </archive>
-        </configuration>
-        <executions>
-          <execution>
-            <id>assemble-jar-with-dependencies</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <!-- junit -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.21.0</version>
-        <dependencies>
-          <dependency>
-            <groupId>org.junit.platform</groupId>
-            <artifactId>junit-platform-surefire-provider</artifactId>
-            <version>${junit.platform.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.jupiter.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.junit.vintage</groupId>
-            <artifactId>junit-vintage-engine</artifactId>
-            <version>${junit.jupiter.version}</version>
-          </dependency>
-        </dependencies>
-        <configuration>
-          <properties>
-            <!--
-            <includeTags>acceptance | !feature-a</includeTags>
-            <excludeTags>integration, regression</excludeTags>
-            <configurationParameters>
-              junit.jupiter.conditions.deactivate = *
-              junit.jupiter.extensions.autodetection.enabled = true
-              junit.jupiter.testinstance.lifecycle.default = per_class
-            </configurationParameters>
-            -->
-          </properties>
-        </configuration>
-      </plugin>
-
-      <!-- jgiven: `mvn verify` -->
-      <plugin>
-        <groupId>com.tngtech.jgiven</groupId>
-        <artifactId>jgiven-maven-plugin</artifactId>
-        <version>${jgiven.version}</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>report</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <format>html</format>
-          <outputDirectory>${project.build.directory}/jgiven-report</outputDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <!-- generate findbugs html report `target/site/findbugs.html as part of maven-project-info-report `mvn verify site` -->
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.6</version>
-        <configuration>
-          <reportPlugins>
-            <plugin>
-              <groupId>org.codehaus.mojo</groupId>
-              <artifactId>findbugs-maven-plugin</artifactId>
-              <configuration>
-                <!-- specify classes for analysis -->
-                <onlyAnalyze>*daggerok*</onlyAnalyze>
-              </configuration>
-            </plugin>
-          </reportPlugins>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>findbugs-maven-plugin</artifactId>
-        <version>3.0.5</version>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>2.9</version>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </reporting>
-
-  <!-- deploy `mvn deploy` -->
-  <distributionManagement>
-    <repository>
-      <id>local-repo</id>
-      <url>file://${project.basedir}/target/local-repo</url>
-    </repository>
-  </distributionManagement>
-
-  <profiles>
-    <profile>
-      <id>docker</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>com.dkanejs.maven.plugins</groupId>
-            <artifactId>docker-compose-maven-plugin</artifactId>
-            <version>1.0.1</version>
-            <executions>
-              <execution>
-                <id>up</id>
-                <!--<phase>process-resources</phase>-->
-                <phase>verify</phase>
-                <goals>
-                  <goal>up</goal>
-                </goals>
-              </execution>
-              <execution>
-                <id>down</id>
-                <!--<phase>test</phase>-->
-                <phase>verify</phase>
-                <goals>
-                  <goal>down</goal>
-                </goals>
-              </execution>
-            </executions>
-            <configuration>
-              <composeFile>${project.basedir}/docker-compose-maven.yaml</composeFile>
-              <detachedMode>true</detachedMode>
-              <removeVolumes>true</removeVolumes>
-              <detail>true</detail>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
-      <id>docs</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.asciidoctor</groupId>
-            <artifactId>asciidoctor-maven-plugin</artifactId>
-            <version>1.5.6</version>
-            <dependencies>
-              <dependency>
-                <groupId>org.asciidoctor</groupId>
-                <artifactId>asciidoctorj-pdf</artifactId>
-                <version>1.5.0-alpha.16</version>
-              </dependency>
-              <dependency>
-                <groupId>org.asciidoctor</groupId>
-                <artifactId>asciidoctorj-diagram</artifactId>
-                <version>1.5.4</version>
-              </dependency>
-            </dependencies>
-            <configuration>
-              <outputDirectory>target/generated-docs</outputDirectory>
-              <sourceDirectory>docs</sourceDirectory>
-              <relativeBaseDir>true</relativeBaseDir>
-              <headerFooter>true</headerFooter>
-              <imagesDir>.</imagesDir><!-- Don't know why, but yes - use base sources dir... -->
-              <sourceHighlighter>highlightjs</sourceHighlighter>
-              <attributes>
-                <toc>left</toc>
-                <linkcss>false</linkcss>
-                <doctype>book</doctype>
-                <ruby>erubis</ruby>
-                <encoding>${project.build.sourceEncoding}</encoding>
-                <linkattrs>true</linkattrs>
-                <numbered>true</numbered>
-                <sectanchors>true</sectanchors>
-                <sectlink>true</sectlink>
-                <idprefix/>
-                <docinfo1/>
-                <icons>font</icons>
-                <idseparator>-</idseparator>
-                <setanchors>true</setanchors>
-                <toc-title>Table of Contents</toc-title>
-                <project-name>${project.artifactId}</project-name>
-                <root-project-name>${project.artifactId}</root-project-name>
-                <project-version>${project.version}</project-version>
-                <github-url>https://github.com/daggerok/${project.artifactId}</github-url>
-              </attributes>
-            </configuration>
-            <executions>
-              <execution>
-                <id>output-html</id>
-                <phase>generate-resources</phase>
-                <goals>
-                  <goal>process-asciidoc</goal>
-                </goals>
-                <configuration>
-                  <backend>html</backend>
-                </configuration>
-              </execution>
-              <execution>
-                <id>output-docbook</id>
-                <phase>generate-resources</phase>
-                <goals>
-                  <goal>process-asciidoc</goal>
-                </goals>
-                <configuration>
-                  <backend>docbook</backend>
-                </configuration>
-              </execution>
-              <execution>
-                <id>output-pdf-doc</id>
-                <phase>generate-resources</phase>
-                <goals>
-                  <goal>process-asciidoc</goal>
-                </goals>
-                <configuration>
-                  <backend>pdf</backend>
-                  <sourceHighlighter>coderay</sourceHighlighter>
-                  <requires>
-                    <require>asciidoctor-diagram</require>
-                    <require>coderay</require>
-                  </requires>
-                  <attributes>
-                    <icons>font</icons>
-                    <pagenums/>
-                  </attributes>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-
-        <defaultGoal>clean process-resources</defaultGoal>
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index ead6ed0..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,3 +0,0 @@
-rootProject.name = 'java-examples'
-enableFeaturePreview 'STABLE_PUBLISHING'
-include 'docs'
diff --git a/src/main/java/daggerok/App.java b/src/main/java/daggerok/App.java
deleted file mode 100644
index 81fa5f6..0000000
--- a/src/main/java/daggerok/App.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package daggerok;
-
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class App {
-  public static void main(String[] args) {
-    log.info("yo!");
-  }
-}
diff --git a/src/main/java/daggerok/java7/predicate/Java7Predicate.java b/src/main/java/daggerok/java7/predicate/Java7Predicate.java
deleted file mode 100644
index 5350f26..0000000
--- a/src/main/java/daggerok/java7/predicate/Java7Predicate.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package daggerok.java7.predicate;
-
-import lombok.RequiredArgsConstructor;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import static java.util.Objects.nonNull;
-//tag::content[]
-public class Java7Predicate {
-
-    public interface MyPredicate {
-        boolean test(final String value);
-    }
-
-    @RequiredArgsConstructor
-    public static class Is implements MyPredicate {
-        final String value;
-
-        @Override
-        public boolean test(String value) {
-            return value != null && value.contains(this.value);
-        }
-    }
-
-    public static class IsRed implements MyPredicate {
-        @Override
-        public boolean test(final String value) {
-            return nonNull(value) && value.toLowerCase().contains("red");
-        }
-    }
-
-    public static void sideEffect(final MyPredicate predicate) {
-        final List<String> list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil");
-        for (String i : list) {
-            if (predicate.test(i)) {
-                System.out.println("i = " + i);
-            }
-        }
-    }
-}
-//end::content[]
diff --git a/src/main/java/lombok.config b/src/main/java/lombok.config
deleted file mode 100644
index d959b09..0000000
--- a/src/main/java/lombok.config
+++ /dev/null
@@ -1 +0,0 @@
-lombok.var.flagUsage = ALLOW
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
deleted file mode 100644
index bf92a14..0000000
--- a/src/main/resources/logback.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <!--
-        %black, %red, %green, %yellow, %blue, %magenta, %cyan, %white, %gray, %boldRed,
-        %boldGreen, %boldYellow, %boldBlue, %boldMagenta, %boldCyan, %boldWhite, %highlight
-      -->
-      <!--<pattern>faint(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) [%-40.40logger{10}] - %msg%n</pattern>-->
-      <!--<pattern>%gray(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta(%thread{10}) [ %cyan(%-25.25logger{24})] - %boldWhite(%msg%n)</pattern>-->
-      <pattern>%boldWhite(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta(%-10.10thread{10}) [ %cyan(%-25.25logger{25}) ] - %gray(%msg%n)</pattern>
-    </encoder>
-  </appender>
-  <root level="info">
-    <appender-ref ref="STDOUT"/>
-  </root>
-</configuration>
diff --git a/src/test/java/daggerok/AppJUnit4Test.java b/src/test/java/daggerok/AppJUnit4Test.java
deleted file mode 100644
index bdee874..0000000
--- a/src/test/java/daggerok/AppJUnit4Test.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package daggerok;
-
-import org.junit.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-public class AppJUnit4Test {
-
-  @Test
-  public void testPositive() {
-    assertThat(true, is(true));
-  }
-
-  @Test(expected = AssertionError.class)
-  public void testNegative() {
-    assertThat(false, is(true));
-  }
-}
diff --git a/src/test/java/daggerok/extensions/CaptureSystemOutput.java b/src/test/java/daggerok/extensions/CaptureSystemOutput.java
deleted file mode 100644
index 6afba8d..0000000
--- a/src/test/java/daggerok/extensions/CaptureSystemOutput.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright 2012-2017 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// origina located here:
-// https://github.com/sbrannen/junit5-demo/blob/master/src/test/java/extensions/CaptureSystemOutput.java
-package daggerok.extensions;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.AllOf.allOf;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.hamcrest.Matcher;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
-import org.junit.jupiter.api.extension.ExtensionContext.Store;
-import org.junit.jupiter.api.extension.ParameterContext;
-import org.junit.jupiter.api.extension.ParameterResolver;
-import org.junit.platform.commons.support.ReflectionSupport;
-
-/**
- * {@code @CaptureSystemOutput} is a JUnit JUpiter extension for capturing
- * output to {@code System.out} and {@code System.err} with expectations
- * supported via Hamcrest matchers.
- *
- * <h4>Example Usage</h4>
- *
- * <pre style="code">
- * {@literal @}Test
- * {@literal @}CaptureSystemOutput
- * void systemOut(OutputCapture outputCapture) {
- *     outputCapture.expect(containsString("System.out!"));
- *
- *     System.out.println("Printed to System.out!");
- * }
- *
- * {@literal @}Test
- * {@literal @}CaptureSystemOutput
- * void systemErr(OutputCapture outputCapture) {
- *     outputCapture.expect(containsString("System.err!"));
- *
- *     System.err.println("Printed to System.err!");
- * }
- * </pre>
- *
- * <p>Based on code from Spring Boot's
- * <a href="https://github.com/spring-projects/spring-boot/blob/d3c34ee3d1bfd3db4a98678c524e145ef9bca51c/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/rule/OutputCapture.java">OutputCapture</a>
- * rule for JUnit 4 by Phillip Webb and Andy Wilkinson.
- *
- * @author Sam Brannen
- * @author Phillip Webb
- * @author Andy Wilkinson
- */
-@Target({ TYPE, METHOD })
-@Retention(RUNTIME)
-@ExtendWith(CaptureSystemOutput.Extension.class)
-public @interface CaptureSystemOutput {
-
-  class Extension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {
-
-    @Override
-    public void beforeEach(ExtensionContext context) throws Exception {
-      getOutputCapture(context).captureOutput();
-    }
-
-    @Override
-    public void afterEach(ExtensionContext context) throws Exception {
-      OutputCapture outputCapture = getOutputCapture(context);
-      try {
-        if (!outputCapture.matchers.isEmpty()) {
-          String output = outputCapture.toString();
-          assertThat(output, allOf(outputCapture.matchers));
-        }
-      }
-      finally {
-        outputCapture.releaseOutput();
-      }
-    }
-
-    @Override
-    public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
-      boolean isTestMethodLevel = extensionContext.getTestMethod().isPresent();
-      boolean isOutputCapture = parameterContext.getParameter().getType() == OutputCapture.class;
-      return isTestMethodLevel && isOutputCapture;
-    }
-
-    @Override
-    public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
-      return getOutputCapture(extensionContext);
-    }
-
-    private OutputCapture getOutputCapture(ExtensionContext context) {
-      return getOrComputeIfAbsent(getStore(context), OutputCapture.class);
-    }
-
-    private <V> V getOrComputeIfAbsent(Store store, Class<V> type) {
-      return store.getOrComputeIfAbsent(type, ReflectionSupport::newInstance, type);
-    }
-
-    private Store getStore(ExtensionContext context) {
-      return context.getStore(Namespace.create(getClass(), context.getRequiredTestMethod()));
-    }
-
-  }
-
-  /**
-   * {@code OutputCapture} captures output to {@code System.out} and {@code System.err}.
-   *
-   * <p>To obtain an instance of {@code OutputCapture}, declare a parameter of type
-   * {@code OutputCapture} in a JUnit Jupiter {@code @Test}, {@code @BeforeEach},
-   * or {@code @AfterEach} method.
-   *
-   * <p>{@linkplain #expect Expectations} are supported via Hamcrest matchers.
-   *
-   * <p>To obtain all output to {@code System.out} and {@code System.err}, simply
-   * invoke {@link #toString()}.
-   *
-   * @author Phillip Webb
-   * @author Andy Wilkinson
-   * @author Sam Brannen
-   */
-  static class OutputCapture {
-
-    private final List<Matcher<? super String>> matchers = new ArrayList<>();
-
-    private CaptureOutputStream captureOut;
-
-    private CaptureOutputStream captureErr;
-
-    private ByteArrayOutputStream copy;
-
-    void captureOutput() {
-      this.copy = new ByteArrayOutputStream();
-      this.captureOut = new CaptureOutputStream(System.out, this.copy);
-      this.captureErr = new CaptureOutputStream(System.err, this.copy);
-      System.setOut(new PrintStream(this.captureOut));
-      System.setErr(new PrintStream(this.captureErr));
-    }
-
-    void releaseOutput() {
-      System.setOut(this.captureOut.getOriginal());
-      System.setErr(this.captureErr.getOriginal());
-      this.copy = null;
-    }
-
-    private void flush() {
-      try {
-        this.captureOut.flush();
-        this.captureErr.flush();
-      }
-      catch (IOException ex) {
-        // ignore
-      }
-    }
-
-    /**
-     * Verify that the captured output is matched by the supplied {@code matcher}.
-     *
-     * <p>Verification is performed after the test method has executed.
-     *
-     * @param matcher the matcher
-     */
-    public void expect(Matcher<? super String> matcher) {
-      this.matchers.add(matcher);
-    }
-
-    /**
-     * Return all captured output to {@code System.out} and {@code System.err}
-     * as a single string.
-     */
-    @Override
-    public String toString() {
-      flush();
-      return this.copy.toString();
-    }
-
-    private static class CaptureOutputStream extends OutputStream {
-
-      private final PrintStream original;
-
-      private final OutputStream copy;
-
-      CaptureOutputStream(PrintStream original, OutputStream copy) {
-        this.original = original;
-        this.copy = copy;
-      }
-
-      PrintStream getOriginal() {
-        return this.original;
-      }
-
-      @Override
-      public void write(int b) throws IOException {
-        this.copy.write(b);
-        this.original.write(b);
-        this.original.flush();
-      }
-
-      @Override
-      public void write(byte[] b) throws IOException {
-        write(b, 0, b.length);
-      }
-
-      @Override
-      public void write(byte[] b, int off, int len) throws IOException {
-        this.copy.write(b, off, len);
-        this.original.write(b, off, len);
-      }
-
-      @Override
-      public void flush() throws IOException {
-        this.copy.flush();
-        this.original.flush();
-      }
-
-    }
-
-  }
-
-}
diff --git a/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java b/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java
deleted file mode 100644
index 0979fa8..0000000
--- a/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package daggerok.java7.predicate;
-
-import daggerok.extensions.CaptureSystemOutput;
-import lombok.extern.slf4j.Slf4j;
-import org.assertj.core.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-import static daggerok.java7.predicate.Java7Predicate.sideEffect;
-import static org.junit.jupiter.api.Assertions.*;
-
-//tag::content[]
-@Slf4j
-@CaptureSystemOutput
-@DisplayName("test predicate API: java 7")
-class Java7PredicateTest {
-
-    @Test
-    @DisplayName("test positive")
-    void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) {
-
-        assertAll(() -> {
-
-            sideEffect(new Java7Predicate.IsRed());
-            Assertions.assertThat(outputCapture.toString())
-                    .contains("i = red", "i = red devil");
-
-            sideEffect(new Java7Predicate.Is("green"));
-            Assertions.assertThat(outputCapture.toString().contains("t = green"));
-        });
-    }
-}
-//end::content[]