diff --git a/src/action/actions.cpp b/src/action/actions.cpp
index 7910a888c..32058d038 100644
--- a/src/action/actions.cpp
+++ b/src/action/actions.cpp
@@ -9,11 +9,10 @@
 //	   FreeCraft - A free fantasy real time strategy game engine
 //
 /**@name actions.c	-	The actions. */
-/*
-**	(c) Copyright 1998,2000 by Lutz Sammer
-**
-**	$Id$
-*/
+//
+//	(c) Copyright 1998,2000 by Lutz Sammer
+//
+//	$Id$
 
 //@{
 
@@ -26,13 +25,17 @@
 
 #include "freecraft.h"
 #include "video.h"
-#include "sound_id.h"
 #include "unitsound.h"
 #include "unittype.h"
 #include "player.h"
 #include "unit.h"
 #include "actions.h"
 #include "interface.h"
+#include "map.h"
+
+/*----------------------------------------------------------------------------
+--	Functions
+----------------------------------------------------------------------------*/
 
 /*----------------------------------------------------------------------------
 --	Animation
@@ -52,7 +55,7 @@ global int UnitShowAnimation(Unit* unit,const Animation* animation)
 	UnitUpdateHeading(unit);		// FIXME: remove this!!
     }
 
-    DebugLevel3(__FUNCTION__": State %2d ",state);
+    DebugLevel3Fn("State %2d ",state);
     DebugLevel3("Flags %2d Pixel %2d Frame %2d Wait %3d "
 	    ,animation[state].Flags,animation[state].Pixel
 	    ,animation[state].Frame,animation[state].Sleep);
@@ -83,7 +86,7 @@ global int UnitShowAnimation(Unit* unit,const Animation* animation)
 }
 
 /*----------------------------------------------------------------------------
---	Globals
+--	Actions
 ----------------------------------------------------------------------------*/
 
 /**
@@ -137,7 +140,7 @@ local void HandleUnitAction(Unit* unit)
     //
     switch( unit->Command.Action ) {
 	case UnitActionNone:
-	    DebugLevel1("FIXME: Should not happen!\n");
+	    DebugLevel1Fn("FIXME: Should not happen!\n");
 	    break;
 
 	case UnitActionStill:
@@ -222,8 +225,7 @@ local void HandleUnitAction(Unit* unit)
 	    break;
 
 	default:
-	    DebugLevel1(__FUNCTION__": Unknown action %d\n"
-		    ,unit->Command.Action);
+	    DebugLevel1Fn("Unknown action %d\n",unit->Command.Action);
 	    break;
     }
 }
@@ -242,6 +244,39 @@ global void UnitActions(void)
     // Do all actions
     //
     for( table=Units; table<Units+NumUnits; table++ ) {
+#if defined(UNIT_ON_MAP) && 0		// debug unit store
+	Unit* list;
+	Unit* unit;
+
+	unit=*table;
+	list=TheMap.Fields[unit->Y*TheMap.Width+unit->X].Here.Units;
+	while( list ) {				// find the unit
+	    if( list==unit ) {
+		break;
+	    }
+	    list=list->Next;
+	}
+	if( !unit->Removed ) {
+	    if( !list
+		    && (!unit->Type->Vanishes
+			&& !unit->Command.Action==UnitActionDie) ) {
+		DebugLevel0Fn("!removed not on map %Zd\n",UnitNumber(unit));
+		abort();
+	    }
+	} else if( list ) {
+	    DebugLevel0Fn("remove on map %Zd\n",UnitNumber(unit));
+	    abort();
+	}
+	list=unit->Next;
+	while( list ) {
+	    if( list->X!=unit->X || list->Y!=unit->Y ) {
+		DebugLevel0Fn("Wrong X,Y %Zd %d,%d\n",UnitNumber(list)
+			,list->X,list->Y);
+		abort();
+	    }
+	    list=list->Next;
+	}
+#endif
 	if( --(*table)->Wait ) {	// Wait until counter reached
 	    continue;
 	}