extract inner options before delegating to the helper

If we extract the options from the user facing method call ASAP, then we
can simplify internal logic.