mutable variables
extra optimization