     @page > 0
 
   hasNextPage: ->
-    (@page+1) * @numberOfUsersInX < @totalNumberOfItemsInX()
+    (@page+1) * @options.numberOfUsersInX < @totalNumberOfItemsInX()
 
   totalNumberOfItemsInX: ->
-    Math.ceil(@shuffledCollection.size() / @numberOfUsersInY)
+    Math.ceil(@shuffledCollection.size() / @options.numberOfUsersInY)
 
   userListItemWidth: ->
+    # Fixed width from options overrides calculation
+    return @options.userListItemWidth if @options.userListItemWidth?
+
     # Return some random number so on subsequent renders the
     # TourUserViews are not clipped
     return 500 if @shuffledCollection.isEmpty()


  showPage: (page) ->
    @page = page
    xOffset = @userListItemWidth() * @numberOfUsersInX * @page
    @ui.scrollingInner.css 'left', -xOffset
    @updateButtonStates()


    finish: '.js-finish'
    scrollingInner: '.js-scrolling-inner'

  templateHelpers: ->
    next_tourstep_path: window.next_tourstep_path

  initialize: ->
    @page = 0
    @shuffledCollection = new TourUsers

    @options.numberOfUsersInX ?= 4
    @options.numberOfUsersInY ?= 2

  onRender: ->
    @ui.finish.hide()
