This should allow us to create a basic interface that all adapters must follow.
This adds decorator support in a very basic way, but enough that it doesn't take a lot of effort to get it implemented. This also starts work on splitting things out for theming.