add exceptions and refactor structure and add JavaDoc for the comments
in all classes
update JavaDocs