[#160] Add javadocs
[#160] Rename interface and base class with better names
[#160] Rename factory to a better name
[#160] rename BuildFlow to a better name