Not totally happy about the responsibilites here, but all of these do depend on what comes out of the content api