 			@initializeGrid()
 
 	destroy: =>
-		@removeWatcherListeners()
+		@destroyShowWatcher()
+		@destroyLoadWatcher()
 		@removeEventListeners()
 		@resetDOMModel()
+		@spinner.hide()
 		hasBeenShown = false
 		if spinnerTimerId isnt null then clearTimeout spinnerTimerId
 

			navigator.msMaxTouchPoints or
			typeof scrollMonitor isnt 'object'
				# Except for mobile...
				@onEnterViewport()
		else
			watcher = scrollMonitor.create( @$context, 500 )
			watcher.recalculateLocation()
			@addWatcherListeners()

	###
		Add watcher event callbacks
	###
	addWatcherListeners: =>
		if watcher isnt null
			watcher.enterViewport @onEnterViewport
			watcher.exitViewport @onExitViewport


	###
		Add event callbacks
	###
	addEventListeners: =>
		# Check if we're not coming back here again

				@


	###

		Callbacks

	####
	onLoadEnterViewport: () =>
		@destroyLoadWatcher()
		if currentBreakpointKey isnt null
			@createGrid()

	###
		Callback for when it's visible on the page view
	###
	onShowEnterViewport: () =>
		return if hasBeenShown
		@showGrid()
		hasBeenShown = true


	###
		Shows all items when the images have been loaded.
