I don't think the isPreload check helps too much here, because the put could come from somewhere completely different. So I think you should just allow topology to be null every time.