restructuring parser for actual use