refactored all modules and added exceptions
added exceptions and updated .gitignore