switched from manual parsing to Parse::RecDescent