fixed up scanner and async interface