diff --git a/src/unit/unit_draw.cpp b/src/unit/unit_draw.cpp
index 7592e97e6..a8875ad48 100644
--- a/src/unit/unit_draw.cpp
+++ b/src/unit/unit_draw.cpp
@@ -9,11 +9,10 @@
 //	   FreeCraft - A free fantasy real time strategy game engine
 //
 /**@name unit_draw.c	-	The draw routines for units. */
-/*
-**	(c) Copyright 1998-2000 by Lutz Sammer
-**
-**	$Id$
-*/
+//
+//	(c) Copyright 1998-2001 by Lutz Sammer
+//
+//	$Id$
 
 //@{
 
@@ -59,7 +58,7 @@ global int ShowHealthHorizontal=1;
     /// Flag: health horizontal instead of vertical
 global int ShowManaHorizontal=1;
     /// Flag: show bars and dot energy only for selected
-global int ShowEnergySelectedOnly; 
+global int ShowEnergySelectedOnly;
 
 // FIXME: not all variables of this file are here
 // FIXME: perhaps split this file into two?
@@ -74,7 +73,7 @@ local void DrawSelectionRectangleWithTrans(const Unit* unit,const UnitType* type
 	,int x,int y);
 
 /**
-**	Show that units are selection.
+**	Show that units are selected.
 **
 **	@param unit	Pointer to the unit.
 **	@param type	Type of the unit.
@@ -335,7 +334,8 @@ global void LoadDecorations(void)
 		,ManaSprite.Width,ManaSprite.Height);
     ShadowSprite.Sprite=LoadSprite(ShadowSprite.File
 		,ShadowSprite.Width,ShadowSprite.Height);
-    SpellSprites=LoadSprite("graphic/bloodlust,haste,slow,invis.,shield.png",16,16);		
+    // FIXME: make this configurable
+    SpellSprites=LoadSprite("graphic/bloodlust,haste,slow,invis.,shield.png",16,16);
 }
 
 /**
@@ -522,17 +522,22 @@ local void DrawDecoration(Unit* unit,const UnitType* type,int x,int y)
     //
     // Draw spells decoration
     //
-    if ( unit->Bloodlust > 0 )
-      VideoDrawClip( SpellSprites, 0, x, y );
-    if ( unit->Haste > 0 ) // same slot as slow
-      VideoDrawClip( SpellSprites, 1, x+16, y );
-    if ( unit->Slow > 0 ) // same slot as haste
-      VideoDrawClip( SpellSprites, 2, x+16, y );
-    if ( unit->Invisible > 0 )
-      VideoDrawClip( SpellSprites, 3, x+16+16, y );
-    if ( unit->UnholyArmor > 0 )
-      VideoDrawClip( SpellSprites, 4, x+16+16+16, y );
-    
+    if ( unit->Bloodlust > 0 ) {
+	VideoDrawClip( SpellSprites, 0, x, y );
+    }
+    if ( unit->Haste > 0 ) { // same slot as slow
+	VideoDrawClip( SpellSprites, 1, x+16, y );
+    }
+    if ( unit->Slow > 0 ) { // same slot as haste
+	VideoDrawClip( SpellSprites, 2, x+16, y );
+    }
+    if ( unit->Invisible > 0 ) {
+	VideoDrawClip( SpellSprites, 3, x+16+16, y );
+    }
+    if ( unit->UnholyArmor > 0 ) {
+	VideoDrawClip( SpellSprites, 4, x+16+16+16, y );
+    }
+
     // FIXME: group number could also be shown
 }
 
@@ -896,7 +901,11 @@ local void DrawBuilding(Unit* unit)
     //
     //	Buildings under construction/upgrade/ready.
     //
+#ifdef NEW_ORDERS
+    if( unit->Orders[0].Action==UnitActionBuilded ) {
+#else
     if( unit->Command.Action==UnitActionBuilded ) {
+#endif
 	if( unit->Constructed || VideoGraphicFrames(type->Sprite)<=1 ) {
 	    DrawConstruction(type->OverlapFrame
 		,frame&127
@@ -905,21 +914,31 @@ local void DrawBuilding(Unit* unit)
 	} else {
 	    DrawUnitType(type,frame,x,y);
 	}
+#ifdef NEW_ORDERS
+    // Draw the future unit type, if upgrading to it.
+    } else if( unit->Orders[0].Action==UnitActionUpgradeTo ) {
+	DrawUnitType(unit->Orders[0].Type,(frame&128)+1,x,y);
+#else
     } else if( unit->Command.Action==UnitActionUpgradeTo ) {
 	DrawUnitType(unit->Command.Data.UpgradeTo.What,(frame&128)+1,x,y);
+#endif
     } else {
 	DrawUnitType(type,frame,x,y);
     }
 
 #if 0
-    // FIXME: johns: ugly check here should be removed!
+    // FIXME: johns: ugly check here, should be removed!
     if( unit->Command.Action!=UnitActionDie ) {
 	DrawDecoration(unit,type,x,y);
 	DrawSelection(unit,type,x,y);
     }
 #else
-    // FIXME: johns: ugly check here should be removed!
+    // FIXME: johns: ugly check here, should be removed!
+#ifdef NEW_ORDERS
+    if( unit->Orders[0].Action!=UnitActionDie ) {
+#else
     if( unit->Command.Action!=UnitActionDie ) {
+#endif
 	DrawDecoration(unit,type,x,y);
     }
 #endif
@@ -997,8 +1016,12 @@ local void DrawUnit(Unit* unit)
 	ShowOrder(unit);
     }
 
-    // FIXME: johns: ugly check here should be removed!
+    // FIXME: johns: ugly check here, should be removed!
+#ifdef NEW_ORDERS
+    if( unit->Orders[0].Action!=UnitActionDie ) {
+#else
     if( unit->Command.Action!=UnitActionDie ) {
+#endif
 	DrawDecoration(unit,type,x,y);
     }
 }
@@ -1025,7 +1048,11 @@ global void DrawUnits(void)
     for( i=0; i<NumUnits; ++i ) {
 	unit=Units[i];
 	// FIXME: this tries to draw all corps, ohje
+#ifdef NEW_ORDERS
+	if( unit->Type->Vanishes || unit->Orders[0].Action==UnitActionDie ) {
+#else
 	if( unit->Type->Vanishes || unit->Command.Action==UnitActionDie ) {
+#endif
 	    DrawUnit(unit);
 	}
     }