Declarative functionality

I'm merely transplanting existing functionality here. Although I think those two are quite different data types.