The great refactoring
Added javadocs
Update README