diff --git a/doc/ChangeLog.html b/doc/ChangeLog.html
index d13c92711..cea10546f 100644
--- a/doc/ChangeLog.html
+++ b/doc/ChangeLog.html
@@ -650,6 +650,7 @@
     <LI>Added new feature: automatic hit point regeneration of all units from
 	Jan Uerpmann.
     <LI>License changed to GNU General Public License.
+    <LI>Fixed problems arround uncommon map sizes (32x64,64x32,128x1024...).
     <LI>+++
     </UL>
 </UL>
diff --git a/doc/freecraft.html b/doc/freecraft.html
index fdda7c223..42957604c 100644
--- a/doc/freecraft.html
+++ b/doc/freecraft.html
@@ -199,7 +199,7 @@ freecraft [OPTIONS] [map.pud|map.pud.gz]
 	faster? Use 200 to play at double speed. (default is 100% which are
 	30 frames/second)
     <LI>-F<BR>
-	Full-screen video-mode.
+	Full-screen video-mode. (Not supported on all platforms, just test)
     <LI>-W<BR>
 	Windowed video-mode.
     </UL>
@@ -267,7 +267,7 @@ freecraft [OPTIONS] [map.pud|map.pud.gz]
 <LI><KBD>ALT+G, CTRL+G</KBD><BR>
     Toggle mouse grab mode.
 <LI><KBD>ALT+F, CTRL+F</KBD><BR>
-    Toggle fullscreen mode. (only with SDL supported)
+    Toggle fullscreen mode. (only with SDL under X11 supported)
 <LI><KBD>ALT+P, CTRL+P</KBD> or <KBD>pause</KBD><BR>
     Toggle pause mode.
 <LI><KBD>CTRL+S</KBD><BR>
diff --git a/src/beos/beos.c b/src/beos/beos.c
index 863ee021d..75ecd9d56 100644
--- a/src/beos/beos.c
+++ b/src/beos/beos.c
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2000,2001 by Kenneth Sanislo
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/game/game.cpp b/src/game/game.cpp
index 6db195668..0dddbe018 100644
--- a/src/game/game.cpp
+++ b/src/game/game.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer, Andreas Arens
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/game/loadgame.cpp b/src/game/loadgame.cpp
index d5e85daa6..7124992e3 100644
--- a/src/game/loadgame.cpp
+++ b/src/game/loadgame.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2001 by Lutz Sammer, Andreas Arens
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -28,6 +38,9 @@
 #include "upgrade.h"
 #include "depend.h"
 #include "interface.h"
+#include "missile.h"
+#include "tileset.h"
+#include "map.h"
 #include "ccl.h"
 
 /*----------------------------------------------------------------------------
@@ -47,17 +60,16 @@ global void CleanModules(void)
 {
     CleanIcons();
     // CleanUI();
+    CleanPlayers();
     CleanUnitTypes();
     CleanUnits();
     CleanUpgrades();
     CleanDependencies();
     CleanButtons();
-#if 0
     CleanMissileTypes();
     CleanMissiles();
     CleanTileset();
     CleanMap();
-#endif
 }
 
 /**
@@ -69,6 +81,7 @@ global void InitModules(void)
 {
     InitIcons();
     // InitUI();
+    InitPlayers();
     InitUnitTypes();
     InitUnits();
     InitUpgrades();
@@ -86,8 +99,11 @@ global void LoadModules(void)
 {
     LoadIcons();
     // LoadUI();
+    // LoadPlayers();
     LoadUnitTypes();
 
+    LoadTileset();
+
     // LoadButtons();
 }
 
diff --git a/src/game/savegame.cpp b/src/game/savegame.cpp
index a82289d99..9b92e8648 100644
--- a/src/game/savegame.cpp
+++ b/src/game/savegame.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2001 by Lutz Sammer, Andreas Arens
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -35,6 +45,7 @@
 #include "missile.h"
 #include "tileset.h"
 #include "map.h"
+#include "player.h"
 
 #include "ccl.h"
 
@@ -75,14 +86,15 @@ global void SaveGame(const char* filename)
     SaveIcons(file);
     // SaveUI(file);
     SaveUnitTypes(file);
-    SaveUnits(file);
     SaveUpgrades(file);
     SaveDependencies(file);
     SaveButtons(file);
     SaveMissileTypes(file);
-    SaveMissiles(file);
     SaveTileset(file);
+    SavePlayers(file);
     SaveMap(file);
+    SaveUnits(file);
+    SaveMissiles(file);
 
     // FIXME: find all state information which must be saved.
 
diff --git a/src/include/interface.h b/src/include/interface.h
index 7a14d412a..96a99934c 100644
--- a/src/include/interface.h
+++ b/src/include/interface.h
@@ -293,7 +293,7 @@ extern void InputMouseTimeout(const EventCallback*,unsigned);
 //	Chaos pur.
 //
     /// Called if right mouse button is pressed
-extern void DoRightButton(int x,int y);
+extern void DoRightButton(int tx,int ty);
     /// Cancel the building input mode
 extern void CancelBuildingMode(void);
 
diff --git a/src/include/player.h b/src/include/player.h
index a77b87e82..7a6c0a92e 100644
--- a/src/include/player.h
+++ b/src/include/player.h
@@ -75,7 +75,7 @@ struct _player_ {
     char*	Name;			/// name of non computer
 
     unsigned	Type;			/// type of player (human,computer,...)
-    char*	RaceName;		/// name of race.
+    char*	RaceName;		/// name of race
     unsigned	Race;			/// race of player (orc,human,...)
     unsigned	AiNum;			/// AI for computer
 
@@ -88,7 +88,7 @@ struct _player_ {
     unsigned	Y;			/// map tile start Y position
 
     unsigned	Resources[MaxCosts];	/// resources in store
-    int		Incomes[MaxCosts];	/// income of the resources.
+    int		Incomes[MaxCosts];	/// income of the resources
 
 //  FIXME: needed again? if not remove
 //    unsigned	UnitFlags[
@@ -101,7 +101,7 @@ struct _player_ {
     void*	Ai;			/// Ai structure pointer
 
     Unit**	Units;			/// units of this player
-    unsigned	TotalNumUnits;		/// total # units for units' list.
+    unsigned	TotalNumUnits;		/// total # units for units' list
 
     unsigned	NumFoodUnits;		/// # units (need food)
     unsigned	NumBuildings;		/// # buildings (don't need food)
@@ -181,19 +181,27 @@ extern Player* ThisPlayer;		/// Player on this computer
 --	Functions
 ----------------------------------------------------------------------------*/
 
+    /// Init players
+extern void InitPlayers(void);
+    /// Clean up players
+extern void CleanPlayers(void);
+    /// Save players
+extern void SavePlayers(FILE*);
+
     /// Create a new player
 extern void CreatePlayer(int type);
-    /// Change player side.
+
+    /// Change player side
 extern void PlayerSetSide(Player* player,int side);
-    /// Change player name.
-extern void PlayerSetName(Player* player,char* name);
-    /// Change player AI.
+    /// Change player name
+extern void PlayerSetName(Player* player,const char* name);
+    /// Change player AI
 extern void PlayerSetAiNum(Player* player,int ai);
 
-    /// Set a resource of the player.
+    /// Set a resource of the player
 extern void PlayerSetResource(Player* player,int resource,int value);
 
-    /// Check if the unit-type didn't break any unit limits.
+    /// Check if the unit-type didn't break any unit limits
 extern int PlayerCheckLimits(const Player* player,const UnitType* type);
 
     /// Check if enough food is available for unit-type
@@ -229,7 +237,7 @@ extern void PlayersEachFrame(void);
     /// Called each second for player handlers (AI)
 extern void PlayersEachSecond(void);
 
-    /// Change current color set to new player.
+    /// Change current color set to new player
 extern void PlayerPixels(const Player* player);
 
     /// Change current color set to new player of the sprite
diff --git a/src/map/map.cpp b/src/map/map.cpp
index d43e683d0..1f030ea35 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer and Vladi Shabanski
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -43,8 +53,8 @@ global WorldMap TheMap;			/// The current map
 
 global unsigned MapX;			/// Map tile X start on display
 global unsigned MapY;			/// Map tile Y start on display
-global unsigned MapWidth;		/// Map width in tiles
-global unsigned MapHeight;		/// Map height in tiles
+global unsigned MapWidth;		/// Map width in tiles on display
+global unsigned MapHeight;		/// Map height in tiles on display
 
 global int FlagRevealMap;		/// Flag must reveal the map
 
@@ -536,8 +546,25 @@ global void FreeMapInfo(MapInfo* info)
 	if (info->Description) {
 	    free(info->Description);
 	}
+	if (info->MapTerrainName) {
+	    free(info->MapTerrainName);
+	}
 	free(info);
     }
 }
 
+/**
+**	Cleanup the map module.
+*/
+global void CleanMap(void)
+{
+    free(TheMap.Fields);
+    free(TheMap.TerrainName);
+
+    // Tileset freeed by Tileset?
+
+    FreeMapInfo(TheMap.Info);
+    memset(&TheMap,0,sizeof(TheMap));
+}
+
 //@}
diff --git a/src/map/map_draw.cpp b/src/map/map_draw.cpp
index 4025b1d17..5ed341b7f 100644
--- a/src/map/map_draw.cpp
+++ b/src/map/map_draw.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/map_fog.cpp b/src/map/map_fog.cpp
index 4ea9b2934..294878595 100644
--- a/src/map/map_fog.cpp
+++ b/src/map/map_fog.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Lutz Sammer and Vladi Shabanski
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/map_rock.cpp b/src/map/map_rock.cpp
index 5aa668d77..fac1e29df 100644
--- a/src/map/map_rock.cpp
+++ b/src/map/map_rock.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Vladi Shabanski and Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/map_save.cpp b/src/map/map_save.cpp
index cb8f90b02..d8dbf8801 100644
--- a/src/map/map_save.cpp
+++ b/src/map/map_save.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -60,10 +70,12 @@ global void SaveMap(FILE* file)
     fprintf(file,"  'version \"" FreeCraftFormatString "\"\n",
 	    FreeCraftFormatArgs(FreeCraftVersion));
     fprintf(file,"  'description \"%s\"\n",TheMap.Description);
-    fprintf(file,"  'terrain '(%s \"%s\")\n"
-	    ,TheMap.TerrainName,Tilesets[TheMap.Terrain].Name);
 
     fprintf(file,"  'the-map '(\n");
+
+    fprintf(file,"  terrain (%s \"%s\")\n"
+	    ,TheMap.TerrainName,Tilesets[TheMap.Terrain].Name);
+
     fprintf(file,"  size (%d %d)\n",TheMap.Width,TheMap.Height);
     fprintf(file,"  %s\n",TheMap.NoFogOfWar ? "no-fog-of-war" : "fog-of-war");
 
@@ -79,49 +91,49 @@ global void SaveMap(FILE* file)
 		fprintf(file," %d",mf->Value);
 	    }
 	    if( mf->Flags&MapFieldVisible ) {
-		fprintf(file," 'visible");
+		fprintf(file," visible");
 	    }
 	    if( mf->Flags&MapFieldExplored ) {
-		fprintf(file," 'explored");
+		fprintf(file," explored");
 	    }
 	    if( mf->Flags&MapFieldHuman ) {
-		fprintf(file," 'human");
+		fprintf(file," human");
 	    }
 	    if( mf->Flags&MapFieldLandAllowed ) {
-		fprintf(file," 'land");
+		fprintf(file," land");
 	    }
 	    if( mf->Flags&MapFieldCoastAllowed ) {
-		fprintf(file," 'coast");
+		fprintf(file," coast");
 	    }
 	    if( mf->Flags&MapFieldWaterAllowed ) {
-		fprintf(file," 'water");
+		fprintf(file," water");
 	    }
 	    if( mf->Flags&MapFieldNoBuilding ) {
-		fprintf(file," 'mud");
+		fprintf(file," mud");
 	    }
 	    if( mf->Flags&MapFieldUnpassable ) {
-		fprintf(file," 'block");
+		fprintf(file," block");
 	    }
 	    if( mf->Flags&MapFieldWall ) {
-		fprintf(file," 'wall");
+		fprintf(file," wall");
 	    }
 	    if( mf->Flags&MapFieldRocks ) {
-		fprintf(file," 'rock");
+		fprintf(file," rock");
 	    }
 	    if( mf->Flags&MapFieldForest ) {
-		fprintf(file," 'forest");
+		fprintf(file," wood");
 	    }
 	    if( mf->Flags&MapFieldLandUnit ) {
-		fprintf(file," 'ground");
+		fprintf(file," ground");
 	    }
 	    if( mf->Flags&MapFieldAirUnit ) {
-		fprintf(file," 'air");
+		fprintf(file," air");
 	    }
 	    if( mf->Flags&MapFieldSeaUnit ) {
-		fprintf(file," 'sea");
+		fprintf(file," sea");
 	    }
 	    if( mf->Flags&MapFieldBuilding ) {
-		fprintf(file," 'building");
+		fprintf(file," building");
 	    }
 	    if( w&1 ) {
 		fprintf(file,")\n");
diff --git a/src/map/map_wall.cpp b/src/map/map_wall.cpp
index ba1e28f84..d1af0a24e 100644
--- a/src/map/map_wall.cpp
+++ b/src/map/map_wall.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Vladi Shabanski
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/map_wood.cpp b/src/map/map_wood.cpp
index f0ac9e41e..553e3c68c 100644
--- a/src/map/map_wood.cpp
+++ b/src/map/map_wood.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Vladi Shabanski and Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/script_map.cpp b/src/map/script_map.cpp
index 0bed17773..8cb01df53 100644
--- a/src/map/script_map.cpp
+++ b/src/map/script_map.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -35,6 +45,190 @@
 --	Functions
 ----------------------------------------------------------------------------*/
 
+/**
+**	Parse a freecraft map.
+**
+**	@param list	list of tuples keyword data
+*/
+local SCM CclFreeCraftMap(SCM list)
+{
+    SCM value;
+    SCM data;
+    char* str;
+
+    //
+    //	Parse the list:	(still everything could be changed!)
+    //
+    while( !gh_null_p(list) ) {
+
+	value=gh_car(list);
+	list=gh_cdr(list);
+
+	if( gh_eq_p(value,gh_symbol2scm("version")) ) {
+	    char buf[32];
+
+	    data=gh_car(list);
+	    list=gh_cdr(list);
+	    str=gh_scm2newstr(data,NULL);
+	    sprintf(buf,FreeCraftFormatString,
+		    FreeCraftFormatArgs(FreeCraftVersion));
+	    if( strcmp(buf,str) ) {
+		fprintf(stderr,"Warning not saved with this version.\n");
+	    }
+	    free(str);
+	} else if( gh_eq_p(value,gh_symbol2scm("description")) ) {
+	    data=gh_car(list);
+	    list=gh_cdr(list);
+
+	    str=gh_scm2newstr(data,NULL);
+	    strncpy(TheMap.Description,str,sizeof(TheMap.Description));
+	    free(str);
+	} else if( gh_eq_p(value,gh_symbol2scm("the-map")) ) {
+	    data=gh_car(list);
+	    list=gh_cdr(list);
+
+	    while( !gh_null_p(data) ) {
+		value=gh_car(data);
+		data=gh_cdr(data);
+
+		if( gh_eq_p(value,gh_symbol2scm("terrain")) ) {
+		    int i;
+
+		    value=gh_car(data);
+		    data=gh_cdr(data);
+
+		    free(TheMap.TerrainName);
+		    TheMap.TerrainName=str=gh_scm2newstr(gh_car(value),NULL);
+		    //
+		    //	Lookup the index of this tileset.
+		    //
+		    for( i=0; TilesetWcNames[i]
+			    && strcmp(str,TilesetWcNames[i]); ++i ) {
+		    }
+		    TheMap.Terrain=i;
+		    // Ignore: str=gh_scm2newstr(gh_cadr(value),NULL);
+		   
+		} else if( gh_eq_p(value,gh_symbol2scm("size")) ) {
+		    value=gh_car(data);
+		    data=gh_cdr(data);
+
+		    TheMap.Width=gh_scm2int(gh_car(value));
+		    TheMap.Height=gh_scm2int(gh_cadr(value));
+
+		    free(TheMap.Fields);
+		    TheMap.Fields=calloc(TheMap.Width*TheMap.Height,
+			    sizeof(*TheMap.Fields));
+		    InitUnitCache();
+
+		} else if( gh_eq_p(value,gh_symbol2scm("fog-of-war")) ) {
+
+		    TheMap.NoFogOfWar=0;
+
+		} else if( gh_eq_p(value,gh_symbol2scm("no-fog-of-war")) ) {
+
+		    TheMap.NoFogOfWar=1;
+
+		} else if( gh_eq_p(value,gh_symbol2scm("map-fields")) ) {
+		    int i;
+
+		    value=gh_car(data);
+		    data=gh_cdr(data);
+
+		    i=gh_length(value);
+		    if( i!=TheMap.Width*TheMap.Height ) {
+			fprintf(stderr,"Wrong tile table length %d\n",i);
+		    }
+		    i=0;
+		    while( !gh_null_p(value) ) {
+			SCM field;
+
+			field=gh_car(value);
+			value=gh_cdr(value);
+
+			TheMap.Fields[i].Tile=gh_scm2int(gh_car(field));
+			field=gh_cdr(field);
+			TheMap.Fields[i].SeenTile=gh_scm2int(gh_car(field));
+			field=gh_cdr(field);
+			while( !gh_null_p(field) ) {
+			    if( gh_exact_p(gh_car(field)) ) {
+				TheMap.Fields[i].Value=
+					gh_scm2int(gh_car(field));
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("visible")) ) {
+				TheMap.Fields[i].Flags|=MapFieldVisible;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("explored")) ) {
+				TheMap.Fields[i].Flags|=MapFieldExplored;
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("human")) ) {
+				TheMap.Fields[i].Flags|=MapFieldHuman;
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("land")) ) {
+				TheMap.Fields[i].Flags|=MapFieldLandAllowed;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("coast")) ) {
+				TheMap.Fields[i].Flags|=MapFieldCoastAllowed;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("water")) ) {
+				TheMap.Fields[i].Flags|=MapFieldWaterAllowed;
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("mud")) ) {
+				TheMap.Fields[i].Flags|=MapFieldNoBuilding;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("block")) ) {
+				TheMap.Fields[i].Flags|=MapFieldUnpassable;
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("wall")) ) {
+				TheMap.Fields[i].Flags|=MapFieldWall;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("rock")) ) {
+				TheMap.Fields[i].Flags|=MapFieldRocks;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("wood")) ) {
+				TheMap.Fields[i].Flags|=MapFieldForest;
+
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("ground")) ) {
+				TheMap.Fields[i].Flags|=MapFieldLandUnit;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("air")) ) {
+				TheMap.Fields[i].Flags|=MapFieldAirUnit;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("sea")) ) {
+				TheMap.Fields[i].Flags|=MapFieldSeaUnit;
+			    } else if( gh_eq_p(gh_car(field),
+					gh_symbol2scm("building")) ) {
+				TheMap.Fields[i].Flags|=MapFieldBuilding;
+
+			    } else {
+			       // FIXME: this leaves a half initialized map
+			       errl("Unsupported tag",value);
+			    }
+			    field=gh_cdr(field);
+			}
+			++i;
+		    }
+
+		} else {
+		   // FIXME: this leaves a half initialized map
+		   errl("Unsupported tag",value);
+		}
+	    }
+
+	} else {
+	   // FIXME: this leaves a half initialized map
+	   errl("Unsupported tag",value);
+	}
+    }
+
+    return SCM_UNSPECIFIED;
+}
+
 /**
 **	Reveal the complete map.
 **	FIXME: only functional in init file!
@@ -225,6 +419,7 @@ local SCM CclForestRegeneration(SCM speed)
 */
 global void MapCclRegister(void)
 {
+    gh_new_procedureN("freecraft-map",CclFreeCraftMap);
     gh_new_procedure0_0("reveal-map",CclRevealMap);
 
     gh_new_procedure1_0("set-fog-of-war!",CclSetFogOfWar);
diff --git a/src/map/script_tileset.cpp b/src/map/script_tileset.cpp
index a89a87525..279bc9e26 100644
--- a/src/map/script_tileset.cpp
+++ b/src/map/script_tileset.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2000,2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/map/tileset.cpp b/src/map/tileset.cpp
index aca8df0d2..3a2564ff0 100644
--- a/src/map/tileset.cpp
+++ b/src/map/tileset.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -1471,13 +1481,12 @@ global void LoadTileset(void)
     //	Find the tileset.
     //
     for( i=0; i<TilesetsCount; ++i ) {
-	if( !strcmp(TilesetWcNames[TheMap.Terrain],Tilesets[i].Ident) ) {
+	if( !strcmp(TheMap.TerrainName,Tilesets[i].Ident) ) {
 	    break;
 	}
     }
     if( i==TilesetsCount ) {
-	fprintf(stderr,"Tileset `%s' not available\n"
-		,TilesetWcNames[TheMap.Terrain]);
+	fprintf(stderr,"Tileset `%s' not available\n",TheMap.TerrainName);
 	exit(-1);
     }
     TheMap.Tileset=&Tilesets[i];
@@ -1485,7 +1494,6 @@ global void LoadTileset(void)
     //
     //	Load and prepare the tileset
     //
-
     TheMap.TileData=LoadGraphic(TheMap.Tileset->File);
 
     //
@@ -1872,7 +1880,7 @@ global void SaveTileset(FILE* file)
 /**
 **	Cleanup the tileset module.
 **
-**	NOTE: this didn't frees the configuration memory.
+**	@note	this didn't frees the configuration memory.
 */
 global void CleanTileset(void)
 {
@@ -1880,6 +1888,8 @@ global void CleanTileset(void)
     IfDebug( TheMap.TileData=NULL; );
     free(TheMap.Tiles);
     IfDebug( TheMap.Tiles=NULL; );
+
+    DebugLevel0Fn("FIXME: not complete written\n");
 }
 
 //@}
diff --git a/src/stratagus/construct.cpp b/src/stratagus/construct.cpp
index c70d172ed..404949126 100644
--- a/src/stratagus/construct.cpp
+++ b/src/stratagus/construct.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2000 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/goal.cpp b/src/stratagus/goal.cpp
index fa06b3538..16138a9e6 100644
--- a/src/stratagus/goal.cpp
+++ b/src/stratagus/goal.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/groups.cpp b/src/stratagus/groups.cpp
index d312b65b2..0b263a418 100644
--- a/src/stratagus/groups.cpp
+++ b/src/stratagus/groups.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Patrice Fortier and Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/iolib.cpp b/src/stratagus/iolib.cpp
index f2e136b49..4eb668baa 100644
--- a/src/stratagus/iolib.cpp
+++ b/src/stratagus/iolib.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2000,2001 by Andreas Arens
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/mainloop.cpp b/src/stratagus/mainloop.cpp
index 16a7ae686..1f36ad313 100644
--- a/src/stratagus/mainloop.cpp
+++ b/src/stratagus/mainloop.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/player.cpp b/src/stratagus/player.cpp
index d2012a222..3e729994c 100644
--- a/src/stratagus/player.cpp
+++ b/src/stratagus/player.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998,2000,2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -70,6 +80,135 @@ local int PlayerColors[PlayerMax] = {
 --	Functions
 ----------------------------------------------------------------------------*/
 
+/**
+**	Init players.
+*/
+global void InitPlayers(void)
+{
+    int p;
+
+    for( p=0; p<PlayerMax; ++p ) {
+	Players[p].Player=p;
+    }
+}
+
+/**
+**	Clean up players.
+*/
+global void CleanPlayers(void)
+{
+    int p;
+
+    for( p=0; p<PlayerMax; ++p ) {
+	if( Players[p].Name ) {
+	    free(Players[p].Name); 
+	}
+	if( Players[p].Units ) {
+	    free(Players[p].Units);
+	}
+    }
+    ThisPlayer=NULL;
+    memset(Players,0,sizeof(Players));
+    NumPlayers=0;
+}
+
+/**
+**	Save state of players to file.
+**
+**	@param file	Output file.
+*/
+global void SavePlayers(FILE* file)
+{
+    int i;
+    int j;
+
+    fprintf(file,"\n;;; -----------------------------------------\n");
+    fprintf(file,";;; MODULE: players $Id$\n\n");
+
+    for( i=0; i<NumPlayers; ++i ) {
+	fprintf(file,"(player %d\n",i);
+	fprintf(file,"  'name \"%s\"\n",Players[i].Name);
+	fprintf(file,"  'type ");
+	switch( Players[i].Type ) {
+	    case 2: fprintf(file,"'neutral");		break;
+	    case 3: fprintf(file,"'nobody");		break;
+	    case 4: fprintf(file,"'computer");		break;
+	    case 5: fprintf(file,"'human");		break;
+	    case 6: fprintf(file,"'rescue-passive");	break;
+	    case 7: fprintf(file,"'rescue-active");	break;
+	    default:fprintf(file,"%d",Players[i].Type); break;
+	}
+	fprintf(file," 'race \"%s\"",Players[i].RaceName);
+	fprintf(file," 'ai %d\n",Players[i].AiNum);
+	fprintf(file,"  'team %d",Players[i].Team);
+
+	fprintf(file," 'enemy \"");
+	for( j=0; j<PlayerMax; ++j ) {
+	    fputc((Players[i].Enemy&(1<<j)) ? 'X' : '_',file);
+	}
+	fprintf(file,"\" 'allied \"");
+	for( j=0; j<PlayerMax; ++j ) {
+	    fputc((Players[i].Allied&(1<<j)) ? 'X' : '_',file);
+	}
+	fprintf(file,"\"\n  'start '(%d %d)\n",Players[i].X,Players[i].Y);
+
+	// Resources
+	fprintf(file,"  'resources '(");
+	for( j=0; j<MaxCosts; ++j ) {
+	    if( j ) {
+		if( j==MaxCosts/2 ) {
+		    fputs("\n    ",file);
+		} else {
+		    fputc(' ',file);
+		}
+	    }
+	    fprintf(file,"%s %d",DEFAULT_NAMES[j],Players[i].Resources[j]);
+	}
+	// Incomes
+	fprintf(file,")\n  'incomes '(");
+	for( j=0; j<MaxCosts; ++j ) {
+	    if( j ) {
+		if( j==MaxCosts/2 ) {
+		    fputs("\n    ",file);
+		} else {
+		    fputc(' ',file);
+		}
+	    }
+	    fprintf(file,"%s %d",DEFAULT_NAMES[j],Players[i].Incomes[j]);
+	}
+
+	// UnitTypesCount done by load units.
+
+	fprintf(file,")\n  '%s\n",Players[i].AiEnabled ?
+		"ai-enabled" : "ai-disabled");
+
+	// Ai done by load ais.
+
+	fprintf(file,"  'food-unit-limit %d",Players[i].FoodUnitLimit);
+	fprintf(file," 'building-limit %d",Players[i].BuildingLimit);
+	fprintf(file," 'total-unit-limit %d",Players[i].TotalUnitLimit);
+
+	fprintf(file," 'score %d",Players[i].Score);
+
+	// Colors done by init code.
+
+	// Allow saved by allow.
+
+	fprintf(file,"\n  'timers '(");
+	for( j=0; j<UpgradeMax; ++j ) {
+	    if( j ) {
+		fputc(' ',file);
+	    }
+	    fprintf(file,"%d",Players[i].UpgradeTimers.Upgrades[j]);
+	}
+	fprintf(file,")");
+
+	fprintf(file,")\n\n");
+    }
+
+    fprintf(file,"(this-player %d)\n\n",ThisPlayer->Player);
+}
+
 /**
 **	Create a new player.
 **
@@ -142,7 +281,7 @@ global void CreatePlayer(int type)
 	return;
     }
 
-    player->Name="Computer";
+    player->Name=strdup("Computer");
     player->Type=type;
     player->Race=PlayerRaceHuman;
     player->RaceName="human";
@@ -231,7 +370,6 @@ global void CreatePlayer(int type)
     player->Score=0;
 
 #ifndef USE_CCL
-    // FIXME: done by ccl
     player->FoodUnitLimit=200;
     player->BuildingLimit=200;
     player->TotalUnitLimit=400;
@@ -281,9 +419,12 @@ global void PlayerSetSide(Player* player,int side)
 **	@param player	Pointer to player.
 **	@param name	New name.
 */
-global void PlayerSetName(Player* player,char *name)
+global void PlayerSetName(Player* player,const char *name)
 {
-    player->Name=name;
+    if( player->Name ) {
+	free(player->Name);
+    }
+    player->Name=strdup(name);
 }
 
 /**
diff --git a/src/stratagus/pud.cpp b/src/stratagus/pud.cpp
index 401421b64..ce87d0bf8 100644
--- a/src/stratagus/pud.cpp
+++ b/src/stratagus/pud.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -414,27 +424,18 @@ global MapInfo* GetPudInfo(const char* pud)
 	if( !memcmp(header,"ERA ",4) || !memcmp(header,"ERAX",4) ) {
 	    if( length==2 ) {
 		int t;
+		int i;
 
 		t=PudReadWord(input);
-		switch( t ) {
-		    case TilesetSummer:
-			DebugLevel3("\tTerrain: SUMMER\n");
-			break;
-		    case TilesetWinter:
-			DebugLevel3("\tTerrain: WINTER\n");
-			break;
-		    case TilesetWasteland:
-			DebugLevel3("\tTerrain: WASTELAND\n");
-			break;
-		    case TilesetSwamp:
-			DebugLevel3("\tTerrain: SWAMP\n");
-			break;
-		    default:
-			DebugLevel1("Unknown terrain %d\n",t);
-			t=TilesetSummer;
-			break;
+		//
+		//	Look if we have this as tileset.
+		//
+		for( i=0; i<t && TilesetWcNames[i]; ++i ) {
 		}
-		info->MapTerrainName=TilesetWcNames[t];
+		if( !TilesetWcNames[i] ) {
+		    t=0;
+		}
+		info->MapTerrainName=strdup(TilesetWcNames[t]);
 		info->MapTerrain=t;
 		buf[0] = t & 0xFF;
 		info->MapUID += ChksumArea(buf, 1);
@@ -864,31 +865,24 @@ global void LoadPud(const char* pud,WorldMap* map)
 	if( !memcmp(header,"ERA ",4) || !memcmp(header,"ERAX",4) ) {
 	    if( length==2 ) {
 		int t;
+		int i;
 
 		t=PudReadWord(input);
-		if (GameSettings.Terrain == SettingsPresetMapDefault) {
-		    switch( t ) {
-			case TilesetSummer:
-			    DebugLevel3("\tTerrain: SUMMER\n");
-			    break;
-			case TilesetWinter:
-			    DebugLevel3("\tTerrain: WINTER\n");
-			    break;
-			case TilesetWasteland:
-			    DebugLevel3("\tTerrain: WASTELAND\n");
-			    break;
-			case TilesetSwamp:
-			    DebugLevel3("\tTerrain: SWAMP\n");
-			    break;
-			default:
-			    DebugLevel1("Unknown terrain %d\n",t);
-			    t=TilesetSummer;
-			    break;
-		    }
-		} else {
+		if (GameSettings.Terrain != SettingsPresetMapDefault) {
 		    t = GameSettings.Terrain;
 		}
-		map->TerrainName=TilesetWcNames[t];
+		if( map->TerrainName ) {
+		    free(map->TerrainName);
+		}
+		//
+		//	Look if we have this as tileset.
+		//
+		for( i=0; i<t && TilesetWcNames[i]; ++i ) {
+		}
+		if( !TilesetWcNames[i] ) {
+		    t=0;
+		}
+		map->TerrainName=strdup(TilesetWcNames[t]);
 		map->Terrain=t;
 		continue;
 	    } else {
diff --git a/src/stratagus/script.cpp b/src/stratagus/script.cpp
index 7a482f373..4575ab14c 100644
--- a/src/stratagus/script.cpp
+++ b/src/stratagus/script.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -302,13 +312,20 @@ local SCM CclShowAttackRange(void)
 }
 
 /**
-**	Enable display of orders.
+**	Set display of orders.
+**
+**	@param flag	True = turning display of orders on, false = off.
+**
+**	@return		The old state of display of orders.
 */
-local SCM CclShowOrders(void)
+local SCM CclSetShowOrders(SCM flag)
 {
-    ShowOrders=1;
+    int old;
 
-    return SCM_UNSPECIFIED;
+    old=!ShowOrders;
+    ShowOrders=!gh_scm2bool(flag);
+
+    return gh_bool2scm(old);
 }
 
 /**
@@ -563,108 +580,6 @@ local SCM CclDefineMap(SCM width,SCM height)
     return SCM_UNSPECIFIED;
 }
 
-/**
-**	Parse a freecraft map.
-**
-**	@param list	list of tuples keyword data
-*/
-local SCM CclFreeCraftMap(SCM list)
-{
-#if 0
-
-    SCM value;
-    SCM name;
-    SCM data;
-
-    //
-    //	Parse the list:	(still everything could be changed!)
-    //
-    while( !gh_null_p(list) ) {
-
-	value=gh_car(list);
-	//gh_display(value);
-	//gh_newline();
-	if( gh_list_p(value) ) {
-	    name=gh_car(value);
-	    data=gh_cdr(value);
-	    if( !gh_symbol_p(name) ) {
-		fprintf(stderr,__FUNCTION__": symbol expected\n");
-		return list;
-	    }
-	    if( gh_eq_p(name,gh_symbol2scm("version")) ) {
-		DebugLevel1("VERSION:\n");
-		gh_display(data);
-		gh_newline();
-		// FIXME:
-	    } else if( gh_eq_p(name,gh_symbol2scm("description")) ) {
-		DebugLevel1("DESCRIPTION:\n");
-		gh_display(data);
-		gh_newline();
-		// FIXME:
-	    } else if( gh_eq_p(name,gh_symbol2scm("terrain")) ) {
-		int terrain;
-
-		DebugLevel1("TERRAIN:\n");
-		gh_display(data);
-		gh_newline();
-		value=gh_car(data);
-		data=gh_cdr(data);
-		terrain=gh_scm2int(value);
-		TheMap.Terrain=terrain;
-		// FIXME:
-	    } else if( gh_eq_p(name,gh_symbol2scm("dimension")) ) {
-		int width;
-		int height;
-
-		DebugLevel1("DIMENSION:\n");
-		gh_display(data);
-		gh_newline();
-		value=gh_car(data);
-		width=gh_scm2int(value);
-		data=gh_cdr(data);
-		value=gh_car(data);
-		height=gh_scm2int(value);
-		TheMap.Width=width;
-		TheMap.Height=height;
-
-		TheMap.Fields=calloc(width*height,sizeof(*TheMap.Fields));
-		InitUnitCache();
-
-	    } else if( gh_eq_p(name,gh_symbol2scm("tiles")) ) {
-		int i;
-		int l;
-
-		DebugLevel1("TILES:\n");
-		value=gh_car(data);
-		if( !gh_vector_p(value) ) {
-		    fprintf(stderr,"vector expected\n");
-		    return SCM_UNSPECIFIED;
-		}
-		l=gh_vector_length(value);
-		if( l!=TheMap.Width*TheMap.Height ) {
-		    fprintf(stderr,"Wrong tile table length %d\n",l);
-		}
-		for( i=0; i<l; ++i ) {
-		    TheMap.Fields[i].Tile=
-			    Tilesets[0].Table[
-				gh_scm2int(gh_vector_ref(value,gh_int2scm(i)))
-			    ];
-		}
-	    } else {
-		;
-	    }
-	} else {
-	    fprintf(stderr,"list expected\n");
-	    return list;
-	}
-
-	list=gh_cdr(list);
-    }
-#endif
-
-    return list;
-}
-
 /*............................................................................
 ..	Commands
 ............................................................................*/
@@ -740,7 +655,7 @@ global void CclInit(void)
     init_subr_0("show-sight-range",CclShowSightRange);
     init_subr_0("show-react-range",CclShowReactRange);
     init_subr_0("show-attack-range",CclShowAttackRange);
-    init_subr_0("show-orders",CclShowOrders);
+    gh_new_procedure1_0("set-show-orders!",CclSetShowOrders);
 
     gh_new_procedure1_0("speed-mine",CclSpeedMine);
     gh_new_procedure1_0("speed-gold",CclSpeedGold);
@@ -772,8 +687,6 @@ global void CclInit(void)
     init_subr_1("load-pud",CclLoadPud);
     init_subr_2("define-map",CclDefineMap);
 
-    init_lsubr("freecraft-map",CclFreeCraftMap);
-
     gh_new_procedure0_0("mouse-scroll-off",CclMouseScrollOff);
     gh_new_procedure0_0("units",CclUnits);
 
diff --git a/src/stratagus/script_player.cpp b/src/stratagus/script_player.cpp
index 81f4d8f64..05c6e07e1 100644
--- a/src/stratagus/script_player.cpp
+++ b/src/stratagus/script_player.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -39,6 +49,99 @@
 --	Functions
 ----------------------------------------------------------------------------*/
 
+/**
+**	Parse the player configuration.
+**
+**	@param list	Tagged list of all informations.
+*/
+local SCM CclPlayer(SCM list)
+{
+    SCM value;
+    SCM data;
+    Player* player;
+    //char* str;
+
+    player=&Players[gh_scm2int(gh_car(list))];
+    list=gh_cdr(list);
+
+    //
+    //	Parse the list:	(still everything could be changed!)
+    //
+    while( !gh_null_p(list) ) {
+
+	value=gh_car(list);
+	list=gh_cdr(list);
+
+	if( gh_eq_p(value,gh_symbol2scm("name")) ) {
+	    player->Name=gh_scm2newstr(data=gh_car(list),NULL);
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("type")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("race")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("ai")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("team")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("enemy")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("allied")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("start")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("resources")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("incomes")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("ai-enabled")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	} else if( gh_eq_p(value,gh_symbol2scm("ai-disabled")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	} else if( gh_eq_p(value,gh_symbol2scm("food-unit-limit")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("building-limit")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("total-unit-limit")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("score")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else if( gh_eq_p(value,gh_symbol2scm("timers")) ) {
+	    DebugLevel0Fn("FIXME:\n");
+	    list=gh_cdr(list);
+	} else {
+	   // FIXME: this leaves a half initialized player
+	   errl("Unsupported tag",value);
+	}
+    }
+
+    return SCM_UNSPECIFIED;
+}
+
+/**
+**	Set ThisPlayer.
+**
+**	@param plynr	This player number.
+*/
+local SCM CclThisPlayer(SCM plynr)
+{
+    ThisPlayer=&Players[gh_scm2int(plynr)];
+
+    return plynr;
+}
+
 /**
 **	Set player unit limit.
 **
@@ -94,11 +197,14 @@ local SCM CclSetAllPlayersTotalUnitLimit(SCM limit)
 */
 global void PlayerCclRegister(void)
 {
-    gh_new_procedure1_0("set-all-players-food-unit-limit",
+    gh_new_procedureN("player",CclPlayer);
+    gh_new_procedure1_0("this-player",CclThisPlayer);
+
+    gh_new_procedure1_0("set-all-players-food-unit-limit!",
 		CclSetAllPlayersFoodUnitLimit);
-    gh_new_procedure1_0("set-all-players-building-limit",
+    gh_new_procedure1_0("set-all-players-building-limit!",
 		CclSetAllPlayersBuildingLimit);
-    gh_new_procedure1_0("set-all-players-total-unit-limit",
+    gh_new_procedure1_0("set-all-players-total-unit-limit!",
 		CclSetAllPlayersTotalUnitLimit);
 }
 
diff --git a/src/stratagus/selection.cpp b/src/stratagus/selection.cpp
index 2a131b2f3..da5fc9296 100644
--- a/src/stratagus/selection.cpp
+++ b/src/stratagus/selection.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Patrice Fortier
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/stratagus/spells.cpp b/src/stratagus/spells.cpp
index c214d65fc..156b143b2 100644
--- a/src/stratagus/spells.cpp
+++ b/src/stratagus/spells.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Vladi Belperchinov-Shabanski and Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 /*
diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp
index f87e5f59f..38b22b657 100644
--- a/src/stratagus/stratagus.cpp
+++ b/src/stratagus/stratagus.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -379,7 +389,7 @@ global int main1(int argc __attribute__ ((unused)),
 #ifdef HAVE_EXPANSION
     "EXPANSION "
 #endif
-    "\n\nFreeCraft may be copied only under the terms of the Artistic License\
+    "\n\nFreeCraft may be copied only under the terms of the GNU General Public License\
 \nwhich may be found in the FreeCraft source kit."
     "\n\nDISCLAIMER:\n\
 This software is provided as-is.  The author(s) can not be held liable for any\
diff --git a/src/unit/depend.cpp b/src/unit/depend.cpp
index 3d564c21b..7bf9323bb 100644
--- a/src/unit/depend.cpp
+++ b/src/unit/depend.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2000,2001 by Vladi Belperchinov-Shabanski and Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/script_unit.cpp b/src/unit/script_unit.cpp
index aac5ff3f5..80b31c00c 100644
--- a/src/unit/script_unit.cpp
+++ b/src/unit/script_unit.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/script_unittype.cpp b/src/unit/script_unittype.cpp
index bb525b94a..829130d87 100644
--- a/src/unit/script_unittype.cpp
+++ b/src/unit/script_unittype.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/unit.cpp b/src/unit/unit.cpp
index 3ec3323c0..d88e42f40 100644
--- a/src/unit/unit.cpp
+++ b/src/unit/unit.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/unit_cache.cpp b/src/unit/unit_cache.cpp
index 5f587bcb4..bc17bf87c 100644
--- a/src/unit/unit_cache.cpp
+++ b/src/unit/unit_cache.cpp
@@ -19,6 +19,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/unit_draw.cpp b/src/unit/unit_draw.cpp
index e8bb3b60a..1fcfb8f37 100644
--- a/src/unit/unit_draw.cpp
+++ b/src/unit/unit_draw.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -843,7 +853,6 @@ global void DrawPath(const Unit* unit)
 **	Show the current order of an unit.
 **
 **	@param unit	Pointer to the unit.
-**
 */
 local void ShowOrder(const Unit* unit)
 {
@@ -880,7 +889,7 @@ local void ShowOrder(const Unit* unit)
 	    break;
 
 	case UnitActionStandGround:
-	    e_color=color=ColorGray;
+	    e_color=color=ColorGreen;
 	    break;
 
 	case UnitActionFollow:
diff --git a/src/unit/unit_find.cpp b/src/unit/unit_find.cpp
index 5a1ba669e..bb6e07586 100644
--- a/src/unit/unit_find.cpp
+++ b/src/unit/unit_find.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/unittype.cpp b/src/unit/unittype.cpp
index f51968251..48cba9d5a 100644
--- a/src/unit/unittype.cpp
+++ b/src/unit/unittype.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
@@ -859,11 +869,10 @@ local void SaveAnimation(const char* name,const Animation* anim,FILE* file)
 local void SaveAnimations(const UnitType* type,FILE* file)
 {
     const UnitType* temp;
-    const Animations* anim;
+    const Animations* anims;
     int i;
 
-    anim=type->Animations;
-    if( !anim ) {
+    if( !(anims=type->Animations) ) {
 	return;
     }
 
@@ -871,7 +880,7 @@ local void SaveAnimations(const UnitType* type,FILE* file)
     //	Look if this is the first use of it.
     //
     for( temp=UnitTypes; temp->OType && temp!=type ; ++temp ) {
-	if( temp->Animations==anim ) {
+	if( temp->Animations==anims ) {
 	    return;			// allready handled.
 	}
     }
@@ -882,7 +891,7 @@ local void SaveAnimations(const UnitType* type,FILE* file)
     //
     i=0;
     for( temp=UnitTypes; temp->OType; ++temp ) {
-	if( temp->Animations==anim ) {
+	if( temp->Animations==anims ) {
 	    if( i ) {
 		fprintf(file,", ");
 	    }
@@ -892,10 +901,10 @@ local void SaveAnimations(const UnitType* type,FILE* file)
     }
     fprintf(file,"\n(define-animations \"animations-%s\"",type->Ident+5);
 
-    SaveAnimation("still",anim->Still,file);
-    SaveAnimation("move",anim->Move,file);
-    SaveAnimation("attack",anim->Attack,file);
-    SaveAnimation("die",anim->Die,file);
+    SaveAnimation("still",anims->Still,file);
+    SaveAnimation("move",anims->Move,file);
+    SaveAnimation("attack",anims->Attack,file);
+    SaveAnimation("die",anims->Die,file);
 
     fprintf(file,")\n");
 }
@@ -1430,6 +1439,8 @@ global void LoadUnitTypes(void)
 	if( type->CorpseName ) {
 	    type->CorpseType=UnitTypeByIdent(type->CorpseName);
 	}
+
+	// FIXME: should i copy the animations of same graphics?
     }
 
     // FIXME: must copy unit data from peon/peasant to with gold/wood
@@ -1441,6 +1452,7 @@ global void LoadUnitTypes(void)
 */
 global void CleanUnitTypes(void)
 {
+    UnitType* type;
     void** ptr;
 
     //
@@ -1455,7 +1467,104 @@ global void CleanUnitTypes(void)
 	UnitTypeWcNames=NULL;
     }
 
-    // FIXME: more!
+    //	Clean all animations.
+
+    for( type=UnitTypes; type->OType; ++type ) {
+	Animations* anims;
+	UnitType* temp;
+	
+	if( !(anims=type->Animations) ) {	// Must be handled?
+	    continue;
+	}
+	for( temp=type; temp->OType; ++temp ) {	// remove all uses
+	    if( anims==temp->Animations ) {
+		temp->Animations=NULL;
+	    }
+	}
+	type->Animations=NULL;
+	if( anims->Still ) {
+	    free(anims->Still);
+	}
+	if( anims->Move ) {
+	    free(anims->Move);
+	}
+	if( anims->Attack ) {
+	    free(anims->Attack);
+	}
+	if( anims->Die ) {
+	    free(anims->Die);
+	}
+	free(anims);
+    }
+
+    //	Clean all unit-types
+
+    if( UnitTypes ) {
+	for( type=UnitTypes; type->OType; ++type ) {
+	    // FIXME: hash_del not supported
+	    *(UnitType**)hash_add(UnitTypeHash,type->Ident)=NULL;
+
+	    DebugCheck( !type->Ident );
+	    free(type->Ident);
+	    DebugCheck( !type->Name );
+	    free(type->Name);
+
+	    if( type->SameSprite ) {
+		free(type->SameSprite);
+	    }
+	    if( type->File[0] ) {
+		free(type->File[0]);
+	    }
+	    if( type->File[1] ) {
+		free(type->File[1]);
+	    }
+	    if( type->File[2] ) {
+		free(type->File[2]);
+	    }
+	    if( type->File[3] ) {
+		free(type->File[3]);
+	    }
+
+#if 0
+	    if( type->Icon.Name ) {
+		free(type->Icon.Name);
+	    }
+	    if( type->Missile.Name ) {
+		free(type->Missile.Name);
+	    }
+	    if( type->CorpseName ) {
+		free(type->CorpseName);
+	    }
+#endif
+
+	    if( type->Sound.Selected.Name ) {
+		free(type->Sound.Selected.Name);
+	    }
+	    if( type->Sound.Acknowledgement.Name ) {
+		free(type->Sound.Acknowledgement.Name);
+	    }
+	    if( type->Sound.Ready.Name ) {
+		free(type->Sound.Ready.Name);
+	    }
+	    if( type->Sound.Help.Name ) {
+		free(type->Sound.Help.Name);
+	    }
+	    if( type->Sound.Dead.Name ) {
+		free(type->Sound.Dead.Name);
+	    }
+	    if( type->Weapon.Attack.Name ) {
+		free(type->Weapon.Attack.Name);
+	    }
+
+	    if( !type->SameSprite ) {
+		VideoSaveFree(type->Sprite);
+	    }
+	}
+	free(UnitTypes);
+	UnitTypes=NULL;
+	NumUnitTypes=0;
+    }
+
 
     //
     //	Clean hardcoded unit types.
diff --git a/src/unit/upgrade.cpp b/src/unit/upgrade.cpp
index 3b69a486b..ce2ed4642 100644
--- a/src/unit/upgrade.cpp
+++ b/src/unit/upgrade.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1999-2001 by Vladi Belperchinov-Shabanski
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{
diff --git a/src/unit/ut_table.cpp b/src/unit/ut_table.cpp
index a89be2fb9..23df303f6 100644
--- a/src/unit/ut_table.cpp
+++ b/src/unit/ut_table.cpp
@@ -12,6 +12,16 @@
 //
 //	(c) Copyright 1998-2001 by Lutz Sammer
 //
+//	FreeCraft is free software; you can redistribute it and/or modify
+//	it under the terms of the GNU General Public License as published
+//	by the Free Software Foundation; either version 2 of the License,
+//	or (at your option) any later version.
+//
+//	FreeCraft is distributed in the hope that it will be useful,
+//	but WITHOUT ANY WARRANTY; without even the implied warranty of
+//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//	GNU General Public License for more details.
+//
 //	$Id$
 
 //@{