             activityFactory: activityFactory
         )
         
-        let eventDetailViewModelFactory = DefaultEventDetailViewModelFactory(dateRangeFormatter: FoundationDateRangeFormatter.shared,
-                                                                 eventsService: services.events,
-                                                                 markdownRenderer: DefaultDownMarkdownRenderer(),
-                                                                 shareService: shareService)
-        eventDetailComponentFactory = EventDetailComponentBuilder(interactor: eventDetailViewModelFactory, interactionRecorder: eventInteractionRecorder).build()
-        
-        let eventFeedbackPresenterFactory = EventFeedbackPresenterFactoryImpl(eventService: services.events,
-                                                                              dayOfWeekFormatter: FoundationDayOfWeekFormatter.shared,
-                                                                              startTimeFormatter: FoundationHoursDateFormatter.shared,
-                                                                              endTimeFormatter: FoundationHoursDateFormatter.shared,
-                                                                              successHaptic: CocoaTouchSuccessHaptic(),
-                                                                              failureHaptic: CocoaTouchFailureHaptic(),
-                                                                              successWaitingRule: ShortDelayEventFeedbackSuccessWaitingRule())
+        let eventDetailViewModelFactory = DefaultEventDetailViewModelFactory(
+            dateRangeFormatter: FoundationDateRangeFormatter.shared,
+            eventsService: services.events,
+            markdownRenderer: DefaultDownMarkdownRenderer(),
+            shareService: shareService
+        )
+        
+        eventDetailComponentFactory = EventDetailComponentBuilder(
+            interactor: eventDetailViewModelFactory,
+            interactionRecorder: eventInteractionRecorder
+        ).build()
+        
+        let eventFeedbackPresenterFactory = EventFeedbackPresenterFactoryImpl(
+            eventService: services.events,
+            dayOfWeekFormatter: FoundationDayOfWeekFormatter.shared,
+            startTimeFormatter: FoundationHoursDateFormatter.shared,
+            endTimeFormatter: FoundationHoursDateFormatter.shared,
+            successHaptic: CocoaTouchSuccessHaptic(),
+            failureHaptic: CocoaTouchFailureHaptic(),
+            successWaitingRule: ShortDelayEventFeedbackSuccessWaitingRule()
+        )
+        
         let eventFeedbackSceneFactory = StoryboardEventFeedbackSceneFactory()
-        eventFeedbackComponentFactory = EventFeedbackComponentFactoryImpl(presenterFactory: eventFeedbackPresenterFactory, sceneFactory: eventFeedbackSceneFactory)
+        eventFeedbackComponentFactory = EventFeedbackComponentFactoryImpl(
+            presenterFactory: eventFeedbackPresenterFactory,
+            sceneFactory: eventFeedbackSceneFactory
+        )
         
         webComponentFactory = SafariWebComponentFactory()
         
-        additionalServicesComponentFactory = AdditionalServicesComponentBuilder(repository: repositories.additionalServices).build()
+        additionalServicesComponentFactory = AdditionalServicesComponentBuilder(
+            repository: repositories.additionalServices
+        ).build()
     }
     
 }

            alertRouter: alertRouter
        ).build()
        
        let newsInteractor = DefaultNewsViewModelProducer(announcementsService: services.announcements,
                                                   authenticationService: services.authentication,
                                                   privateMessagesService: services.privateMessages,
                                                   daysUntilConventionService: services.conventionCountdown,
                                                   eventsService: services.events,
                                                   relativeTimeIntervalCountdownFormatter: FoundationRelativeTimeIntervalCountdownFormatter.shared,
                                                   hoursDateFormatter: FoundationHoursDateFormatter.shared,
                                                   clock: SystemClock.shared,
                                                   refreshService: services.refresh,
                                                   announcementsDateFormatter: FoundationAnnouncementDateFormatter.shared,
                                                   announcementsMarkdownRenderer: subtleMarkdownRenderer)
        newsComponentFactory = NewsComponentBuilder(newsInteractor: newsInteractor).build()
        
        let scheduleViewModelFactory = DefaultScheduleViewModelFactory(eventsService: services.events,
                                                           hoursDateFormatter: FoundationHoursDateFormatter.shared,
                                                           shortFormDateFormatter: FoundationShortFormDateFormatter.shared,
                                                           shortFormDayAndTimeFormatter: FoundationShortFormDayAndTimeFormatter.shared,
                                                           refreshService: services.refresh)
        scheduleComponentFactory = ScheduleModuleBuilder(interactor: scheduleViewModelFactory).build()
        
        let defaultDealerIcon = #imageLiteral(resourceName: "defaultAvatar")
        guard let defaultDealerIconData = defaultDealerIcon.pngData() else { fatalError("Default dealer icon is not a PNG") }
        let dealersInteractor = DefaultDealersViewModelFactory(dealersService: services.dealers, defaultIconData: defaultDealerIconData, refreshService: services.refresh)
        dealersComponentFactory = DealersComponentBuilder(interactor: dealersInteractor).build()
        
        let dealerIntentDonor = ConcreteViewDealerIntentDonor()
        let dealerInteractionRecorder = DonateIntentDealerInteractionRecorder(
            viewDealerIntentDonor: dealerIntentDonor,
            dealersService: services.dealers,
            activityFactory: activityFactory
        )
        
        let dealerDetailInteractor = DefaultDealerDetailViewModelFactory(dealersService: services.dealers, shareService: shareService)
        dealerDetailModuleProviding = DealerDetailComponentBuilder(dealerDetailInteractor: dealerDetailInteractor, dealerInteractionRecorder: dealerInteractionRecorder).build()
        
        collectThemAllComponentFactory = CollectThemAllComponentBuilder(service: services.collectThemAll).build()
        messagesComponentFactory = MessagesComponentBuilder(authenticationService: services.authentication, privateMessagesService: services.privateMessages).build()
        
        loginComponentFactory = LoginComponentBuilder(
            authenticationService: services.authentication,
            alertRouter: alertRouter
        ).build()
        
        messageDetailComponentFactory = MessageDetailComponentBuilder(messagesService: services.privateMessages).build()
        
        let knowledgeListInteractor = DefaultKnowledgeGroupsViewModelFactory(service: services.knowledge)
        knowledgeListModuleProviding = KnowledgeGroupsComponentBuilder(knowledgeListInteractor: knowledgeListInteractor).build()
        
        let knowledgeGroupEntriesInteractor = DefaultKnowledgeGroupViewModelFactory(service: services.knowledge)
        knowledgeGroupEntriesModule = KnowledgeGroupEntriesComponentBuilder(interactor: knowledgeGroupEntriesInteractor).build()
        
        let knowledgeDetailViewModelFactory = DefaultKnowledgeDetailViewModelFactory(
            knowledgeService: services.knowledge,

        let mapDetailViewModelFactory = DefaultMapDetailViewModelFactory(mapsService: services.maps)
        mapDetailModuleProviding = MapDetailComponentBuilder(interactor: mapDetailViewModelFactory).build()
        
        let announcementsViewModelFactory = DefaultAnnouncementsViewModelFactory(
            announcementsService: services.announcements,
            announcementDateFormatter: FoundationAnnouncementDateFormatter.shared,
            markdownRenderer: subtleMarkdownRenderer
        )
        
        announcementsModuleFactory = AnnouncementsComponentBuilder(
            announcementsViewModelFactory: announcementsViewModelFactory
        ).build()
        
        let announcementDetailViewModelFactory = DefaultAnnouncementDetailViewModelFactory(
            announcementsService: services.announcements,
