refine parse logic