add `@ThreadSafe`