better attribute parse