refactoring, async scanner