public GameStorageLogic() { Messages.AddOutgoingMessage("Game Storage", "Games", (p) => { var wrapper = (IEnumerable <GameWrapper>)p[0]; return(wrapper.Select(wr => Tuple.Create(wr.Id, wr.Factory.Name)).ToArray()); }, typeof(Tuple <int, string>[]), "Game Id", "Game Name"); Messages.AddOutgoingMessage("Game Storage", "New Game", (p) => { var wrapper = (GameWrapper)p[0]; return(Tuple.Create(wrapper.Id, wrapper.Factory.Name)); }, typeof(Tuple <int, string>), "Game Id", "Game Name"); Messages.AddIngoingMessage("Game Storage", "Games", typeof(int[]), "IDs of supported games"); Messages.AddIngoingMessage("Game Storage", "New Game", typeof(int), "ID of supported game"); }