Refactor NoOp functionality and allow arbitrary scope changes