Some random notes on this stuff... I've been studiously following PoeAA in some work I've been doing on the RubyTapas site, and it has had a wonderfully salutary effect on the simplicity of the code. I heartily recommend the approach.

I want to emphasize that each piece of the PoEAA puzzle has major payoffs. For instance, in my work, simply applying Gateway was a major win. Then I layered Mapper on top (e.g. `EpisodeMapper`, `VideoMapper`...), and that too was a big win. Then I added a caching layer in between the two, which turned out to be dead simple because of the separation between gateways and mappers. Then I added an Identity Map. And so on.

I haven't even reached the need for Repository and Query yet, and I've already experienced major design epiphanies. If there's a point to all this, it's this: consider not glossing over the building blocks that go underneath Repository. Not every app needs a repository (some don't even need Mapper). And every single layer of the cake, if approached mindfully and intentionally, can bring serious benefits.