Our next topic is about presenting multiple backends using a unified interface.
The general strategy for doing this is using separate subclasses for each backend, and having a method in the parent class return an instance of the appropriate subclass.