changing to async interface