implement PLParser