The Singleton implementation is bit flawed as it allows any number of instances to be created. I have modified it a to have one single instance.
If you need to refer different implementations at different times in your logic, then
you should probably use a factory method to create instances based on user input and not Singleton.