add another necessary libraries
implement scan
remove IScanner