refactored more classes and added java docs
made my code a bit nicer