That doesn't help if I want to support both kinds of installs using the same codebase. I'm pretty confident with this set of abstractions at this point - I've implemented maybe 15 different storage backends or storage wrappers, most of which were super easy, and I've never changed app code based on storage changing out from underneath it.