def __init__(self, sources): Observable.from_(sources) \ .merge_all() \ .filter(lambda s: s[0] == "tracking/status" ) \ .subscribe(self._on_tracking) object_source = Observable.from_(sources) \ .merge_all() \ .filter(lambda s: s[0] == "data/object") \ .map(lambda s: s[1]) position_source = Observable.from_(sources) \ .merge_all() \ .filter(lambda s: s[0] == "data/position") \ .map(lambda s: s[1]) Observable.zip_array(object_source, position_source) \ .subscribe(self._on_position)