SPEF: use Visitor pattern to separate data storage/usage from parser itself