Hi, thanks for being condescending! That was rude, but in fairness, so was your reply. I did do research, and while I saw the Add() function, and did in fact assume it was for adding code, only onHideUI has the type EventVoid. OnVesselChange has type <Vessel>, on both its Add() and its definition, yet this code: //inside another function GameEvents.onVesselChange.Add(HOOK_VesselChange); public static Vessel HOOK_VesselChange() { print("Vessel changed."); return FlightGlobals.ActiveVessel; } refuses to compile, with the error "The best overloaded match for 'EventData<Vessel>.Add(EventData<Vessel>.OnEvent)' has some invalid arguments" and as someone relatively new to passing functions as variables, that doesn't help at all. That's not even mentioning the more complex onCrewOnEva(), which has the type <GameEvents.FromToAction <Part, Part>> or the fact that I don't want most of the code I'll be calling on these events to have to return the expected type just to get it to work, which is what the documentation is implying I'd have to do (to me, at least). ... Of course, after a bit more fiddling around, I realize that the event is passing said types to the function, not expecting it of them; but still, while I'm glad for the help you could have done it in a kinder way. For anyone having the same problem I was having, and using the example above, this is what you'd do: //inside another function GameEvents.onVesselChange.Add(HOOK_VesselChange); public static void HOOK_VesselChange(Vessel v) { print("Vessel changed."); }