BEWARE - DO NOT MERGE YET, compatible only with core async branch