Rename 'body' to 'contents'.
Require initialisation, allow options to be overriden externally.
Add pre-caching methods.