Factored out Entity/EntityRoot classes to isolate storage access; Site needs more work