add async interface for runner