diff --git a/.travis.yml b/.travis.yml
index 07f63b3..2416226 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,8 +18,8 @@
 jdk:
   - openjdk11
 before_script:
-  - wget 'http://www.apache.org/dyn/closer.lua?action=download&filename=incubator/netbeans/incubating-netbeans/incubating-11.0/incubating-netbeans-11.0-bin.zip' -O /tmp/incubating-netbeans-10.0-bin.zip
-  - (cd $HOME; unzip /tmp/incubating-netbeans-10.0-bin.zip)
+  - wget 'http://www.apache.org/dyn/closer.lua?action=download&filename=incubator/netbeans/incubating-netbeans/incubating-11.0/incubating-netbeans-11.0-bin.zip' -O /tmp/incubating-netbeans-11.0-bin.zip
+  - (cd $HOME; unzip /tmp/incubating-netbeans-11.0-bin.zip)
   - unset _JAVA_OPTIONS
 script:
   - export JDK11=$JAVA_HOME
diff --git a/DISCLAIMER b/DISCLAIMER
deleted file mode 100644
index d6f7fea..0000000
--- a/DISCLAIMER
+++ /dev/null
@@ -1,8 +0,0 @@
-Apache NetBeans is an effort undergoing incubation at The Apache Software
-Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of
-all newly accepted projects until a further review indicates that the
-infrastructure, communications, and decision making process have stabilized in
-a manner consistent with other successful ASF projects. While incubation
-status is not necessarily a reflection of the completeness or stability of the
-code, it does indicate that the project has yet to be fully endorsed by the
-ASF.
diff --git a/cmdline/README.md b/cmdline/README.md
index cd1c43c..d774b8e 100644
--- a/cmdline/README.md
+++ b/cmdline/README.md
@@ -60,3 +60,48 @@
 ```
 $ jackpot --help
 ```
+
+### Example
+
+Consider this sample code:
+
+```
+package test;
+
+public class Test {
+    public void test(boolean b) {
+        int i = 0;
+        if (b)
+            System.err.println("was true");
+            assert (i = 1) == 1;
+    }
+}
+```
+
+It is possible to get a warning for the improper indentation like this:
+```
+$ jackpot --hint "Confusing indentation" <somedir>/src
+<somedir>/src/test/Test.java:9: warning: [Confusing_indentation] Confusing indentation
+            assert (i = 1) == 1;
+            ^
+```
+
+Or a warning for the side-effects inside the assert:
+```
+$ jackpot --hint "Assert with side effects" <somedir>/src
+<somedir>/src/test/Test.java:9: warning: [Assert_with_side_effects] Assert condition produces side effects
+            assert (i = 1) == 1;
+                    ^
+```
+
+All supported hints can be listed using:
+```
+$ jackpot --list
+```
+
+It is also possible to use a configuration file which enables multiple hints at once using:
+```
+$ jackpot --config-file <path-to-config-file> <path-to-sources-to-check>
+```
+
+The config file can be generated by the NetBeans IDE, using Project Properties/Hints, or similar ways.
diff --git a/cmdline/ant/build.xml b/cmdline/ant/build.xml
index 8835f54..ea5ecf9 100644
--- a/cmdline/ant/build.xml
+++ b/cmdline/ant/build.xml
@@ -91,6 +91,5 @@
         <mkdir dir="META-INF" />
         <copy file="${jackpot.root}/LICENSE" todir="${build.classes.dir}/META-INF" />
         <copy file="${jackpot.root}/NOTICE" todir="${build.classes.dir}/META-INF" />
-        <copy file="${jackpot.root}/DISCLAIMER" todir="${build.classes.dir}/META-INF" />
     </target>
 </project>
diff --git a/cmdline/build.xml b/cmdline/build.xml
index e27109b..a94bbf2 100644
--- a/cmdline/build.xml
+++ b/cmdline/build.xml
@@ -37,7 +37,6 @@
         <mkdir dir="build" />
         <zip file="build/incubating-apache-netbeans-jackpot-${version}.zip">
             <zipfileset dir="." excludes="**/build/" prefix="jackpot"/>
-            <zipfileset dir=".." includes="DISCLAIMER" fullpath="jackpot/DISCLAIMER"/>
             <zipfileset dir=".." includes="LICENSE" fullpath="jackpot/LICENSE"/>
             <zipfileset dir=".." includes="NOTICE" fullpath="jackpot/NOTICE"/>
         </zip>
@@ -98,7 +97,6 @@
             <zipfileset dir="${build.maven.repo}/" />
             <zipfileset dir="tool/scripts" includes="LICENSE-bin-tool.txt" fullpath="LICENSE" />
             <zipfileset dir="tool/scripts" includes="NOTICE-bin-tool.txt" fullpath="NOTICE" />
-            <zipfileset dir="${jackpot.root}" includes="DISCLAIMER" fullpath="DISCLAIMER" />
         </zip>
     </target>
 
diff --git a/cmdline/maven/pom.xml b/cmdline/maven/pom.xml
index 4628e30..82fd771 100644
--- a/cmdline/maven/pom.xml
+++ b/cmdline/maven/pom.xml
@@ -28,7 +28,7 @@
   <parent>
     <groupId>org.apache.netbeans</groupId>
     <artifactId>netbeans-parent</artifactId>
-    <version>1</version>
+    <version>2</version>
   </parent>
   <url>https://bitbucket.org/jlahoda/jackpot30/overview</url>
 
diff --git a/cmdline/tool/build.xml b/cmdline/tool/build.xml
index f85a9bb..495b225 100644
--- a/cmdline/tool/build.xml
+++ b/cmdline/tool/build.xml
@@ -53,7 +53,6 @@
         <copy file="../ant/dist/jackpot-ant.jar" todir="${build.classes.dir}/../jackpot"/>
         <copy file="scripts/LICENSE-bin-tool.txt" tofile="${build.classes.dir}/../jackpot/LICENSE" />
         <copy file="scripts/NOTICE-bin-tool.txt" tofile="${build.classes.dir}/../jackpot/NOTICE" />
-        <copy file="${jackpot.root}/DISCLAIMER" tofile="${build.classes.dir}/../jackpot/DISCLAIMER" />
         <copy file="../README.md" tofile="${build.classes.dir}/../jackpot/README.md" />
         <zip destfile="${build.classes.dir}/../jackpot.zip">
             <zipfileset file="${build.classes.dir}/../jackpot/jackpot" filemode="755" fullpath="jackpot/jackpot"/>
diff --git a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
index d154e78..bf64fd6 100644
--- a/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
+++ b/cmdline/tool/src/org/netbeans/modules/jackpot30/cmdline/Main.java
@@ -148,7 +148,7 @@
         parser.accepts("help", "prints this help");
         parser.accepts(OPTION_NO_APPLY, "do not apply changes - only print locations were the hint would be applied");
         parser.accepts(OPTION_APPLY, "apply changes");
-        parser.accepts("show-gui", "show configuration dialog");
+//        parser.accepts("show-gui", "show configuration dialog");
         parser.accepts(OPTION_FAIL_ON_WARNINGS, "fail when warnings are detected");
         parser.accepts(RUN_TESTS, "run tests for declarative rules that were used");
 
