factor visitor and pp'ter out of ast header.