graft: split the argument processing from the grafting...
graft: split the argument processing from the grafting
This starts splitting the two logic more cleanly and avoid one spilling in the
other. This will be useful to introduce more way to do the grafting, e.g. "in
memory".
For now, there is still a lot spilling from one to another, but this will get
cleaned over time.