The pasta theory of design:
* Spaghetti: each piece of code interacts with every other piece of code [can be implemented with GOTO, functions, objects] * Lasagna: code has carefully designed layers. Each layer is, in theory independent. However low-level layers usually cannot be used easily, and high-level layers depend on low-level layers. * Ravioli: each part of the code is useful by itself. There is a thin layer of interfaces between various parts [the sauce]. Each part can be usefully be used elsewhere. * ...but sometimes, the user just wants to order "Ravioli", so one coarse-grain easily definable layer of abstraction on top of it all can be useful.
An application design using Twisted's Aspect Oriented Programming Design is that special Ravioli.