made run take &mut self