reduce mutable state