new logic for immutable scope