# So it'd look like```nim # type Communication = object # routes: Table[pointer, pointer] # channels: Table[pointer, pointer] # proc sendMessage[T](c: Communication, data: T) = # let # route = cast[proc(..., data: T)](c.routes[data.getTypeInfo)) # channel = cast[Channel[T]](c.channels[data.getTypeInfo)) # channel[].send(data) # c.route(data)