switch to non-async