Some assumptions that were made about this project:
- No UI requirement, means that no GUI or CLI was required and that the unit tests and Demo class provided are enough to demonstrate the application works
- The application is supposed to exit after processing 50 messages
- This means that all sales can be held in memory, and recalculated for each report