   $rootScope.$broadcast 'currentComponent', {page: 'groupPage', key: $routeParams.key}
 
   $scope.$on 'joinedGroup', => @handleWelcomeModal()
+
+  @launchers = []
+  @addLauncher = (action, condition = (-> true), opts = {}) =>
+    @launchers.push
+      priority:       opts.priority || 9999
+      action:         action
+      condition:      condition
+      allowContinue:  opts.allowContinue
+
+  @performLaunch = ->
+    @launchers.sort((a, b) -> a.priority - b.priority).map (launcher) =>
+      return if (typeof launcher.action != 'function') || @launched
+      if launcher.condition()
+        launcher.action()
+        @launched = true unless launcher.allowContinue
 
   # allow for chargify reference, which comes back #{groupKey}|#{timestamp}
   # we include the timestamp so chargify sees unique values

  @init = (group) =>
    @group = group

    if AbilityService.isLoggedIn()
      MessageChannelService.subscribeToGroup(@group)
      @handleWelcomeModal()

    Records.drafts.fetchFor(@group) if AbilityService.canCreateContentFor(@group)


  @openModal = (modal, resolve)->
    ModalService.open modal, resolve

  return
