Great article, it has been extremely helpful for my own code base. I do have a question regarding your UseCase class. The way you have it set up, every UseCase will always return an observable. Would it make sense, to have additional Base UseCase classes that return other RXJava items, such as Single or Flowable? And each UseCase would just extend whichever type made the most sense for that use case? Or is the intention to always force an observable?