forked from: Singleton

