At its core, Biggy provides an in-memory, synchronized abstraction over various types of backing store. The current architecture is such that store implementations are represented by one or more interfaces and injected into the memory list as a constructor argument. Abstracting the backing store behind a set of interfaces isolates the in-memory list implementation from changes to the backing store, and also allows the list to call into the backing store without worrying about store implementation. It all works pretty darn well. However, I wonder if we might be approaching things from the wrong perspective in designing our interface structure.