make callback async to be consistent