 		@sm.getNextState() != null
 		
 	isBusy: ->
-		return true if @isTransitioning() or @onActivatedAction or @onDeactivatedAction
-		
-		for child in @children
-			return true if child.isBusy()
+		return true if @isTransitioning()
+		
+		if @mode == 'exclusive'
+			return true if @onActivatedAction or @onDeactivatedAction
+
+			for child in @children
+				return true if child.isBusy()
 		
 		return false
 	

	@STATE_ACTIVATED = "activated"
	@STATE_DEACTIVATED = "deactivated"

	#
	# Options:
	# defaultChild		Controller
	#
	
	constructor: (options={}) ->
		@sm = new StateMachine
		
		defaultState = options.defaultState
		
		@sm.addState Controller.STATE_DEACTIVATED, defaultState == Controller.STATE_ACTIVATED ? false : true
		@sm.addState Controller.STATE_ACTIVATED, defaultState == Controller.STATE_ACTIVATED ? true : false
		

		unless @lineageIsBusy(c)
			if !c.isActive()
				return ControllerHelper.activateController(c)
		false
	
	@deactivate: (c) ->
		unless @lineageIsBusy(c)
			if c.isActive()
				return ControllerHelper.deactivateController(c)
		false

	@toggle: (c) ->
		if c.isActive()
			return @deactivate c
