I think we should work on this before we commit this change. The mutable fashion of this is to dangerous to miss something. I think this should be a single function that requires you to specify all the different parameters such that we don't have a chance to miss it. This is too risky for my taste here.