     User.ensureStatusLoaded()
 
   componentDidMount: ->
-    mountData = coach: {el: @getDOMNode(), action: 'mount'}
+    mountData = @getMountData('mount')
     channel.emit('coach.mount.success', mountData)
+
     User.channel.on('change', @updateUser)
-    channel.on('show.*', @updateView)
+    navigation.channel.on('show.*', @updateView)
 
   componentWillUnmount: ->
-    mountData = coach: {el: @getDOMNode(), action: 'unmount'}
+    mountData = @getMountData('ummount')
     channel.emit('coach.unmount.success', mountData)
+
     User.channel.off('change', @updateUser)
-    channel.off('show.*', @updateView)
+    navigation.channel.off('show.*', @updateView)
+
+  getMountData: (action) ->
+    {moduleUUID, collectionUUID} = @props
+    {view} = @state
+    el = @getDOMNode()
+
+    coach: {el, action, view, moduleUUID, collectionUUID}
 
   updateView: (eventData) ->
     {view} = eventData


      if view is 'task'
        <Task {...@props} key='task'/>
      else if view is 'dashboard'
        <Dashboard id={course.id}/>
      else if view is 'profile'
        <UserProfile onComplete={@showTasks} />
      else

    moduleUUID:     React.PropTypes.string.isRequired
    collectionUUID: React.PropTypes.string.isRequired

  getDefaultProps: ->
    defaultView: 'task'

  getInitialState: ->
    {defaultView} = @props

    userState = @getUserState()
    userState.view = defaultView

    userState

