shouldn't you get the write lock here? Otherwise concurrent reads might fail