Okay, so it is a PyTorch internal thing?

Forget about it. I thought it matters that i pass the parameters as self.model.parameters() but they create a new name for it within the optimizer __init__ and when i change self.model with the new_model() method the optimizer object does not notice this change.