You would use possess(mypawn) in the PlayerController’s class as the second method you mentioned would be creating a new PlayerController instance which wouldn’t have any of the values that you had set up to that point, which could cause some odd behavior and loss of data. A PlayerController is automatically created for you as the start of play if you set your Default PlayerController Class to match your custom class.