I think this should take `&mut self`