Refactored classes and added custom exceptions