clearer semantics for impure side-effects