This extract/update logic is very confusing to me. Seems like a lot of unnecessary code due to a parameter that happens to already be named Options.