# I wanna be able to do: proc createListenerEvent[T: WidgetState](data: ServerData[ServerMessage, ClientMessage]): ApplicationEvent = result = proc(state: WidgetState) = let state = T(state) addServerListener(state, data)