ExperienceController now uses shared_ptr