All this is gonna change because I need to not only pass the version, lifespan, idletime... separately, but the entire metadata object, so I would not focus too much on it cos it's gonna change we add the rest of compatibility endpoints. In fact, versioned replace is just temporary, I probably end up with a single replace command that takes a metadata object.