Added more documentation
Formatted everything with JIndent