I don't want to make that overly rigid or prescriptive, but it's helpful to think of it as a layered architecture, and what happens is that, as you work your way up in the layers, you abstract from the behavior of the lower 