more concrete pure monad for pass0
better error messages and summaries
simplify ABC code in summary