     dirForGroup: (outcomeGroup) ->
       _.find(@directories, (d) -> d.outcomeGroup is outcomeGroup) || @addDirFor(outcomeGroup)
 
-    _scrollToDir: (dirIndex, model, complete) ->
+    _scrollToDir: (dirIndex, model) ->
       scrollLeft = (@directoryWidth + 1) * (if model instanceof Outcome then dirIndex - 1 else dirIndex)
-      @$sidebar.animate {scrollLeft: scrollLeft}, duration: @directoryWidth, complete: complete
+      @$sidebar.animate {scrollLeft: scrollLeft}, duration: 200
       scrollTop = (@entryHeight + 1) * _.indexOf(@directories[dirIndex].views(), _.find(@directories[dirIndex].views(), (v) -> v.model is model))
-      @directories[dirIndex].$el.animate {scrollTop: scrollTop}, duration: @directoryWidth
+      @directories[dirIndex].$el.animate {scrollTop: scrollTop}, duration: 200
 
     _findLastDir: (f) ->
       _.find(_.clone(@directories).reverse(), f) || _.last @directories


    # Select the directory view and optionally select an Outcome or Group.
    selectDir: (dir, selectedModel) =>
      dfd = $.Deferred()
      # don't re-select the same model
      if selectedModel and dir is @selectedDir() and selectedModel is @selectedDir()?.prevSelectedModel
        dfd.resolve()
        return dfd.promise()

      complete = =>
        # remove all directories after the selected dir
        _.each @directories.splice(i + 1), (d) -> d.remove()
        @addDirFor selectedModel if selectedModel instanceof OutcomeGroup and !selectedModel.isNew()
        @updateSidebarWidth()
        @trigger 'select', selectedModel, @directories
        dfd.resolve()

      dir.clearSelection() unless selectedModel
      i = _.indexOf @directories, dir
      # only scroll to dir if the selection is not the last dir
      if @directories.length is i + 1
        complete()
      else
        @_scrollToDir i, selectedModel, complete

      dfd.promise()

    refreshSelection: (model) =>
      dir = @selectedDir()


    renderDir: (dir) =>
      @$el.append dir.render().el

    render: ->
      @$el.empty()
