Move to WeakRef to avoid data races