Parser rewrite from Dan Yang