you should notify observers without holding a lock here