Use public api when adding legacy options
remove mutation, we need to externalize this state
remove args writer
deep copy is no longer needed