RxJava - Combinando várias / diferentes chamadas de serviço da web

Estou trabalhando com a API do Basecamp para retornar e exibir as listas de tarefas. Aqui está uma amostra do que estou fazendo no momento:

bcxClient
  .fetchToDoLists()
  .subscribeOn(Schedulers.io())
  .observeOn(AndroidSchedulers.mainThread())
  .subscribe(new Action1<List<BcxToDoList>>() {
    @Override
    public void call(List<BcxToDoList> bcxToDoLists) {

      for( final BcxToDoList toDoList : bcxToDoLists ) {
        bcxClient
          .fetchToDos( toDoList.bucket.id )
          .subscribeOn( Schedulers.io() )
          .observeOn( AndroidSchedulers.mainThread() )
          .subscribe( new Action1<List<BcxToDo>>() {
            @Override
            public void call(List<BcxToDo> bcxToDos) {
              for( BcxToDo toDo : bcxToDos ) {
                toDoList.toDos.add( toDo );
              }
            }
          }, new Action1<Throwable>() {
            @Override
            public void call(Throwable throwable) {
              throwable.printStackTrace();
            }
          });
      }

      mLoremTextView.setText(bcxToDoLists.get(0).name);
    }

  }, new Action1<Throwable>() {
    @Override
    public void call(Throwable throwable) {
      throwable.printStackTrace();
    }
  });

fetchToDoLists efetchToDos são chamadas de serviço da Web Retrofit que retornamBcxToDoList eBcxToDos Observáveis.

Na assinatura defetchToDoLists Eu percorro cada BcxToDoList, chamofetchToDos e anexe meus objetos BcxToDo à lista original.

Como você pode ver, é um pouco detalhado. Eu poderia apenas separar isso em duas declarações para torná-lo um pouco mais legível. Mas, isso não é muito Rx. Existe uma maneira diferente de fazer isso no RxJava e melhorar sua legibilidade?

Eu poderia usar lambdas para compactar isso, mas, neste estágio, estou mais interessado em quais recursos do RxJava eu poderia aproveitar.

questionAnswers(1)

yourAnswerToTheQuestion