separate file transfer updates from callbacks