 		}
 		
 		private function canUndo():Boolean {
-			return actionStack.length > 0 && !currentWire && !currentBloc;
+			return actionStack.length > 0 && !currentWire && (!currentBloc || currentBloc.rooted);
 		}
 		
 		private function canRedo():Boolean {
-			return reactionStack.length > 0 && !currentWire && !currentBloc;
+			return reactionStack.length > 0 && !currentWire && (!currentBloc || currentBloc.rooted);
 		}
 		
 		

			midLayer.add(displayModule);
			displayModules.push(displayModule);
			
			addBlocFromModule(displayModule);
			
		}
		
		private function pickUpModule():void {
			var mousedModule:Module = findMousedModule();
			if (mousedModule && !mousedModule.FIXED) {
				new CustomAction(Module.remove, Module.place, mousedModule, new Point(mousedModule.x, mousedModule.y)).execute();
				mousedModule.exists = true;
				addBlocFromModule(associatedDisplayModule(mousedModule));
			}
		}
		

			undoButton.active = canUndo(); 
			redoButton.exists = reactionStack.length > 0;
			redoButton.active = canRedo();
			var undoAlpha:Number = currentWire || (currentBloc && !currentBloc.rooted) ? 0.3 : 1;
			undoButton.setAlpha(undoAlpha);
			redoButton.setAlpha(undoAlpha);
			
