improved async updating