it has to go after the refresh since we're doing (usually service) completions.

i could pull the conditional do_refresh() into commit() and make commit return true/false to bail out.. that would collapse the two instances of commit(), if (refresh()) { commit_proposal() ...  down a bit...