refactored a few things
- Made a few classes Singleton - It would be better to use a DI framework, but I didn't want to have so many dependencies.
- Renamed a few classes for better understanding
- Removed machine manager derived classes, they were unnecessary and made things more complicated