better pp and fix expression parsing