 			# if something is explicitly listening to the load event
 
 			if @listeners(Events.ImageLoaded, true) or @listeners(Events.ImageLoadError, true) or @listeners(Events.ImageLoadCancelled, true)
-				@imageLoader = new Image()
-				@imageLoader.name = imageUrl
-				@imageLoader.src = imageUrl
-				@imageEventManager = @_context.domEventManager.wrap(@imageLoader)
-				@imageEventManager.addEventListener "load", =>
+				@_imageLoader = new Image()
+				@_imageLoader.name = imageUrl
+				@_imageLoader.src = imageUrl
+				@_imageEventManager = @_context.domEventManager.wrap(@_imageLoader)
+				@_imageEventManager.addEventListener "load", =>
 					@style["background-image"] = "url('#{imageUrl}')"
-					@emit Events.ImageLoaded, @imageLoader
-					@cleanupImageLoader()
-
-				@imageEventManager.addEventListener "error", =>
-					@emit Events.ImageLoadError, @imageLoader
-					@cleanupImageLoader()
+					@emit Events.ImageLoaded, @_imageLoader
+					@_cleanupImageLoader()
+
+				@_imageEventManager.addEventListener "error", =>
+					@emit Events.ImageLoadError, @_imageLoader
+					@_cleanupImageLoader()
 
 			else
 				@style["background-image"] = "url('#{imageUrl}')"

	##############################################################
	## IMAGE

	cleanupImageLoader: ->
		@imageEventManager?.removeAllListeners()
		@imageEventManager = null
		@imageLoader = null


	@define "image",

			# Set the property value
			@_setPropertyValue("image", value)
			if value in [null, ""]
				if @_imageLoader?
					@_imageEventManager.removeAllListeners()
					@_imageLoader.src = null

				@style["background-image"] = null

				if @_imageLoader?
					@emit Events.ImageLoadCancelled, @_imageLoader
					@_cleanupImageLoader()

				return

