Fixed it by overriding the methods such as OnKeyDown, pulling the input through a single method where keys are compared to input actions, and the name of input actions are matched with function pointers. Still smells, but that’s just part of the engine.