refining argument parer
lots of work