add ThreadLocalSingleton