Rather than having MatrixInMemoryStore do it all, we make the right object do the right thing, and keep the store for storing said objects.