Narrative controller and tests