Changed source_classes to a class instance variable to help extensibility
Implemented queue-based concurrency model
Switched from puts to printf to improve output formatting from multiple concurrent threads