Reformats the code with 2 spaces for indentation.
Updates README.md.
Cleans up and adds comments.
Renames classes to more precise names.