Added abstract scanner class