 			midLayer.add(displayModule);
 			displayModules.push(displayModule);
 			
-			addBlocFromModule(displayModule);
-			
+			currentBloc = 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));
+				currentBloc = addBlocFromModule(associatedDisplayModule(mousedModule), true);
+				new BlocLiftAction(currentBloc, U.pointToGrid(U.mouseLoc)).execute();
+				currentBloc.mobilize();
+				currentBloc.exists = true;
 			}
 		}
 		

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

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