self.player initialized to None to avoid AttributeErrors for if checks