Rework for global singleton