major refactor in driver/scanner - improved pointer handling, eliminated
redundant base classes, decoupled translation unit from scanner