second, improved version of Observer Pattern. In this version PosixClient stores containers of type std::map<int,boost::shared_ptr<MarketData> > to map MarketData requests to tickerId. These containers stores MarketData objects processing one IB::Event, TickSize, TickPrice or TickString. An observer subscribes to observe updates for this MarketData, so it defines therefore tickerId and IB::Event in which it is interested. In tickSize(), tickPrice(), tickString() methods of PosixClient updates are send via notifyObservers() method of MarketData object to all subscribers if MarketData object is found for a given tickerId. In tickPrice() we only search in tickPriceMarketDataFeed map for an corresponding MarketData object, in tickSize() we search in tickSizeMarketDataFeed. So to observe i.e. tickString() events you need to create MarketData with IB::TickString event as processedEvent, put it into tickStringMarketDataFeed and create observer of this data stream.