For me a getInstance method would not be part of the class itself but of the access class, that is basically registering with a first object of any kind whenever one is created and then returns either the registered object or if not yet creates a new one.
This method normally does not return the sources but effectivley the data and therefor can for reduce the amount of data to what is required.