slice not required, state is allowed to mutate