restructured parser