improve expression parsing