added Builder and SingletonEnum