I know object drilling can be reduced further, will do so later.
It handles functionalities like subscription of a user for an activity if their balance finds fit (for non-premium users)
A premium user can subscribe for any activity without having a check on their budget
Constraints on number of passengers is put by both Travel agency capacity as well as activity capacity
A passenger can subscribe only once for an activity but they can subscribe for other activities on the same destination
* Java -- Programming language
* Maven -- Build tool
* Junit -- Unit testing framework