still not so much confident with this kind of singletons