re-think parsing algos