Pretty much. It’s over-engineering. Also make sure you take into account which elements that are returned are singletons.
GameState => it lives on the server, client’s don’t have one, you can return the server gameState only. At that point it’s a singleton so no need to grab it though a custom function, just use the “Get Game State” node.
And if you have to call a bp implantation function of you own gamestate bp version then add an interface to it and call the interface on the generic gamestate => it will work
No casting or extra logic needed.