add some javadoc;
rename condition main method;
add base builder interface.
add javadoc
clean code: refactor, javadoc, code stability, tests