Add Storage.Entry and Entry.Datum structures, and use them in the code
Replace NPEs with IllegalArgumentExceptions
Add javadoc comments for Type members