incremental refactor towards content service: basics in place; still needs cache management