 So, next up in the structural patterns is the so-called façade patterns and as you know from the word façade, from a building façade, the idea is that it's some kind of pretty thing on the outside that hides whatever mess is behind there and that's really the idea that down here you have some kind of subsystem or system that has very complicated interactions. So, for example you have a number of classes A, B, C, D and in order to achieve some kind of functionality we could again take our routing example from earlier. You for example need to create an instance of A first, then you need to create an instance of B and provide A and this continues and then you need to call them in a very specific order to get the functionality you would like to. And this can of course be difficult to use so to simplify this the idea is that you provide a single instance of single façade that offers a very specialized operation. So this operation, inside this operation is all the complicated workflow of using this subsystem but it's hidden away and you just see this one pretty easy method that does everything for you. So basically you hide the complexity, you hide the mess behind a single operation. And the advantage is of course that it's much, much simpler to use, you just call this method and that one does everything for you, you don't need to know all the details. The disadvantage is that it's quite limited because you can really only do this thing and most likely the subsystem here allows much more different things that you could do but that's also hidden away. So that's of course the disadvantage, you can only use exactly what you have implemented in the façade and you might not even have access to the things behind. What's the idea here in terms of SOLID? It's interface segregation, so you are offering just one specific interface for a specific use case, for example one specific routing algorithm. If you would have more use cases you might have more façades, so that's the idea here. And it's of course again the single responsibility here, that the façade actually only does one thing, it provides this option, it does nothing else. So that's the façade pattern. You might wonder what's really the difference here to the adapter pattern because here we also somehow providing a different method than before. The adapter pattern really is just some kind of conversion. You convert the method name, you convert the data, it's just really plug and play versus the façade that hides a rather complicated workflow. So the idea is in a way the same. You provide some specific interface of the much more complicated rest but the façade has all of this complicated workflow going on. So it hides away that whereas the adapter really just changes the method and the method signature. So that's the difference between adapter and façade but they're definitely related.