[asc] 62/65: Imported Upstream version 2.6.1.0

Markus Koschany apo-guest at moszumanska.debian.org
Mon Dec 7 20:38:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

apo-guest pushed a commit to branch master
in repository asc.

commit 7adb1af54b5203778f14038d87f66488bc3983ec
Author: Markus Koschany <apo at debian.org>
Date:   Mon Dec 7 20:44:09 2015 +0100

    Imported Upstream version 2.6.1.0
---
 ChangeLog                                          |   2 +-
 Makefile.in                                        |  22 +-
 aclocal.m4                                         | 879 ++++++++++++++++++++-
 asc.suse.spec                                      |   2 +-
 compile                                            | 347 ++++++++
 config.h.in                                        |   3 -
 configure                                          | 312 ++++++--
 configure.ac                                       |   6 +-
 data/Makefile                                      |  97 +--
 data/Makefile.in                                   |   5 +-
 data/campaign/standard/asc008.map.en_US            |   2 +-
 data/dialog/Makefile                               |  97 +--
 data/dialog/Makefile.in                            |   5 +-
 data/icons/Makefile                                |  95 +--
 data/icons/Makefile.in                             |   5 +-
 data/music/Makefile                                |  95 +--
 data/music/Makefile.in                             |   5 +-
 data/pbpeditor-icon.png                            | Bin 0 -> 35890 bytes
 data/sounds/Makefile                               |  95 +--
 data/sounds/Makefile.in                            |   5 +-
 data/unittests/unittest-pathfinding.map            | Bin 1023 -> 1044 bytes
 doc/Makefile.in                                    |   5 +-
 doc/manpages/Makefile.in                           |   5 +-
 doc/unitguide/Makefile.in                          |   5 +-
 doc/unitguide/output/Makefile.in                   |   5 +-
 extra-data/Makefile.in                             |   5 +-
 installer/Makefile.am                              |   1 +
 installer/Makefile.in                              |   6 +-
 installer/asc.nsi.in                               |   1 +
 ltmain.sh                                          |   4 +-
 m4/libtool.m4                                      |  12 +-
 missing                                            |   4 +-
 source/ASCStringHelpers.h                          |   6 +-
 source/Makefile.in                                 |   5 +-
 source/actions/Makefile.in                         |   5 +-
 source/actions/actioncontainer.cpp                 |   6 +-
 source/actions/actioncontainer.h                   |   6 +-
 source/actions/moveunitcommand.cpp                 |   4 +-
 source/actions/moveunitcommand.h                   |   2 +-
 source/actions/servicing.cpp                       |   4 +-
 source/actions/servicing.h                         |  12 +-
 source/ai/Makefile.in                              |   5 +-
 source/ai/base.cpp                                 |   8 +-
 source/ai/misc.cpp                                 |   4 +-
 source/ai/tactics.cpp                              |   8 +
 source/asc-mainscreen.cpp                          |   9 +-
 source/ascstring.h                                 |   5 +-
 source/astar2.cpp                                  |  59 +-
 source/attack.cpp                                  |  34 +-
 source/basegfx.cpp                                 |   2 +-
 source/basestrm.cpp                                |   4 +-
 source/basestrm.h                                  |   2 +-
 source/campaignactionrecorder.cpp                  |   6 +-
 source/campaignactionrecorder.h                    |   2 +-
 source/clparser/Makefile.in                        |   5 +-
 source/containerbase.cpp                           |   4 +-
 source/containerbase.h                             |  10 +-
 source/dashboard.cpp                               |  40 +-
 source/dashboard.h                                 |   2 +-
 source/dataversioncheck.cpp                        |   2 +-
 source/dialogs/Makefile.am                         |   2 +-
 source/dialogs/Makefile.in                         |  10 +-
 source/dialogs/actionmanager.cpp                   |   8 +-
 source/dialogs/admingame.cpp                       |  14 +-
 source/dialogs/alliancesetup.cpp                   |  14 +-
 source/dialogs/ammotransferdialog.cpp              |  14 +-
 source/dialogs/attackpanel.cpp                     |   2 +-
 source/dialogs/buildingtypeselector.h              |   4 +-
 source/dialogs/cargodialog.cpp                     |  67 +-
 source/dialogs/cargoeditor.cpp                     |  16 +-
 source/dialogs/cargowidget.cpp                     |  14 +-
 source/dialogs/cargowidget.h                       |  22 +-
 source/dialogs/choosetech.cpp                      |  16 +-
 source/dialogs/editgameoptions.cpp                 |   6 +-
 source/dialogs/editmapparam.cpp                    |  10 +-
 source/dialogs/editplayerdata.cpp                  |   2 +-
 source/dialogs/edittechadapter.cpp                 |  16 +-
 source/dialogs/eventeditor.cpp                     |  26 +-
 source/dialogs/eventinfo.cpp                       |  66 ++
 source/dialogs/eventinfo.h                         |  29 +
 source/dialogs/exchangegraphics.cpp                |  18 +-
 source/dialogs/fieldmarker.cpp                     |   8 +-
 source/dialogs/fileselector.cpp                    |  20 +-
 source/dialogs/fileselector.h                      |  12 +-
 source/dialogs/gotoposition.cpp                    |   6 +-
 source/dialogs/importbi3map.cpp                    |   4 +-
 source/dialogs/internalAmmoTransferDialog.cpp      |   6 +-
 source/dialogs/locatefile.cpp                      |   4 +-
 source/dialogs/mailoptionseditor.cpp               |   8 +-
 source/dialogs/messagedialog.cpp                   |   6 +-
 source/dialogs/newgame.cpp                         |  22 +-
 source/dialogs/newmap.cpp                          |   6 +-
 source/dialogs/nextcampaignmap.cpp                 |   2 +-
 source/dialogs/playersetup.cpp                     |   4 +-
 source/dialogs/pwd_dlg.cpp                         |  14 +-
 source/dialogs/replayrecorder.cpp                  |   4 +-
 source/dialogs/selectionwindow.cpp                 |   8 +-
 source/dialogs/selectionwindow.h                   |  10 +-
 source/dialogs/soundsettings.cpp                   |  51 +-
 source/dialogs/taskmanager.cpp                     |   8 +-
 source/dialogs/unitcounting.cpp                    |   2 +-
 source/dialogs/unitguidedialog.cpp                 |  12 +-
 source/dialogs/unitinfodialog.cpp                  |  12 +-
 source/dialogs/unitnaming.cpp                      |   6 +-
 source/dialogs/vehicleproductionselection.cpp      |  18 +-
 source/dialogs/vehicleproductionselection.h        |   6 +-
 source/dialogs/vehicletypeselector.cpp             |   8 +-
 source/dialogs/vehicletypeselector.h               |   8 +-
 source/dlg_box.cpp                                 |   4 +-
 source/doc/Makefile.in                             |   5 +-
 source/docs/Makefile.in                            |   5 +-
 source/docs/en/Makefile.in                         |   5 +-
 source/ed_mapcomponent.cpp                         |   2 +-
 source/ed_mapcomponent.h                           |   2 +-
 source/edgen.cpp                                   |   2 +-
 source/edglobal.cpp                                |   8 +-
 source/edglobal.h                                  |   6 +-
 source/edmain.cpp                                  |  13 +-
 source/edmisc.cpp                                  |   8 +-
 source/edselfnt.cpp                                |  10 +-
 source/gamedialog.cpp                              |  86 +-
 source/gameevent_dialogs.cpp                       |   4 +-
 source/gameevents.cpp                              |  32 +-
 source/gameevents.h                                |  18 +-
 source/gameeventsystem.h                           |   2 +-
 source/gamemap.cpp                                 |  12 +-
 source/gamemap.h                                   |  26 +-
 source/graphics/Makefile.in                        |   5 +-
 source/guifunctions.cpp                            |  10 +-
 source/guiiconhandler.cpp                          |  30 +-
 source/guiiconhandler.h                            |   4 +
 source/infopopup.cpp                               |   2 +-
 source/itemrepository.cpp                          |   4 +-
 source/itemrepository.h                            |   2 +-
 source/libs/Makefile.in                            |   5 +-
 source/libs/loki-0.1.6/Makefile.in                 |   5 +-
 source/libs/paragui/Makefile.in                    |   5 +-
 source/libs/paragui/VisualC/paragui_dynamic.vcproj |  31 +-
 source/libs/paragui/include/pgapplication.h        |  17 +-
 source/libs/paragui/include/pgbutton.h             |   9 +-
 source/libs/paragui/include/pgdropdown.h           |  13 +-
 source/libs/paragui/include/pglineedit.h           |  21 +-
 source/libs/paragui/include/pglistbox.h            |   6 +-
 source/libs/paragui/include/pgmenubar.h            |   5 +-
 source/libs/paragui/include/pgmessageobject.h      |  59 +-
 source/libs/paragui/include/pgmultilineedit.h      |   2 +-
 source/libs/paragui/include/pgpopupmenu.h          |  14 +-
 .../paragui/include/pgpropertyeditor_linefield.h   |   4 +-
 .../libs/paragui/include/pgpropertyfield_button.h  |   6 +-
 .../paragui/include/pgpropertyfield_checkbox.h     |  10 +-
 .../paragui/include/pgpropertyfield_dropdown.h     |   8 +-
 .../paragui/include/pgpropertyfield_intdropdown.h  |   6 +-
 .../libs/paragui/include/pgpropertyfield_integer.h |   2 +-
 .../libs/paragui/include/pgpropertyfield_string.h  |   2 +-
 source/libs/paragui/include/pgradiobutton.h        |   6 +-
 source/libs/paragui/include/pgrichedit.h           |   2 +-
 source/libs/paragui/include/pgscrollarea.h         |   5 +-
 source/libs/paragui/include/pgscrollbar.h          |  12 +-
 source/libs/paragui/include/pgscrollwidget.h       |   8 +-
 source/libs/paragui/include/pgsigconvert.h         | 211 -----
 source/libs/paragui/include/pgsignals.h            | 127 ---
 source/libs/paragui/include/pgslider.h             |  10 +-
 source/libs/paragui/include/pgspinnerbox.h         |   7 +-
 source/libs/paragui/include/pgtimerobject.h        |   7 +-
 source/libs/paragui/include/pgtooltiphelp.h        |   8 +-
 source/libs/paragui/include/pgwidget.h             |  13 +-
 source/libs/paragui/include/pgwindow.h             |   7 +-
 source/libs/paragui/src/Makefile.in                |   5 +-
 source/libs/paragui/src/core/Makefile.am           |   1 -
 source/libs/paragui/src/core/Makefile.in           |  12 +-
 source/libs/paragui/src/core/pgapplication.cpp     |  27 +-
 source/libs/paragui/src/core/pgsigconvert.cpp      |  37 -
 source/libs/paragui/src/draw/Makefile.in           |   5 +-
 source/libs/paragui/src/font/Makefile.in           |   5 +-
 source/libs/paragui/src/themes/Makefile.in         |   5 +-
 source/libs/paragui/src/themes/themeloader.cpp     |   2 +-
 source/libs/paragui/src/widgets/Makefile.in        |   5 +-
 source/libs/paragui/src/widgets/pgbutton.cpp       |   2 +-
 .../libs/paragui/src/widgets/pgcolorselector.cpp   |   2 +-
 source/libs/paragui/src/widgets/pgdropdown.cpp     |  13 +-
 source/libs/paragui/src/widgets/pglineedit.cpp     |  12 +-
 source/libs/paragui/src/widgets/pgmenubar.cpp      |  12 +-
 source/libs/paragui/src/widgets/pgmessagebox.cpp   |   6 +-
 .../libs/paragui/src/widgets/pgmultilineedit.cpp   |   6 +-
 source/libs/paragui/src/widgets/pgpopupmenu.cpp    |   4 +-
 source/libs/paragui/src/widgets/pgradiobutton.cpp  |   2 +-
 source/libs/paragui/src/widgets/pgrichedit.cpp     |  10 +-
 source/libs/paragui/src/widgets/pgscrollbar.cpp    |  20 +-
 source/libs/paragui/src/widgets/pgscrollwidget.cpp |  49 +-
 source/libs/paragui/src/widgets/pgslider.cpp       |   6 +-
 source/libs/paragui/src/widgets/pgspinnerbox.cpp   |   8 +-
 source/libs/paragui/src/widgets/pgtooltiphelp.cpp  |  20 +-
 source/libs/paragui/src/widgets/pgwidget.cpp       |   6 +-
 source/libs/paragui/src/widgets/pgwindow.cpp       |   8 +-
 source/libs/paragui/src/ystring/Makefile.in        |   5 +-
 source/libs/revel/Makefile.in                      |   9 +-
 source/libs/sdl_sound/Makefile.in                  |   9 +-
 source/libs/sdlmm/Makefile.in                      |   5 +-
 source/libs/sdlmm/src/Makefile.in                  |   5 +-
 source/libs/triangul/Makefile.in                   |   9 +-
 source/loadbi3.cpp                                 |  12 +-
 source/loaders.cpp                                 |   4 +-
 source/loaders.h                                   |   2 +-
 source/loggingoutput.cpp                           |   2 +-
 source/loggingoutput.h                             |   2 +-
 source/lua/Makefile.in                             |   5 +-
 source/lua/common.cpp                              |   4 +-
 source/mainscreenwidget.cpp                        |  12 +-
 source/mainscreenwidget.h                          |   4 +-
 source/mapdisplay.cpp                              |  16 +-
 source/mapdisplay.h                                |  18 +-
 source/maped-mainscreen.cpp                        |  58 +-
 source/maped-mainscreen.h                          |   4 +-
 source/messagedlg.cpp                              |  22 +-
 source/misc.cpp                                    |   4 +-
 source/network/Makefile.in                         |   5 +-
 source/network/pbem-server.cpp                     |   2 +-
 source/newfont.cpp                                 |   4 +-
 source/oldlzw.cpp                                  |  35 +-
 source/overviewmappanel.cpp                        |  18 +-
 source/overviewmappanel.h                          |   4 +-
 source/packagerepository.cpp                       |   2 +-
 source/packagerepository.h                         |   2 +-
 source/paradialog.cpp                              |  64 +-
 source/paradialog.h                                |  17 +-
 source/player.cpp                                  |   6 +-
 source/player.h                                    |   4 +-
 source/prehistoricevents.cpp                       |   2 +-
 source/reactionfire.cpp                            |  18 +-
 source/replay.cpp                                  |  10 +-
 source/resourcenet.cpp                             |   2 +-
 source/resourcenet.h                               |   2 +-
 source/resourceplacementdialog.cpp                 |  32 +-
 source/resourceplacementdialog.h                   |   5 -
 source/sdl/Makefile.in                             |   5 +-
 source/sdl/events.cpp                              |   2 +-
 source/sdl/graphicsqueue.h                         |   2 +-
 source/sdl/sdl.vcproj                              |   4 +-
 source/sg.cpp                                      |  62 +-
 source/sg.h                                        |   2 +-
 source/sgstream.cpp                                |   2 +-
 source/simplestream.cpp                            |   5 +-
 source/spfst.cpp                                   |  20 +-
 source/spfst.h                                     |  20 +-
 source/stdio-errorhandler.cpp                      |  12 +-
 source/stdio-errorhandler.h                        |   2 +-
 source/strtmesg.cpp                                |   2 +-
 source/tasks/Makefile.in                           |   5 +-
 source/tasks/taskcontainer.cpp                     |   8 +-
 source/tasks/taskcontainer.h                       |   2 +-
 source/tasks/taskhibernatingcontainer.cpp          |   2 +-
 source/tools/Makefile.in                           |   5 +-
 source/tools/infopage.cpp                          |   4 +-
 source/tools/infopage.h                            |   4 +-
 source/tools/lib/Makefile.in                       |   5 +-
 source/tools/linux/Makefile.in                     |   5 +-
 source/tools/win/demount.vcproj                    |   6 +-
 source/tools/win/makegfx.vcproj                    |   8 +-
 source/tools/win/mount.vcproj                      |   4 +-
 source/tools/win/tools.vcproj                      |   8 +-
 source/tools/win/weaponguide.vcproj                |  14 +-
 source/unittests/Makefile.in                       |   5 +-
 source/unittests/main.cpp                          |  28 +-
 source/unittests/movementtest.cpp                  |  26 +
 source/unittests/repairtest.cpp                    |   4 +-
 source/unix/Makefile.in                            |   5 +-
 source/unix/asc/Makefile.in                        |   5 +-
 source/unix/mapeditor/Makefile.in                  |   5 +-
 source/unix/pbpedit/Makefile.in                    |   5 +-
 source/util/Makefile.in                            |   5 +-
 source/util/messaginghub.h                         |  18 +-
 source/vehicle.cpp                                 |   4 +
 source/video/Makefile.in                           |   5 +-
 source/viewcalculation.cpp                         |   2 +-
 source/viewcalculation.h                           |   2 +-
 source/weaponrangelayer.cpp                        |   2 +-
 source/weatherarea.cpp                             |   4 +-
 source/weatherarea.h                               |   2 +-
 source/weathercast.cpp                             |  18 +-
 source/weatherdialog.cpp                           |  56 +-
 source/weatherdialog.h                             |   4 +-
 source/widgets/Makefile.in                         |   5 +-
 source/widgets/autoprogressbar.cpp                 |   4 +-
 source/widgets/autoprogressbar.h                   |   2 +-
 source/widgets/dropdownselector.cpp                |   8 +-
 source/widgets/dropdownselector.h                  |   2 +-
 source/widgets/multilistbox.cpp                    |   4 +-
 source/win32/Makefile.in                           |   5 +-
 source/win32/msvc/ASC/ASC.vcproj                   |  18 +-
 source/win32/msvc/Makefile                         |  95 +--
 source/win32/msvc/Makefile.in                      |   5 +-
 source/win32/msvc/mapeditor/mapeditor.vcproj       |  16 +-
 source/win32/msvc/pbpeditor/mapeditor-icon.ico     | Bin 2238 -> 0 bytes
 source/win32/msvc/pbpeditor/mapeditor.rc           |   2 +-
 source/win32/msvc/pbpeditor/pbpeditor-icon.ico     | Bin 0 -> 237345 bytes
 source/win32/msvc/pbpeditor/pbpeditor.vcproj       |  20 +-
 source/win32/win32-errormsg.cpp                    |   4 +-
 source/win32/win32-errormsg.h                      |   2 +-
 test-driver                                        |  20 +-
 unittester/Makefile.in                             |   5 +-
 300 files changed, 3382 insertions(+), 1999 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 694cadc..13024b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -28501,7 +28501,7 @@ The old Changelogs were automatically created from CVS history:
 	* source/: artint.cpp, artint.h, building.cpp, building.h,
 	  controls.cpp, mousehnd.cpp, sg.cpp, sg.wpj, strtmesg.cpp,
 	  dos/mousehnd.cpp, hexagon/asc.tgt, hexagon/mapedit/edhex.tgt,
-	  tools/asctool.tgt, tools/tools.wpj:  Fixed crash when transfering
+	  tools/asctool.tgt, tools/tools.wpj:  Fixed crash when transferring
 	  ammo to vehicle with > 8 weapons
 
 2000-06-09 17:13  mbickel
diff --git a/Makefile.in b/Makefile.in
index c9f2840..e6a686b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -83,8 +83,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(srcdir)/config.h.in mkinstalldirs $(srcdir)/asc.spec.in \
 	$(srcdir)/asc.suse.spec.in $(srcdir)/asc.appdata.xml.in \
 	$(srcdir)/getmusic.in AUTHORS COPYING ChangeLog INSTALL README \
-	TODO config.guess config.sub depcomp install-sh missing \
-	ltmain.sh
+	TODO compile config.guess config.sub depcomp install-sh \
+	missing ltmain.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -348,6 +348,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -459,8 +462,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+	@test -f $@ || rm -f stamp-h1
+	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -701,10 +704,16 @@ dist-xz: distdir
 	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
+	@echo WARNING: "Support for shar distribution archives is" \
+	               "deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__post_remove_distdir)
 
 dist-shar: distdir
+	@echo WARNING: "Support for distribution archives compressed with" \
+		       "legacy program 'compress' is deprecated." >&2
+	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
 
@@ -746,9 +755,10 @@ distcheck: dist
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	  && ../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/aclocal.m4 b/aclocal.m4
index b8d308a..c3aefa5 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -687,15 +687,50 @@ int main ()
 ])
 
 dnl ---------------------------------------------------------------------------
+dnl Author:          wxWidgets development team,
+dnl                  Francesco Montorsi,
+dnl                  Bob McCown (Mac-testing)
+dnl Creation date:   24/11/2001
+dnl ---------------------------------------------------------------------------
+
+dnl ===========================================================================
+dnl Table of Contents of this macro file:
+dnl -------------------------------------
+dnl
+dnl SECTION A: wxWidgets main macros
+dnl  - WX_CONFIG_OPTIONS
+dnl  - WX_CONFIG_CHECK
+dnl  - WXRC_CHECK
+dnl  - WX_STANDARD_OPTIONS
+dnl  - WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS
+dnl  - WX_DETECT_STANDARD_OPTION_VALUES
+dnl
+dnl SECTION B: wxWidgets-related utilities
+dnl  - WX_LIKE_LIBNAME
+dnl  - WX_ARG_ENABLE_YESNOAUTO
+dnl  - WX_ARG_WITH_YESNOAUTO
+dnl
+dnl SECTION C: messages to the user
+dnl  - WX_STANDARD_OPTIONS_SUMMARY_MSG
+dnl  - WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN
+dnl  - WX_STANDARD_OPTIONS_SUMMARY_MSG_END
+dnl  - WX_BOOLOPT_SUMMARY
+dnl
+dnl The special "WX_DEBUG_CONFIGURE" variable can be set to 1 to enable extra
+dnl debug output on stdout from these macros.
+dnl ===========================================================================
+
+
+dnl ---------------------------------------------------------------------------
 dnl Macros for wxWidgets detection. Typically used in configure.in as:
 dnl
 dnl     AC_ARG_ENABLE(...)
 dnl     AC_ARG_WITH(...)
 dnl        ...
-dnl     AM_OPTIONS_WXCONFIG
+dnl     WX_CONFIG_OPTIONS
 dnl        ...
 dnl        ...
-dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
+dnl     WX_CONFIG_CHECK([2.6.0], [wxWin=1])
 dnl     if test "$wxWin" != 1; then
 dnl        AC_MSG_ERROR([
 dnl                wxWidgets must be installed on your system
@@ -712,16 +747,46 @@ dnl     CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
 dnl     CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
 dnl
 dnl     LIBS="$LIBS $WX_LIBS"
+dnl
+dnl If you want to support standard --enable-debug/unicode/shared options, you
+dnl may do the following:
+dnl
+dnl     ...
+dnl     AC_CANONICAL_SYSTEM
+dnl
+dnl     # define configure options
+dnl     WX_CONFIG_OPTIONS
+dnl     WX_STANDARD_OPTIONS([debug,unicode,shared,toolkit,wxshared])
+dnl
+dnl     # basic configure checks
+dnl     ...
+dnl
+dnl     # we want to always have DEBUG==WX_DEBUG and UNICODE==WX_UNICODE
+dnl     WX_DEBUG=$DEBUG
+dnl     WX_UNICODE=$UNICODE
+dnl
+dnl     WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS
+dnl     WX_CONFIG_CHECK([2.8.0], [wxWin=1],,[html,core,net,base],[$WXCONFIG_FLAGS])
+dnl     WX_DETECT_STANDARD_OPTION_VALUES
+dnl
+dnl     # write the output files
+dnl     AC_CONFIG_FILES([Makefile ...])
+dnl     AC_OUTPUT
+dnl
+dnl     # optional: just to show a message to the user
+dnl     WX_STANDARD_OPTIONS_SUMMARY_MSG
+dnl
 dnl ---------------------------------------------------------------------------
 
+
 dnl ---------------------------------------------------------------------------
-dnl AM_OPTIONS_WXCONFIG
+dnl WX_CONFIG_OPTIONS
 dnl
 dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and
 dnl --wx-config command line options
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN([AM_OPTIONS_WXCONFIG],
+AC_DEFUN([WX_CONFIG_OPTIONS],
 [
     AC_ARG_WITH(wxdir,
                 [  --with-wxdir=PATH       Use uninstalled version of wxWidgets in PATH],
@@ -764,7 +829,7 @@ AC_DEFUN([_WX_PRIVATE_CHECK_VERSION],
 ])
 
 dnl ---------------------------------------------------------------------------
-dnl AM_PATH_WXCONFIG(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
+dnl WX_CONFIG_CHECK(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
 dnl                  [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]])
 dnl
 dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC
@@ -774,23 +839,23 @@ dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this
 dnl case the macro won't even waste time on tests for its existence.
 dnl
 dnl Optional WX-LIBS argument contains comma- or space-separated list of
-dnl wxWidgets libraries to link against (it may include contrib libraries). If
-dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to
-dnl link with all of the core wxWidgets libraries.
+dnl wxWidgets libraries to link against. If it is not specified then WX_LIBS
+dnl and WX_LIBS_STATIC will contain flags to link with all of the core
+dnl wxWidgets libraries.
 dnl
 dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config
 dnl invocation command in present. It can be used to fine-tune lookup of
 dnl best wxWidgets build available.
 dnl
 dnl Example use:
-dnl   AM_PATH_WXCONFIG([2.6.0], [wxWin=1], [wxWin=0], [html,core,net]
+dnl   WX_CONFIG_CHECK([2.6.0], [wxWin=1], [wxWin=0], [html,core,net]
 dnl                    [--unicode --debug])
 dnl ---------------------------------------------------------------------------
 
 dnl
 dnl Get the cflags and libraries from the wx-config script
 dnl
-AC_DEFUN([AM_PATH_WXCONFIG],
+AC_DEFUN([WX_CONFIG_CHECK],
 [
   dnl do we have wx-config name: it can be wx-config or wxd-config or ...
   if test x${WX_CONFIG_NAME+set} != xset ; then
@@ -833,7 +898,9 @@ AC_DEFUN([AM_PATH_WXCONFIG],
       AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)])
     fi
 
-    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4"
+    dnl don't add the libraries ($4) to this variable as this would result in
+    dnl an error when it's used with --version below
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5"
 
     WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
     wx_config_major_version=`echo $WX_VERSION | \
@@ -855,16 +922,15 @@ AC_DEFUN([AM_PATH_WXCONFIG],
                               [$wx_requested_micro_version])
 
     if test -n "$wx_ver_ok"; then
-
       AC_MSG_RESULT(yes (version $WX_VERSION))
-      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs $4`
 
       dnl is this even still appropriate?  --static is a real option now
       dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is
       dnl what the user actually wants, making this redundant at best.
       dnl For now keep it in case anyone actually used it in the past.
       AC_MSG_CHECKING([for wxWidgets static library])
-      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs $4 2>/dev/null`
       if test "x$WX_LIBS_STATIC" = "x"; then
         AC_MSG_RESULT(no)
       else
@@ -909,7 +975,7 @@ AC_DEFUN([AM_PATH_WXCONFIG],
 
       if test "x$wx_has_cppflags" = x ; then
          dnl no choice but to define all flags like CFLAGS
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $4`
          WX_CPPFLAGS=$WX_CFLAGS
          WX_CXXFLAGS=$WX_CFLAGS
 
@@ -917,9 +983,9 @@ AC_DEFUN([AM_PATH_WXCONFIG],
          WX_CXXFLAGS_ONLY=$WX_CFLAGS
       else
          dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS
-         WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
-         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags $4`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags $4`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags $4`
 
          WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
          WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
@@ -942,7 +1008,32 @@ AC_DEFUN([AM_PATH_WXCONFIG],
        WX_LIBS=""
        WX_LIBS_STATIC=""
        WX_RESCOMP=""
-       ifelse([$3], , :, [$3])
+
+       if test ! -z "$5"; then
+
+          wx_error_message="
+    The configuration you asked for $PACKAGE_NAME requires a wxWidgets
+    build with the following settings:
+        $5
+    but such build is not available.
+
+    To see the wxWidgets builds available on this system, please use
+    'wx-config --list' command. To use the default build, returned by
+    'wx-config --selected-config', use the options with their 'auto'
+    default values."
+
+       fi
+
+       wx_error_message="
+    The requested wxWidgets build couldn't be found.
+    $wx_error_message
+
+    If you still get this error, then check that 'wx-config' is
+    in path, the directory where wxWidgets libraries are installed
+    (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH
+    or equivalent variable and wxWidgets version is $1 or above."
+
+       ifelse([$3], , AC_MSG_ERROR([$wx_error_message]), [$3])
 
     fi
   else
@@ -967,6 +1058,15 @@ AC_DEFUN([AM_PATH_WXCONFIG],
   AC_SUBST(WX_LIBS_STATIC)
   AC_SUBST(WX_VERSION)
   AC_SUBST(WX_RESCOMP)
+
+  dnl need to export also WX_VERSION_MINOR and WX_VERSION_MAJOR symbols
+  dnl to support wxpresets bakefiles (we export also WX_VERSION_MICRO for completeness):
+  WX_VERSION_MAJOR="$wx_config_major_version"
+  WX_VERSION_MINOR="$wx_config_minor_version"
+  WX_VERSION_MICRO="$wx_config_micro_version"
+  AC_SUBST(WX_VERSION_MAJOR)
+  AC_SUBST(WX_VERSION_MINOR)
+  AC_SUBST(WX_VERSION_MICRO)
 ])
 
 dnl ---------------------------------------------------------------------------
@@ -976,9 +1076,9 @@ dnl
 dnl     AC_ARG_ENABLE(...)
 dnl     AC_ARG_WITH(...)
 dnl        ...
-dnl     AM_OPTIONS_WXCONFIG
+dnl     WX_CONFIG_OPTIONS
 dnl        ...
-dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
+dnl     WX_CONFIG_CHECK(2.6.0, wxWin=1)
 dnl     if test "$wxWin" != 1; then
 dnl        AC_MSG_ERROR([
 dnl                wxWidgets must be installed on your system
@@ -991,11 +1091,11 @@ dnl                equivalent variable and wxWidgets version is 2.6.0 or above.
 dnl        ])
 dnl     fi
 dnl
-dnl     AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0])
+dnl     WXRC_CHECK([HAVE_WXRC=1], [HAVE_WXRC=0])
 dnl     if test "x$HAVE_WXRC" != x1; then
 dnl         AC_MSG_ERROR([
 dnl                The wxrc program was not installed or not found.
-dnl     
+dnl
 dnl                Please check the wxWidgets installation.
 dnl         ])
 dnl     fi
@@ -1007,32 +1107,30 @@ dnl
 dnl     LDFLAGS="$LDFLAGS $WX_LIBS"
 dnl ---------------------------------------------------------------------------
 
-
-
 dnl ---------------------------------------------------------------------------
-dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl WXRC_CHECK([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
 dnl
 dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS
 dnl resources.  The variable WXRC will be set and substituted in the configure
 dnl script and Makefiles.
 dnl
 dnl Example use:
-dnl   AM_PATH_WXRC([wxrc=1], [wxrc=0])
+dnl   WXRC_CHECK([wxrc=1], [wxrc=0])
 dnl ---------------------------------------------------------------------------
 
 dnl
 dnl wxrc program from the wx-config script
 dnl
-AC_DEFUN([AM_PATH_WXRC],
+AC_DEFUN([WXRC_CHECK],
 [
   AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler])
-    
+
   if test "x$WX_CONFIG_NAME" = x; then
     AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.])
   else
-    
+
     AC_MSG_CHECKING([for wxrc])
-    
+
     if test "x$WXRC" = x ; then
       dnl wx-config --utility is a new addition to wxWidgets:
       _WX_PRIVATE_CHECK_VERSION(2,5,3)
@@ -1048,11 +1146,606 @@ AC_DEFUN([AM_PATH_WXRC],
       AC_MSG_RESULT([$WXRC])
       ifelse([$1], , :, [$1])
     fi
-    
+
     AC_SUBST(WXRC)
   fi
 ])
 
+dnl ---------------------------------------------------------------------------
+dnl WX_LIKE_LIBNAME([output-var] [prefix], [name])
+dnl
+dnl Sets the "output-var" variable to the name of a library named with same
+dnl wxWidgets rule.
+dnl E.g. for output-var=='lib', name=='test', prefix='mine', sets
+dnl      the $lib variable to:
+dnl          'mine_gtk2ud_test-2.8'
+dnl      if WX_PORT=gtk2, WX_UNICODE=1, WX_DEBUG=1 and WX_RELEASE=28
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_LIKE_LIBNAME],
+    [
+        wx_temp="$2""_""$WX_PORT"
+
+        dnl add the [u][d] string
+        if test "$WX_UNICODE" = "1"; then
+            wx_temp="$wx_temp""u"
+        fi
+        if test "$WX_DEBUG" = "1"; then
+            wx_temp="$wx_temp""d"
+        fi
+
+        dnl complete the name of the lib
+        wx_temp="$wx_temp""_""$3""-$WX_VERSION_MAJOR.$WX_VERSION_MINOR"
+
+        dnl save it in the user's variable
+        $1=$wx_temp
+    ])
+
+dnl ---------------------------------------------------------------------------
+dnl WX_ARG_ENABLE_YESNOAUTO/WX_ARG_WITH_YESNOAUTO
+dnl
+dnl Two little custom macros which define the ENABLE/WITH configure arguments.
+dnl Macro arguments:
+dnl $1 = the name of the --enable / --with  feature
+dnl $2 = the name of the variable associated
+dnl $3 = the description of that feature
+dnl $4 = the default value for that feature
+dnl $5 = additional action to do in case option is given with "yes" value
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_ARG_ENABLE_YESNOAUTO],
+         [AC_ARG_ENABLE($1,
+            AC_HELP_STRING([--enable-$1], [$3 (default is $4)]),
+            [], [enableval="$4"])
+
+            dnl Show a message to the user about this option
+            AC_MSG_CHECKING([for the --enable-$1 option])
+            if test "$enableval" = "yes" ; then
+                AC_MSG_RESULT([yes])
+                $2=1
+                $5
+            elif test "$enableval" = "no" ; then
+                AC_MSG_RESULT([no])
+                $2=0
+            elif test "$enableval" = "auto" ; then
+                AC_MSG_RESULT([will be automatically detected])
+                $2="auto"
+            else
+                AC_MSG_ERROR([
+    Unrecognized option value (allowed values: yes, no, auto)
+                ])
+            fi
+         ])
+
+AC_DEFUN([WX_ARG_WITH_YESNOAUTO],
+         [AC_ARG_WITH($1,
+            AC_HELP_STRING([--with-$1], [$3 (default is $4)]),
+            [], [withval="$4"])
+
+            dnl Show a message to the user about this option
+            AC_MSG_CHECKING([for the --with-$1 option])
+            if test "$withval" = "yes" ; then
+                AC_MSG_RESULT([yes])
+                $2=1
+                $5
+            dnl NB: by default we don't allow --with-$1=no option
+            dnl     since it does not make much sense !
+            elif test "$6" = "1" -a "$withval" = "no" ; then
+                AC_MSG_RESULT([no])
+                $2=0
+            elif test "$withval" = "auto" ; then
+                AC_MSG_RESULT([will be automatically detected])
+                $2="auto"
+            else
+                AC_MSG_ERROR([
+    Unrecognized option value (allowed values: yes, auto)
+                ])
+            fi
+         ])
+
+
+dnl ---------------------------------------------------------------------------
+dnl WX_STANDARD_OPTIONS([options-to-add])
+dnl
+dnl Adds to the configure script one or more of the following options:
+dnl   --enable-[debug|unicode|shared|wxshared|wxdebug]
+dnl   --with-[gtk|msw|motif|x11|mac|dfb]
+dnl   --with-wxversion
+dnl Then checks for their presence and eventually set the DEBUG, UNICODE, SHARED,
+dnl PORT, WX_SHARED, WX_DEBUG, variables to one of the "yes", "no", "auto" values.
+dnl
+dnl Note that e.g. UNICODE != WX_UNICODE; the first is the value of the
+dnl --enable-unicode option (in boolean format) while the second indicates
+dnl if wxWidgets was built in Unicode mode (and still is in boolean format).
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_STANDARD_OPTIONS],
+        [
+
+        dnl the following lines will expand to WX_ARG_ENABLE_YESNOAUTO calls if and only if
+        dnl the $1 argument contains respectively the debug,unicode or shared options.
+
+        dnl be careful here not to set debug flag if only "wxdebug" was specified
+        ifelse(regexp([$1], [\bdebug]), [-1],,
+               [WX_ARG_ENABLE_YESNOAUTO([debug], [DEBUG], [Build in debug mode], [auto])])
+
+        ifelse(index([$1], [unicode]), [-1],,
+               [WX_ARG_ENABLE_YESNOAUTO([unicode], [UNICODE], [Build in Unicode mode], [auto])])
+
+        ifelse(regexp([$1], [\bshared]), [-1],,
+               [WX_ARG_ENABLE_YESNOAUTO([shared], [SHARED], [Build as shared library], [auto])])
+
+        dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-toolkit since it's an option
+        dnl which must be able to accept the auto|gtk1|gtk2|msw|... values
+        ifelse(index([$1], [toolkit]), [-1],,
+               [
+                AC_ARG_WITH([toolkit],
+                            AC_HELP_STRING([--with-toolkit],
+                                           [Build against a specific wxWidgets toolkit (default is auto)]),
+                            [], [withval="auto"])
+
+                dnl Show a message to the user about this option
+                AC_MSG_CHECKING([for the --with-toolkit option])
+                if test "$withval" = "auto" ; then
+                    AC_MSG_RESULT([will be automatically detected])
+                    TOOLKIT="auto"
+                else
+                    TOOLKIT="$withval"
+
+                    dnl PORT must be one of the allowed values
+                    if test "$TOOLKIT" != "gtk1" -a "$TOOLKIT" != "gtk2" -a \
+                            "$TOOLKIT" != "msw" -a "$TOOLKIT" != "motif" -a \
+                            "$TOOLKIT" != "osx_carbon" -a "$TOOLKIT" != "osx_cocoa" -a \
+                            "$TOOLKIT" != "dfb" -a "$TOOLKIT" != "x11"; then
+                        AC_MSG_ERROR([
+    Unrecognized option value (allowed values: auto, gtk1, gtk2, msw, motif, osx_carbon, osx_cocoa, dfb, x11)
+                        ])
+                    fi
+
+                    AC_MSG_RESULT([$TOOLKIT])
+                fi
+               ])
+
+        dnl ****** IMPORTANT *******
+        dnl   Unlike for the UNICODE setting, you can build your program in
+        dnl   shared mode against a static build of wxWidgets. Thus we have the
+        dnl   following option which allows these mixtures. E.g.
+        dnl
+        dnl      ./configure --disable-shared --with-wxshared
+        dnl
+        dnl   will build your library in static mode against the first available
+        dnl   shared build of wxWidgets.
+        dnl
+        dnl   Note that's not possible to do the viceversa:
+        dnl
+        dnl      ./configure --enable-shared --without-wxshared
+        dnl
+        dnl   Doing so you would try to build your library in shared mode against a static
+        dnl   build of wxWidgets. This is not possible (you would mix PIC and non PIC code) !
+        dnl   A check for this combination of options is in WX_DETECT_STANDARD_OPTION_VALUES
+        dnl   (where we know what 'auto' should be expanded to).
+        dnl
+        dnl   If you try to build something in ANSI mode against a UNICODE build
+        dnl   of wxWidgets or in RELEASE mode against a DEBUG build of wxWidgets,
+        dnl   then at best you'll get ton of linking errors !
+        dnl ************************
+
+        ifelse(index([$1], [wxshared]), [-1],,
+               [
+                WX_ARG_WITH_YESNOAUTO(
+                    [wxshared], [WX_SHARED],
+                    [Force building against a shared build of wxWidgets, even if --disable-shared is given],
+                    [auto], [], [1])
+               ])
+
+        dnl Just like for SHARED and WX_SHARED it may happen that some adventurous
+        dnl peoples will want to mix a wxWidgets release build with a debug build of
+        dnl his app/lib. So, we have both DEBUG and WX_DEBUG variables.
+        ifelse(index([$1], [wxdebug]), [-1],,
+               [
+                WX_ARG_WITH_YESNOAUTO(
+                    [wxdebug], [WX_DEBUG],
+                    [Force building against a debug build of wxWidgets, even if --disable-debug is given],
+                    [auto], [], [1])
+               ])
+
+        dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-wxversion since it's an option
+        dnl which accepts the "auto|2.6|2.7|2.8|2.9|3.0" etc etc values
+        ifelse(index([$1], [wxversion]), [-1],,
+               [
+                AC_ARG_WITH([wxversion],
+                            AC_HELP_STRING([--with-wxversion],
+                                           [Build against a specific version of wxWidgets (default is auto)]),
+                            [], [withval="auto"])
+
+                dnl Show a message to the user about this option
+                AC_MSG_CHECKING([for the --with-wxversion option])
+                if test "$withval" = "auto" ; then
+                    AC_MSG_RESULT([will be automatically detected])
+                    WX_RELEASE="auto"
+                else
+
+                    wx_requested_major_version=`echo $withval | \
+                        sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\1/'`
+                    wx_requested_minor_version=`echo $withval | \
+                        sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\2/'`
+
+                    dnl both vars above must be exactly 1 digit
+                    if test "${#wx_requested_major_version}" != "1" -o \
+                            "${#wx_requested_minor_version}" != "1" ; then
+                        AC_MSG_ERROR([
+    Unrecognized option value (allowed values: auto, 2.6, 2.7, 2.8, 2.9, 3.0)
+                        ])
+                    fi
+
+                    WX_RELEASE="$wx_requested_major_version"".""$wx_requested_minor_version"
+                    AC_MSG_RESULT([$WX_RELEASE])
+                fi
+               ])
+
+        if test "$WX_DEBUG_CONFIGURE" = "1"; then
+            echo "[[dbg]] DEBUG: $DEBUG, WX_DEBUG: $WX_DEBUG"
+            echo "[[dbg]] UNICODE: $UNICODE, WX_UNICODE: $WX_UNICODE"
+            echo "[[dbg]] SHARED: $SHARED, WX_SHARED: $WX_SHARED"
+            echo "[[dbg]] TOOLKIT: $TOOLKIT, WX_TOOLKIT: $WX_TOOLKIT"
+            echo "[[dbg]] VERSION: $VERSION, WX_RELEASE: $WX_RELEASE"
+        fi
+    ])
+
+
+dnl ---------------------------------------------------------------------------
+dnl WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS
+dnl
+dnl Sets the WXCONFIG_FLAGS string using the SHARED,DEBUG,UNICODE variable values
+dnl which are different from "auto".
+dnl Thus this macro needs to be called only once all options have been set.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS],
+        [
+        if test "$WX_SHARED" = "1" ; then
+            WXCONFIG_FLAGS="--static=no "
+        elif test "$WX_SHARED" = "0" ; then
+            WXCONFIG_FLAGS="--static=yes "
+        fi
+
+        if test "$WX_DEBUG" = "1" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=yes "
+        elif test "$WX_DEBUG" = "0" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=no "
+        fi
+
+        dnl The user should have set WX_UNICODE=UNICODE
+        if test "$WX_UNICODE" = "1" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=yes "
+        elif test "$WX_UNICODE" = "0" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=no "
+        fi
+
+        if test "$TOOLKIT" != "auto" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--toolkit=$TOOLKIT "
+        fi
+
+        if test "$WX_RELEASE" != "auto" ; then
+            WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--version=$WX_RELEASE "
+        fi
+
+        dnl strip out the last space of the string
+        WXCONFIG_FLAGS=${WXCONFIG_FLAGS% }
+
+        if test "$WX_DEBUG_CONFIGURE" = "1"; then
+            echo "[[dbg]] WXCONFIG_FLAGS: $WXCONFIG_FLAGS"
+        fi
+    ])
+
+
+dnl ---------------------------------------------------------------------------
+dnl _WX_SELECTEDCONFIG_CHECKFOR([RESULTVAR], [STRING], [MSG]
+dnl                             [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Outputs the given MSG. Then searches the given STRING in the wxWidgets
+dnl additional CPP flags and put the result of the search in WX_$RESULTVAR
+dnl also adding the "yes" or "no" message result to MSG.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([_WX_SELECTEDCONFIG_CHECKFOR],
+        [
+        if test "$$1" = "auto" ; then
+
+            dnl The user does not have particular preferences for this option;
+            dnl so we will detect the wxWidgets relative build setting and use it
+            AC_MSG_CHECKING([$3])
+
+            dnl set WX_$1 variable to 1 if the $WX_SELECTEDCONFIG contains the $2
+            dnl string or to 0 otherwise.
+            dnl NOTE: 'expr match STRING REGEXP' cannot be used since on Mac it
+            dnl       doesn't work; we use 'expr STRING : REGEXP' instead
+            WX_$1=$(expr "$WX_SELECTEDCONFIG" : ".*$2.*")
+
+            if test "$WX_$1" != "0"; then
+                WX_$1=1
+                AC_MSG_RESULT([yes])
+                ifelse([$4], , :, [$4])
+            else
+                WX_$1=0
+                AC_MSG_RESULT([no])
+                ifelse([$5], , :, [$5])
+            fi
+        else
+
+            dnl Use the setting given by the user
+            WX_$1=$$1
+        fi
+    ])
+
+dnl ---------------------------------------------------------------------------
+dnl WX_DETECT_STANDARD_OPTION_VALUES
+dnl
+dnl Detects the values of the following variables:
+dnl 1) WX_RELEASE
+dnl 2) WX_UNICODE
+dnl 3) WX_DEBUG
+dnl 4) WX_SHARED    (and also WX_STATIC)
+dnl 5) WX_PORT
+dnl from the previously selected wxWidgets build; this macro in fact must be
+dnl called *after* calling the WX_CONFIG_CHECK macro.
+dnl
+dnl Note that the WX_VERSION_MAJOR, WX_VERSION_MINOR symbols are already set
+dnl by WX_CONFIG_CHECK macro
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_DETECT_STANDARD_OPTION_VALUES],
+        [
+        dnl IMPORTANT: WX_VERSION contains all three major.minor.micro digits,
+        dnl            while WX_RELEASE only the major.minor ones.
+        WX_RELEASE="$WX_VERSION_MAJOR""$WX_VERSION_MINOR"
+        if test $WX_RELEASE -lt 26 ; then
+
+            AC_MSG_ERROR([
+    Cannot detect the wxWidgets configuration for the selected wxWidgets build
+    since its version is $WX_VERSION < 2.6.0; please install a newer
+    version of wxWidgets.
+                         ])
+        fi
+
+        dnl The wx-config we are using understands the "--selected_config"
+        dnl option which returns an easy-parseable string !
+        WX_SELECTEDCONFIG=$($WX_CONFIG_WITH_ARGS --selected_config)
+
+        if test "$WX_DEBUG_CONFIGURE" = "1"; then
+            echo "[[dbg]] Using wx-config --selected-config"
+            echo "[[dbg]] WX_SELECTEDCONFIG: $WX_SELECTEDCONFIG"
+        fi
+
+
+        dnl we could test directly for WX_SHARED with a line like:
+        dnl    _WX_SELECTEDCONFIG_CHECKFOR([SHARED], [shared],
+        dnl                                [if wxWidgets was built in SHARED mode])
+        dnl but wx-config --selected-config DOES NOT outputs the 'shared'
+        dnl word when wx was built in shared mode; it rather outputs the
+        dnl 'static' word when built in static mode.
+        if test $WX_SHARED = "1"; then
+            STATIC=0
+        elif test $WX_SHARED = "0"; then
+            STATIC=1
+        elif test $WX_SHARED = "auto"; then
+            STATIC="auto"
+        fi
+
+        dnl Now set the WX_UNICODE, WX_DEBUG, WX_STATIC variables
+        _WX_SELECTEDCONFIG_CHECKFOR([UNICODE], [unicode],
+                                    [if wxWidgets was built with UNICODE enabled])
+        _WX_SELECTEDCONFIG_CHECKFOR([DEBUG], [debug],
+                                    [if wxWidgets was built in DEBUG mode])
+        _WX_SELECTEDCONFIG_CHECKFOR([STATIC], [static],
+                                    [if wxWidgets was built in STATIC mode])
+
+        dnl init WX_SHARED from WX_STATIC
+        if test "$WX_STATIC" != "0"; then
+            WX_SHARED=0
+        else
+            WX_SHARED=1
+        fi
+
+        AC_SUBST(WX_UNICODE)
+        AC_SUBST(WX_DEBUG)
+        AC_SUBST(WX_SHARED)
+
+        dnl detect the WX_PORT to use
+        if test "$TOOLKIT" = "auto" ; then
+
+            dnl The user does not have particular preferences for this option;
+            dnl so we will detect the wxWidgets relative build setting and use it
+            AC_MSG_CHECKING([which wxWidgets toolkit was selected])
+
+            WX_GTKPORT1=$(expr "$WX_SELECTEDCONFIG" : ".*gtk1.*")
+            WX_GTKPORT2=$(expr "$WX_SELECTEDCONFIG" : ".*gtk2.*")
+            WX_MSWPORT=$(expr "$WX_SELECTEDCONFIG" : ".*msw.*")
+            WX_MOTIFPORT=$(expr "$WX_SELECTEDCONFIG" : ".*motif.*")
+            WX_OSXCOCOAPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_cocoa.*")
+            WX_OSXCARBONPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_carbon.*")
+            WX_X11PORT=$(expr "$WX_SELECTEDCONFIG" : ".*x11.*")
+            WX_DFBPORT=$(expr "$WX_SELECTEDCONFIG" : ".*dfb.*")
+
+            WX_PORT="unknown"
+            if test "$WX_GTKPORT1" != "0"; then WX_PORT="gtk1"; fi
+            if test "$WX_GTKPORT2" != "0"; then WX_PORT="gtk2"; fi
+            if test "$WX_MSWPORT" != "0"; then WX_PORT="msw"; fi
+            if test "$WX_MOTIFPORT" != "0"; then WX_PORT="motif"; fi
+            if test "$WX_OSXCOCOAPORT" != "0"; then WX_PORT="osx_cocoa"; fi
+            if test "$WX_OSXCARBONPORT" != "0"; then WX_PORT="osx_carbon"; fi
+            if test "$WX_X11PORT" != "0"; then WX_PORT="x11"; fi
+            if test "$WX_DFBPORT" != "0"; then WX_PORT="dfb"; fi
+
+            dnl NOTE: backward-compatible check for wx2.8; in wx2.9 the mac
+            dnl       ports are called 'osx_cocoa' and 'osx_carbon' (see above)
+            WX_MACPORT=$(expr "$WX_SELECTEDCONFIG" : ".*mac.*")
+            if test "$WX_MACPORT" != "0"; then WX_PORT="mac"; fi
+
+            dnl check at least one of the WX_*PORT has been set !
+
+            if test "$WX_PORT" = "unknown" ; then
+                AC_MSG_ERROR([
+        Cannot detect the currently installed wxWidgets port !
+        Please check your 'wx-config --cxxflags'...
+                            ])
+            fi
+
+            AC_MSG_RESULT([$WX_PORT])
+        else
+
+            dnl Use the setting given by the user
+            if test -z "$TOOLKIT" ; then
+                WX_PORT=$TOOLKIT
+            else
+                dnl try with PORT
+                WX_PORT=$PORT
+            fi
+        fi
+
+        AC_SUBST(WX_PORT)
+
+        if test "$WX_DEBUG_CONFIGURE" = "1"; then
+            echo "[[dbg]] Values of all WX_* options after final detection:"
+            echo "[[dbg]] WX_DEBUG: $WX_DEBUG"
+            echo "[[dbg]] WX_UNICODE: $WX_UNICODE"
+            echo "[[dbg]] WX_SHARED: $WX_SHARED"
+            echo "[[dbg]] WX_RELEASE: $WX_RELEASE"
+            echo "[[dbg]] WX_PORT: $WX_PORT"
+        fi
+
+        dnl Avoid problem described in the WX_STANDARD_OPTIONS which happens when
+        dnl the user gives the options:
+        dnl      ./configure --enable-shared --without-wxshared
+        dnl or just do
+        dnl      ./configure --enable-shared
+        dnl but there is only a static build of wxWidgets available.
+        if test "$WX_SHARED" = "0" -a "$SHARED" = "1"; then
+            AC_MSG_ERROR([
+    Cannot build shared library against a static build of wxWidgets !
+    This error happens because the wxWidgets build which was selected
+    has been detected as static while you asked to build $PACKAGE_NAME
+    as shared library and this is not possible.
+    Use the '--disable-shared' option to build $PACKAGE_NAME
+    as static library or '--with-wxshared' to use wxWidgets as shared library.
+                         ])
+        fi
+
+        dnl now we can finally update the DEBUG,UNICODE,SHARED options
+        dnl to their final values if they were set to 'auto'
+        if test "$DEBUG" = "auto"; then
+            DEBUG=$WX_DEBUG
+        fi
+        if test "$UNICODE" = "auto"; then
+            UNICODE=$WX_UNICODE
+        fi
+        if test "$SHARED" = "auto"; then
+            SHARED=$WX_SHARED
+        fi
+        if test "$TOOLKIT" = "auto"; then
+            TOOLKIT=$WX_PORT
+        fi
+
+        dnl in case the user needs a BUILD=debug/release var...
+        if test "$DEBUG" = "1"; then
+            BUILD="debug"
+        elif test "$DEBUG" = "0" -o "$DEBUG" = ""; then
+            BUILD="release"
+        fi
+
+        dnl respect the DEBUG variable adding the optimize/debug flags
+        dnl NOTE: the CXXFLAGS are merged together with the CPPFLAGS so we
+        dnl       don't need to set them, too
+        if test "$DEBUG" = "1"; then
+            CXXFLAGS="$CXXFLAGS -g -O0"
+            CFLAGS="$CFLAGS -g -O0"
+        else
+            CXXFLAGS="$CXXFLAGS -O2"
+            CFLAGS="$CFLAGS -O2"
+        fi
+    ])
+
+dnl ---------------------------------------------------------------------------
+dnl WX_BOOLOPT_SUMMARY([name of the boolean variable to show summary for],
+dnl                   [what to print when var is 1],
+dnl                   [what to print when var is 0])
+dnl
+dnl Prints $2 when variable $1 == 1 and prints $3 when variable $1 == 0.
+dnl This macro mainly exists just to make configure.ac scripts more readable.
+dnl
+dnl NOTE: you need to use the [" my message"] syntax for 2nd and 3rd arguments
+dnl       if you want that m4 avoid to throw away the spaces prefixed to the
+dnl       argument value.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_BOOLOPT_SUMMARY],
+        [
+        if test "x$$1" = "x1" ; then
+            echo $2
+        elif test "x$$1" = "x0" ; then
+            echo $3
+        else
+            echo "$1 is $$1"
+        fi
+    ])
+
+dnl ---------------------------------------------------------------------------
+dnl WX_STANDARD_OPTIONS_SUMMARY_MSG
+dnl
+dnl Shows a summary message to the user about the WX_* variable contents.
+dnl This macro is used typically at the end of the configure script.
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG],
+        [
+        echo
+        echo "  The wxWidgets build which will be used by $PACKAGE_NAME $PACKAGE_VERSION"
+        echo "  has the following settings:"
+        WX_BOOLOPT_SUMMARY([WX_DEBUG],   ["  - DEBUG build"],  ["  - RELEASE build"])
+        WX_BOOLOPT_SUMMARY([WX_UNICODE], ["  - UNICODE mode"], ["  - ANSI mode"])
+        WX_BOOLOPT_SUMMARY([WX_SHARED],  ["  - SHARED mode"],  ["  - STATIC mode"])
+        echo "  - VERSION: $WX_VERSION"
+        echo "  - PORT: $WX_PORT"
+    ])
+
+
+dnl ---------------------------------------------------------------------------
+dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN, WX_STANDARD_OPTIONS_SUMMARY_MSG_END
+dnl
+dnl Like WX_STANDARD_OPTIONS_SUMMARY_MSG macro but these two macros also gives info
+dnl about the configuration of the package which used the wxpresets.
+dnl
+dnl Typical usage:
+dnl    WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN
+dnl    echo "   - Package setting 1: $SETTING1"
+dnl    echo "   - Package setting 2: $SETTING1"
+dnl    ...
+dnl    WX_STANDARD_OPTIONS_SUMMARY_MSG_END
+dnl
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN],
+        [
+        echo
+        echo " ----------------------------------------------------------------"
+        echo "  Configuration for $PACKAGE_NAME $PACKAGE_VERSION successfully completed."
+        echo "  Summary of main configuration settings for $PACKAGE_NAME:"
+        WX_BOOLOPT_SUMMARY([DEBUG], ["  - DEBUG build"], ["  - RELEASE build"])
+        WX_BOOLOPT_SUMMARY([UNICODE], ["  - UNICODE mode"], ["  - ANSI mode"])
+        WX_BOOLOPT_SUMMARY([SHARED], ["  - SHARED mode"], ["  - STATIC mode"])
+    ])
+
+AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_END],
+        [
+        WX_STANDARD_OPTIONS_SUMMARY_MSG
+        echo
+        echo "  Now, just run make."
+        echo " ----------------------------------------------------------------"
+        echo
+    ])
+
+
+dnl ---------------------------------------------------------------------------
+dnl Deprecated macro wrappers
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AM_OPTIONS_WXCONFIG], [WX_CONFIG_OPTIONS])
+AC_DEFUN([AM_PATH_WXCONFIG], [
+    WX_CONFIG_CHECK([$1],[$2],[$3],[$4],[$5])
+])
+AC_DEFUN([AM_PATH_WXRC], [WXRC_CHECK([$1],[$2])])
+
 # Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
@@ -1065,10 +1758,10 @@ AC_DEFUN([AM_PATH_WXRC],
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.3], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -1084,7 +1777,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.3])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -1451,6 +2144,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -1559,7 +2258,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
@@ -1567,7 +2307,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -1814,6 +2553,70 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
diff --git a/asc.suse.spec b/asc.suse.spec
index 3a3546c..98f4f8a 100644
--- a/asc.suse.spec
+++ b/asc.suse.spec
@@ -22,7 +22,7 @@ Name:           asc
 BuildRequires:  SDL-devel SDL_image-devel SDL_mixer-devel SDL_sound-devel SDLmm-devel gcc-c++ libsigc++12-devel physfs-devel
 BuildRequires:  boost-devel freetype2-devel libexpat-devel libjpeg-devel pkg-config update-desktop-files zip lua-devel wxGTK-devel 
 Summary:        Advanced Strategic Command--Turn-Based Strategy Game
-Version:        2.6.0.0
+Version:        2.6.1.0
 Release:        1.1
 License:        GPL v2 or later
 Group:          Amusements/Games/Strategy/Turn Based
diff --git a/compile b/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# This program 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, or (at your option)
+# any later version.
+#
+# This program 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.h.in b/config.h.in
index 2ae5c20..e3105e6 100644
--- a/config.h.in
+++ b/config.h.in
@@ -31,9 +31,6 @@
 /* Define to 1 if you have a functional curl library. */
 #undef HAVE_LIBCURL
 
-/* Define to 1 if you have the `expat' library (-lexpat). */
-#undef HAVE_LIBEXPAT
-
 /* Define to 1 if you have the `physfs' library (-lphysfs). */
 #undef HAVE_LIBPHYSFS
 
diff --git a/configure b/configure
index c846795..a388026 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for asc 2.6.0.0.
+# Generated by GNU Autoconf 2.69 for asc 2.6.1.0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='asc'
 PACKAGE_TARNAME='asc'
-PACKAGE_VERSION='2.6.0.0'
-PACKAGE_STRING='asc 2.6.0.0'
+PACKAGE_VERSION='2.6.1.0'
+PACKAGE_STRING='asc 2.6.1.0'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -673,6 +673,9 @@ VORBIS_LIBS
 VORBIS_CFLAGS
 OGG_LIBS
 OGG_CFLAGS
+WX_VERSION_MICRO
+WX_VERSION_MINOR
+WX_VERSION_MAJOR
 WX_RESCOMP
 WX_VERSION
 WX_LIBS_STATIC
@@ -1428,7 +1431,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures asc 2.6.0.0 to adapt to many kinds of systems.
+\`configure' configures asc 2.6.1.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1498,7 +1501,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of asc 2.6.0.0:";;
+     short | recursive ) echo "Configuration of asc 2.6.1.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1660,7 +1663,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-asc configure 2.6.0.0
+asc configure 2.6.1.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2354,7 +2357,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by asc $as_me 2.6.0.0, which was
+It was created by asc $as_me 2.6.1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2705,7 +2708,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 ac_config_headers="$ac_config_headers config.h"
 
-am__api_version='1.13'
+am__api_version='1.14'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -3220,7 +3223,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='asc'
- VERSION='2.6.0.0'
+ VERSION='2.6.1.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3271,6 +3274,47 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
@@ -4359,6 +4403,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 depcc="$CC"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -6729,7 +6832,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -6754,7 +6857,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 		;;
 	    esac
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -6773,7 +6879,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -12424,6 +12533,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 depcc="$CC"   am_compiler_list=
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
@@ -17618,6 +17786,7 @@ fi
 
 reqwx=2.4.0
 
+
     if test x${WX_CONFIG_NAME+set} != xset ; then
      WX_CONFIG_NAME=wx-config
   fi
@@ -17701,7 +17870,7 @@ $as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
 $as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
     fi
 
-    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args  "
+            WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args "
 
     WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
     wx_config_major_version=`echo $WX_VERSION | \
@@ -17740,14 +17909,13 @@ $as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
 
 
     if test -n "$wx_ver_ok"; then
-
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
 $as_echo "yes (version $WX_VERSION)" >&6; }
-      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs `
 
                               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
 $as_echo_n "checking for wxWidgets static library... " >&6; }
-      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs  2>/dev/null`
       if test "x$WX_LIBS_STATIC" = "x"; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -17790,16 +17958,16 @@ $as_echo "yes" >&6; }
       fi
 
       if test "x$wx_has_cppflags" = x ; then
-                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags `
          WX_CPPFLAGS=$WX_CFLAGS
          WX_CXXFLAGS=$WX_CFLAGS
 
          WX_CFLAGS_ONLY=$WX_CFLAGS
          WX_CXXFLAGS_ONLY=$WX_CFLAGS
       else
-                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
-         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags `
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags `
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags `
 
          WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
          WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
@@ -17823,7 +17991,32 @@ $as_echo "no (version $WX_VERSION is not new enough)" >&6; }
        WX_LIBS=""
        WX_LIBS_STATIC=""
        WX_RESCOMP=""
-       :
+
+       if test ! -z ""; then
+
+          wx_error_message="
+    The configuration you asked for $PACKAGE_NAME requires a wxWidgets
+    build with the following settings:
+
+    but such build is not available.
+
+    To see the wxWidgets builds available on this system, please use
+    'wx-config --list' command. To use the default build, returned by
+    'wx-config --selected-config', use the options with their 'auto'
+    default values."
+
+       fi
+
+       wx_error_message="
+    The requested wxWidgets build couldn't be found.
+    $wx_error_message
+
+    If you still get this error, then check that 'wx-config' is
+    in path, the directory where wxWidgets libraries are installed
+    (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH
+    or equivalent variable and wxWidgets version is $reqwx or above."
+
+       as_fn_error $? "$wx_error_message" "$LINENO" 5
 
     fi
   else
@@ -17849,6 +18042,14 @@ $as_echo "no (version $WX_VERSION is not new enough)" >&6; }
 
 
 
+      WX_VERSION_MAJOR="$wx_config_major_version"
+  WX_VERSION_MINOR="$wx_config_minor_version"
+  WX_VERSION_MICRO="$wx_config_micro_version"
+
+
+
+
+
 if test "$wxWin" != 1; then
 	as_fn_error $? "
 		wxWidgets $reqwx or later must be installed on your system.
@@ -18552,12 +18753,12 @@ if test -n "$SIGC_CFLAGS"; then
     pkg_cv_SIGC_CFLAGS="$SIGC_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sigc++-1.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "sigc++-1.2") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "sigc++-2.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SIGC_CFLAGS=`$PKG_CONFIG --cflags "sigc++-1.2" 2>/dev/null`
+  pkg_cv_SIGC_CFLAGS=`$PKG_CONFIG --cflags "sigc++-2.0" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -18569,12 +18770,12 @@ if test -n "$SIGC_LIBS"; then
     pkg_cv_SIGC_LIBS="$SIGC_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sigc++-1.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "sigc++-1.2") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "sigc++-2.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SIGC_LIBS=`$PKG_CONFIG --libs "sigc++-1.2" 2>/dev/null`
+  pkg_cv_SIGC_LIBS=`$PKG_CONFIG --libs "sigc++-2.0" 2>/dev/null`
 		      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -18595,14 +18796,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        SIGC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sigc++-1.2" 2>&1`
+	        SIGC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sigc++-2.0" 2>&1`
         else
-	        SIGC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sigc++-1.2" 2>&1`
+	        SIGC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sigc++-2.0" 2>&1`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$SIGC_PKG_ERRORS" >&5
 
-	as_fn_error $? "Package requirements (sigc++-1.2) were not met:
+	as_fn_error $? "Package requirements (sigc++-2.0) were not met:
 
 $SIGC_PKG_ERRORS
 
@@ -18791,13 +18992,12 @@ else
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5
-$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; }
-if ${ac_cv_lib_expat_XML_ParserCreate+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing XML_ParserCreate" >&5
+$as_echo_n "checking for library containing XML_ParserCreate... " >&6; }
+if ${ac_cv_search_XML_ParserCreate+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lexpat  $LIBS"
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -18816,23 +19016,35 @@ return XML_ParserCreate ();
   return 0;
 }
 _ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_expat_XML_ParserCreate=yes
-else
-  ac_cv_lib_expat_XML_ParserCreate=no
+for ac_lib in '' expat; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_search_XML_ParserCreate=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+    conftest$ac_exeext
+  if ${ac_cv_search_XML_ParserCreate+:} false; then :
+  break
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5
-$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; }
-if test "x$ac_cv_lib_expat_XML_ParserCreate" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEXPAT 1
-_ACEOF
+done
+if ${ac_cv_search_XML_ParserCreate+:} false; then :
 
-  LIBS="-lexpat $LIBS"
+else
+  ac_cv_search_XML_ParserCreate=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_XML_ParserCreate" >&5
+$as_echo "$ac_cv_search_XML_ParserCreate" >&6; }
+ac_res=$ac_cv_search_XML_ParserCreate
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 else
 
@@ -20436,7 +20648,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by asc $as_me 2.6.0.0, which was
+This file was extended by asc $as_me 2.6.1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20502,7 +20714,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-asc config.status 2.6.0.0
+asc config.status 2.6.1.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index ff57b86..a602197 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT(asc,2.6.0.0)
+AC_INIT(asc,2.6.1.0)
 
 AM_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE
@@ -371,7 +371,7 @@ AC_SUBST(BOOST_LIBS)
 
 
 dnl SigC++
-PKG_CHECK_MODULES(SIGC, sigc++-1.2)
+PKG_CHECK_MODULES(SIGC, sigc++-2.0)
 
 AC_SUBST(SIGC_LIBS)
 AC_SUBST(SIGC_CFLAGS)
@@ -426,7 +426,7 @@ fi
 
 
 AC_CHECK_HEADER(expat.h,,AC_LIB_MISSING( Expat, http://expat.sourceforge.net))
-AC_CHECK_LIB(expat, XML_ParserCreate,,AC_LIB_MISSING( Expat, http://expat.sourceforge.net))
+AC_SEARCH_LIBS(XML_ParserCreate,expat,,AC_LIB_MISSING( Expat, http://expat.sourceforge.net))
 
 AC_CHECK_PROG(zipfound,zip,yes,no)
 if test $zipfound != yes; then 
diff --git a/data/Makefile b/data/Makefile
index 6610500..4557b3d 100644
--- a/data/Makefile
+++ b/data/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # data/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = data
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -201,25 +201,25 @@ am__relativize = \
   done; \
   reldir="$$dir2"
 pkgdatadir = $(datadir)/games/asc
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -235,8 +235,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -245,8 +245,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -256,14 +256,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -279,10 +279,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -297,36 +297,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/data
-abs_srcdir = /home/martin/asc/robot/asc/data
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/data
+abs_srcdir = /home/martin/asc/v2/amd64/data
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -336,13 +339,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -352,17 +355,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -373,7 +376,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
@@ -738,7 +741,7 @@ uninstall-am: uninstall-pkgdataDATA
 include main.mak
 
 main.ascdat: main.d
-	cd $(srcdir) && touch main.d && /home/martin/asc/robot/asc/source/tools/linux/asc_mount \@files.txt /home/martin/asc/robot/asc/data/main.ascdat 
+	cd $(srcdir) && touch main.d && /home/martin/asc/v2/amd64/source/tools/linux/asc_mount \@files.txt /home/martin/asc/v2/amd64/data/main.ascdat 
 
 clean-local:
 	rm -f main.ascdat main.d 
diff --git a/data/Makefile.in b/data/Makefile.in
index 0c77d04..864f89a 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -322,6 +322,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/data/campaign/standard/asc008.map.en_US b/data/campaign/standard/asc008.map.en_US
index fc8dd5f..bef77f6 100644
--- a/data/campaign/standard/asc008.map.en_US
+++ b/data/campaign/standard/asc008.map.en_US
@@ -1,6 +1,6 @@
 map = asc.getLoadingMap() 
 --- ===== 170  ======= 
-message = [[Thunderlance HQ, Rogul:#crt##crt#Commander, we have found a hoovercraft. This vehicle is damaged and without fuel. The hoovercraft seems to have been for transfering workers to a little island in the west. Perhaps we will find some tools their to rebuild the bridge across the river.#crt##crt#Thor Menser,#crt#Thunderlance Military Advisor #crt#]]
+message = [[Thunderlance HQ, Rogul:#crt##crt#Commander, we have found a hoovercraft. This vehicle is damaged and without fuel. The hoovercraft seems to have been for transferring workers to a little island in the west. Perhaps we will find some tools their to rebuild the bridge across the river.#crt##crt#Thor Menser,#crt#Thunderlance Military Advisor #crt#]]
 asc.setLocalizedEventMessage( map, 170, message )
 
 --- ===== 88  ======= 
diff --git a/data/dialog/Makefile b/data/dialog/Makefile
index 75c2c4a..ec6e890 100644
--- a/data/dialog/Makefile
+++ b/data/dialog/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # data/dialog/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = data/dialog
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -142,25 +142,25 @@ DATA = $(pkgdata_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkgdatadir = $(datadir)/games/asc
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -176,8 +176,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -186,8 +186,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -197,14 +197,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -220,10 +220,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -238,36 +238,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/data/dialog
-abs_srcdir = /home/martin/asc/robot/asc/data/dialog
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/data/dialog
+abs_srcdir = /home/martin/asc/v2/amd64/data/dialog
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -277,13 +280,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -293,17 +296,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -314,7 +317,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
@@ -549,7 +552,7 @@ uninstall-am: uninstall-pkgdataDATA
 
 
 asc2_dlg.zip: $(srcdir)/asc2_dlg.theme $(srcdir)/asc/*.bmp $(srcdir)/asc/*.ttf $(srcdir)/asc/*.png
-	cd $(srcdir) && zip -9 -r /home/martin/asc/robot/asc/data/dialog/asc2_dlg.zip asc2_dlg.theme ./asc/* -i *.png *.bmp *.ttf *.theme
+	cd $(srcdir) && zip -9 -r /home/martin/asc/v2/amd64/data/dialog/asc2_dlg.zip asc2_dlg.theme ./asc/* -i *.png *.bmp *.ttf *.theme
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/data/dialog/Makefile.in b/data/dialog/Makefile.in
index 3da42e8..c3255f4 100644
--- a/data/dialog/Makefile.in
+++ b/data/dialog/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -263,6 +263,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/data/icons/Makefile b/data/icons/Makefile
index 34e48c9..c94adc0 100644
--- a/data/icons/Makefile
+++ b/data/icons/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # data/icons/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = data/icons
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -112,25 +112,25 @@ am__can_run_installinfo = \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -146,8 +146,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -156,8 +156,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -167,14 +167,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -190,10 +190,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -208,36 +208,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/data/icons
-abs_srcdir = /home/martin/asc/robot/asc/data/icons
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/data/icons
+abs_srcdir = /home/martin/asc/v2/amd64/data/icons
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -247,13 +250,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -263,17 +266,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -284,7 +287,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
diff --git a/data/icons/Makefile.in b/data/icons/Makefile.in
index f4578b8..a0f5f72 100644
--- a/data/icons/Makefile.in
+++ b/data/icons/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/data/music/Makefile b/data/music/Makefile
index 730ec15..b0d6178 100644
--- a/data/music/Makefile
+++ b/data/music/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # data/music/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = data/music
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -142,25 +142,25 @@ DATA = $(pkgdata_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkgdatadir = $(datadir)/games/asc/music
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -176,8 +176,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -186,8 +186,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -197,14 +197,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -220,10 +220,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -238,36 +238,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/data/music
-abs_srcdir = /home/martin/asc/robot/asc/data/music
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/data/music
+abs_srcdir = /home/martin/asc/v2/amd64/data/music
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -277,13 +280,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -293,17 +296,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -314,7 +317,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
diff --git a/data/music/Makefile.in b/data/music/Makefile.in
index 7bebba5..45b6a2c 100644
--- a/data/music/Makefile.in
+++ b/data/music/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -263,6 +263,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/data/pbpeditor-icon.png b/data/pbpeditor-icon.png
new file mode 100644
index 0000000..3eef8c7
Binary files /dev/null and b/data/pbpeditor-icon.png differ
diff --git a/data/sounds/Makefile b/data/sounds/Makefile
index 6d5ad28..42cbc5a 100644
--- a/data/sounds/Makefile
+++ b/data/sounds/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # data/sounds/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = data/sounds
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -112,25 +112,25 @@ am__can_run_installinfo = \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -146,8 +146,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -156,8 +156,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -167,14 +167,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -190,10 +190,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -208,36 +208,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/data/sounds
-abs_srcdir = /home/martin/asc/robot/asc/data/sounds
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/data/sounds
+abs_srcdir = /home/martin/asc/v2/amd64/data/sounds
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -247,13 +250,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -263,17 +266,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -284,7 +287,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
diff --git a/data/sounds/Makefile.in b/data/sounds/Makefile.in
index a371593..b823ac2 100644
--- a/data/sounds/Makefile.in
+++ b/data/sounds/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/data/unittests/unittest-pathfinding.map b/data/unittests/unittest-pathfinding.map
index 81d1c43..40ef9a8 100755
Binary files a/data/unittests/unittest-pathfinding.map and b/data/unittests/unittest-pathfinding.map differ
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 1cc9537..7ef3ed9 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/doc/manpages/Makefile.in b/doc/manpages/Makefile.in
index 8bee31c..5dc8dd8 100644
--- a/doc/manpages/Makefile.in
+++ b/doc/manpages/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -264,6 +264,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/doc/unitguide/Makefile.in b/doc/unitguide/Makefile.in
index 29d2a2e..2184115 100644
--- a/doc/unitguide/Makefile.in
+++ b/doc/unitguide/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/doc/unitguide/output/Makefile.in b/doc/unitguide/output/Makefile.in
index 65d50c2..bd51eea 100644
--- a/doc/unitguide/output/Makefile.in
+++ b/doc/unitguide/output/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/extra-data/Makefile.in b/extra-data/Makefile.in
index 4829746..d70799e 100644
--- a/extra-data/Makefile.in
+++ b/extra-data/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -263,6 +263,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/installer/Makefile.am b/installer/Makefile.am
index 371e010..af181c7 100644
--- a/installer/Makefile.am
+++ b/installer/Makefile.am
@@ -1,6 +1,7 @@
 CLEANFILES = *.exe *.tar.bz2 licdata.txt
 
 installer: 
+	svn update @inst_win32_build_dir@
 	cat $(abs_top_srcdir)/COPYING | unix2dos > licdata.txt
 	makensis asc.nsi
 
diff --git a/installer/Makefile.in b/installer/Makefile.in
index f22097b..7e2b54f 100644
--- a/installer/Makefile.in
+++ b/installer/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -495,6 +498,7 @@ uninstall-am:
 
 
 installer: 
+	svn update @inst_win32_build_dir@
 	cat $(abs_top_srcdir)/COPYING | unix2dos > licdata.txt
 	makensis asc.nsi
 
diff --git a/installer/asc.nsi.in b/installer/asc.nsi.in
index adaa118..bb595d5 100755
--- a/installer/asc.nsi.in
+++ b/installer/asc.nsi.in
@@ -74,6 +74,7 @@ Section "ASC main program (required)"
   File "@inst_win32_DLL_dir@/libFLAC.dll"
   File "@inst_win32_DLL_dir@/SDL_image.dll"
   File "@inst_win32_DLL_dir@/sdl_sound.dll"
+  File "@inst_win32_DLL_dir@/sigc-vc90-2_0.dll"
   File "@inst_win32_DLL_dir@/vorbisfile.dll"
   File "@inst_win32_DLL_dir@/libmikmod-2.dll"
   File "@inst_win32_DLL_dir@/libcurl.dll"
diff --git a/ltmain.sh b/ltmain.sh
index 3825a2a..a356aca 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.3ubuntu1
+#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.3ubuntu1"
+VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
 TIMESTAMP=""
 package_revision=1.3337
 
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 02b4bbe..d7c043f 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1333,7 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 		;;
 	    esac
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1352,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
diff --git a/missing b/missing
index cdea514..db98974 100755
--- a/missing
+++ b/missing
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff --git a/source/ASCStringHelpers.h b/source/ASCStringHelpers.h
index 693df38..ae0f046 100644
--- a/source/ASCStringHelpers.h
+++ b/source/ASCStringHelpers.h
@@ -12,6 +12,8 @@
 #include <stdio.h>
 #include <ctype.h>
 
+#include <boost/scoped_array.hpp>
+
 using std::auto_ptr;
 using std::string;
 
@@ -362,8 +364,8 @@ inline int ASCStringHelpers::_Stricmp ( const charT* pS1, const charT* pS2 )
 
     #ifdef ASC_UNICODE
         // auto_ptr will release the memorey if an exception is raised
-        auto_ptr< charT > l_autopS1 ( new charT [ _Strlen ( pS1 ) + sizeof ( charT ) ] );
-        auto_ptr< charT > l_autopS2 ( new charT [ _Strlen ( pS2 ) + sizeof ( charT ) ] );
+        boost::scoped_array< charT > l_autopS1 ( new charT [ _Strlen ( pS1 ) + sizeof ( charT ) ] );
+        boost::scoped_array< charT > l_autopS2 ( new charT [ _Strlen ( pS2 ) + sizeof ( charT ) ] );
 
         charT* l_pS1 = l_autopS1.get();
         charT* l_pS2 = l_autopS2.get();
diff --git a/source/Makefile.in b/source/Makefile.in
index ff84990..0edd93f 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -292,6 +292,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/actions/Makefile.in b/source/actions/Makefile.in
index 381196c..b3c1d31 100644
--- a/source/actions/Makefile.in
+++ b/source/actions/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -316,6 +316,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/actions/actioncontainer.cpp b/source/actions/actioncontainer.cpp
index c937cb7..7e59df1 100644
--- a/source/actions/actioncontainer.cpp
+++ b/source/actions/actioncontainer.cpp
@@ -26,9 +26,9 @@
 #include "../basestrm.h"
 #include "../util/messaginghub.h"
 
-SigC::Signal2<void,GameMap*,const Command&> ActionContainer::postActionExecution;
-SigC::Signal2<void,GameMap*,Command&> ActionContainer::commitCommand;
-SigC::Signal1<void,GameMap*> ActionContainer::actionListChanged;
+sigc::signal<void,GameMap*,const Command&> ActionContainer::postActionExecution;
+sigc::signal<void,GameMap*,Command&> ActionContainer::commitCommand;
+sigc::signal<void,GameMap*> ActionContainer::actionListChanged;
 
 
 ActionContainer::ActionContainer( GameMap* gamemap )
diff --git a/source/actions/actioncontainer.h b/source/actions/actioncontainer.h
index 5e0213c..c798760 100644
--- a/source/actions/actioncontainer.h
+++ b/source/actions/actioncontainer.h
@@ -82,13 +82,13 @@ class ActionContainer {
       void getActionDescriptions( vector<ASCString>& list );
       
       //! signales an executed Command. The command can still be undone after postActionExecution
-      static SigC::Signal2<void,GameMap*,const Command&> postActionExecution;
+      static sigc::signal<void,GameMap*,const Command&> postActionExecution;
       
       /** The command, which has already been executed, is finally commited and will not be undone any more
           This may be used to store it in the replay structure  */
-      static SigC::Signal2<void,GameMap*,Command&> commitCommand;
+      static sigc::signal<void,GameMap*,Command&> commitCommand;
       
-      static SigC::Signal1<void,GameMap*> actionListChanged;
+      static sigc::signal<void,GameMap*> actionListChanged;
       
       ~ActionContainer();
 };
diff --git a/source/actions/moveunitcommand.cpp b/source/actions/moveunitcommand.cpp
index 42b6371..694c716 100644
--- a/source/actions/moveunitcommand.cpp
+++ b/source/actions/moveunitcommand.cpp
@@ -89,7 +89,7 @@ void MoveUnitCommand::changeCoordinates( const MapCoodinateVector& delta )
 
 MoveUnitCommand::MoveUnitCommand( GameMap* map ) : UnitCommand( map ) 
 {
-   map->sigCoordinateShift.connect( SigC::slot( *this, &MoveUnitCommand::changeCoordinates ));
+   map->sigCoordinateShift.connect( sigc::mem_fun( *this, &MoveUnitCommand::changeCoordinates ));
 }
 
 
@@ -98,7 +98,7 @@ MoveUnitCommand :: MoveUnitCommand ( Vehicle* unit )
    : UnitCommand ( unit ), flags(0), verticalDirection(0), multiTurnMovement(false)
 {
    if ( unit )
-      unit->getMap()->sigCoordinateShift.connect( SigC::slot( *this, &MoveUnitCommand::changeCoordinates ));
+      unit->getMap()->sigCoordinateShift.connect( sigc::mem_fun( *this, &MoveUnitCommand::changeCoordinates ));
 }
 
 
diff --git a/source/actions/moveunitcommand.h b/source/actions/moveunitcommand.h
index ccf2095..9cf9c26 100644
--- a/source/actions/moveunitcommand.h
+++ b/source/actions/moveunitcommand.h
@@ -33,7 +33,7 @@
 #include "../astar2.h"
 
 
-class MoveUnitCommand : public UnitCommand, public TaskInterface, public SigC::Object {
+class MoveUnitCommand : public UnitCommand, public TaskInterface, public sigc::trackable {
    
    public:
       static bool avail ( Vehicle* eht );
diff --git a/source/actions/servicing.cpp b/source/actions/servicing.cpp
index 003e58a..d58fe4c 100644
--- a/source/actions/servicing.cpp
+++ b/source/actions/servicing.cpp
@@ -308,8 +308,8 @@ bool ResourceWatch::getResources( Resources res )
 ResourceTransferrable::ResourceTransferrable( int resource, ResourceWatch& src, ResourceWatch& dst, bool isExchangable  ) 
    : Transferrable( src, dst ), resourceType ( resource ), exchangable( isExchangable )
       {
-         source.sigChanged.connect( SigC::slot( *this, &ResourceTransferrable::srcChanged ));
-         dest.sigChanged.connect( SigC::slot( *this, &ResourceTransferrable::dstChanged ));
+         source.sigChanged.connect( sigc::mem_fun( *this, &ResourceTransferrable::srcChanged ));
+         dest.sigChanged.connect( sigc::mem_fun( *this, &ResourceTransferrable::dstChanged ));
       };
       
       ASCString ResourceTransferrable::getName() 
diff --git a/source/actions/servicing.h b/source/actions/servicing.h
index fb8d487..696ddc2 100644
--- a/source/actions/servicing.h
+++ b/source/actions/servicing.h
@@ -35,7 +35,7 @@ class ResourceWatch {
    public:
       ResourceWatch( ContainerBase* container );
       ContainerBase* getContainer();
-      SigC::Signal1<void, int> sigChanged;
+      sigc::signal<void, int> sigChanged;
 
       const Resources amount();
       const Resources avail();
@@ -45,7 +45,7 @@ class ResourceWatch {
       bool getResources( Resources res );
 };
 
-class Transferrable: public SigC::Object {
+class Transferrable: public sigc::trackable {
    protected:
       ResourceWatch& source;
       ResourceWatch& dest;
@@ -80,8 +80,8 @@ class Transferrable: public SigC::Object {
       bool setDestAmount( long amount );
       void showAll();
       
-      SigC::Signal1<void,const std::string&> sigSourceAmount;
-      SigC::Signal1<void,const std::string&> sigDestAmount;
+      sigc::signal<void,const std::string&> sigSourceAmount;
+      sigc::signal<void,const std::string&> sigDestAmount;
       
       int setAmount( ContainerBase* target, int newamount );
       void fill( ContainerBase* target );
@@ -148,7 +148,7 @@ class ServiceTargetSearcher : protected ServiceChecker {
 
 
 
-class TransferHandler : public SigC::Object, protected ServiceChecker {
+class TransferHandler : public sigc::trackable, protected ServiceChecker {
    private:
       ResourceWatch sourceRes;
       ResourceWatch destRes;
@@ -182,7 +182,7 @@ class TransferHandler : public SigC::Object, protected ServiceChecker {
       void emptyDest();
       bool commit( const Context& context );
 
-      SigC::Signal0<bool> updateRanges;
+      sigc::signal<bool> updateRanges;
       ~TransferHandler();
 };
 
diff --git a/source/ai/Makefile.in b/source/ai/Makefile.in
index dadd344..269dd52 100644
--- a/source/ai/Makefile.in
+++ b/source/ai/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -283,6 +283,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/ai/base.cpp b/source/ai/base.cpp
index 6fadb18..614a24a 100644
--- a/source/ai/base.cpp
+++ b/source/ai/base.cpp
@@ -159,13 +159,13 @@ void AI::removeDisplay()
 typedef Loki::Functor<void> CloseScreenCallback;
 
 
-class AI_KeyboardWatcher : public SigC::Object {
+class AI_KeyboardWatcher : public sigc::trackable {
       CloseScreenCallback callback;
       MapDisplayPG::LockDisplay* lock;
       PG_Widget* w;
       MainScreenWidget::StandardActionLocker menuLocker;
 
-      bool keyPressed( const SDL_KeyboardEvent* key )
+      bool keyPressed( const PG_MessageObject* object , const SDL_KeyboardEvent* key )
       {
          if ( key->keysym.sym == SDLK_ESCAPE  ) {
             callback();
@@ -185,9 +185,9 @@ class AI_KeyboardWatcher : public SigC::Object {
          // w = new PG_Widget(NULL);
          // w->SetCapture();
          this->callback = callback;
-         // w->sigKeyDown.connect( SigC::slot( *this, &AI_KeyboardWatcher::keyPressed ));
+         // w->sigKeyDown.connect( sigc::mem_fun( *this, &AI_KeyboardWatcher::keyPressed ));
          if ( PG_Application::GetApp() )
-            PG_Application::GetApp()->sigKeyDown.connect( SigC::slot( *this, &AI_KeyboardWatcher::keyPressed ));
+            PG_Application::GetApp()->sigKeyDown.connect( sigc::mem_fun( *this, &AI_KeyboardWatcher::keyPressed ));
          
       };
 
diff --git a/source/ai/misc.cpp b/source/ai/misc.cpp
index f86a1b5..64fb00c 100644
--- a/source/ai/misc.cpp
+++ b/source/ai/misc.cpp
@@ -389,7 +389,7 @@ AI::AiResult  AI :: container ( ContainerBase* cb )
             AStar3D ast ( getMap(), *i, false, (*i)->getMovement() );
             ast.findAllAccessibleFields ();
 
-            getAttacks ( ast, *i, tv, 0 );
+            getAttacks ( ast, *i, tv, 0, false, false );
 
             if ( tv.size() ) {
                AiResult res = executeMoveAttack ( *i, tv );
@@ -402,7 +402,7 @@ AI::AiResult  AI :: container ( ContainerBase* cb )
                AStar3D ast ( getMap(), *i, false, (*i)->maxMovement()*3 );
                ast.findAllAccessibleFields ();
 
-               getAttacks ( ast, *i, tv, 0 );
+               getAttacks ( ast, *i, tv, 0, false, false );
 
                if ( tv.size() ) {
                   MoveVariant* mv = *max_element( tv.begin(), tv.end(), moveVariantComp );
diff --git a/source/ai/tactics.cpp b/source/ai/tactics.cpp
index 15ead8d..83111e2 100644
--- a/source/ai/tactics.cpp
+++ b/source/ai/tactics.cpp
@@ -273,6 +273,8 @@ AI::AiResult AI::executeMoveAttack ( Vehicle* veh, TargetVector& tv )
 
    MoveVariant* mv = *max_element( tv.begin(), tv.end(), moveVariantComp );
 
+   int targetID = mv->enemy->networkid;
+
    if ( mv->movePos != veh->getPosition3D() ) {
       VisibilityStates org_vision =  getVision() ;
       setVision(visible_now);
@@ -300,6 +302,12 @@ AI::AiResult AI::executeMoveAttack ( Vehicle* veh, TargetVector& tv )
    if ( veh->attacked )
       return result;
 
+   if ( !getMap()->getUnit( targetID )) {
+       // can happen if the unit that was selected for being attacked
+       // had reactionfire enabled and Kamikaze, which destroyed it.
+       return result;
+   }
+
    auto_ptr<AttackCommand> va (new AttackCommand( veh ));
    ActionResult res = va->searchTargets();
    if ( !res.successful() )
diff --git a/source/asc-mainscreen.cpp b/source/asc-mainscreen.cpp
index f9ca66a..cebb573 100644
--- a/source/asc-mainscreen.cpp
+++ b/source/asc-mainscreen.cpp
@@ -108,7 +108,7 @@ void Menu::addfield( const char* name )
    Add ( s, currentMenu );
 #endif
 
-   currentMenu->sigSelectMenuItem.connect( SigC::slot( *this, &Menu::execAction ));
+   currentMenu->sigSelectMenuItem.connect( sigc::mem_fun( *this, &Menu::execAction ));
 }
 
 void Menu::addbutton( const char* name, int id )
@@ -248,6 +248,7 @@ void Menu::setup()
    addbutton ( "test messages", ua_testMessages );
    addbutton ( "view font", ua_viewfont );
    addbutton ( "memory footprint", ua_getMemoryFootprint );
+   addbutton ( "show event status", ua_eventInfo );
    currentMenu->addSeparator();
    addbutton ( "clear image cache", ua_clearImageCache );
    addbutton ( "reload dialog theme", ua_reloadDlgTheme );
@@ -293,7 +294,7 @@ Menu::Menu ( PG_Widget *parent, const PG_Rect &rect)
 
 
 
-class UnitMovementRangeLayer : public MapLayer, public SigC::Object {
+class UnitMovementRangeLayer : public MapLayer, public sigc::trackable {
    Surface& icon;
    GameMap* gamemap;
 
@@ -365,7 +366,7 @@ class UnitMovementRangeLayer : public MapLayer, public SigC::Object {
       }
       
       UnitMovementRangeLayer() : icon ( IconRepository::getIcon( "markedfield-blue.png")), gamemap(NULL) {
-         cursorMoved.connect( SigC::slot( *this, &UnitMovementRangeLayer::reset ));
+         cursorMoved.connect( sigc::mem_fun( *this, &UnitMovementRangeLayer::reset ));
       }
 
       bool onLayer( int layer ) { return layer == 17; };
@@ -478,7 +479,7 @@ ASC_MainScreenWidget::ASC_MainScreenWidget( PG_Application& application )
 
    mapDisplay->addMapLayer( new VisibilityLayer(), "visibilityvalue" );
 
-   mapDisplay->layerChanged.connect( SigC::slot( *this, &ASC_MainScreenWidget :: mapLayerChanged));
+   mapDisplay->layerChanged.connect( sigc::mem_fun( *this, &ASC_MainScreenWidget :: mapLayerChanged));
 
    // making a copy, because the activateMapLayer will modify the visibleMapLayer object
    vector<ASCString> layer = CGameOptions::Instance()->visibleMapLayer;
diff --git a/source/ascstring.h b/source/ascstring.h
index 92334ec..bca8b77 100644
--- a/source/ascstring.h
+++ b/source/ascstring.h
@@ -6,6 +6,7 @@
 #include "ASCStringHelpers.h"
 #include <stdexcept>      // for range_error
 #include <stdarg.h>
+#include <boost/scoped_array.hpp>
 
 using std::range_error;
 
@@ -197,7 +198,7 @@ inline ASCString::ASCString ( const ASCAdaptatorString& s )
 : ASCCharTString ()
 {
     // auto_ptr will release memory if an exception is raised
-    auto_ptr< charT > pE ( new charT [ s.length () + sizeof ( charT ) ] );
+    boost::scoped_array< charT > pE ( new charT [ s.length () + sizeof ( charT ) ] );
 
     size_t stNumCharConverted = ASCStringHelpers::_ConvertToCharT ( pE.get (), s.c_str(), s.length() );
     if ( stNumCharConverted != s.length() )
@@ -227,7 +228,7 @@ inline ASCString::ASCString ( const ASCAdaptatorString& s, size_type pos, size_t
     size_t stLen = n - pos;
 
     // auto_ptr will release memory if an exception is raised
-    auto_ptr< charT > pE ( new charT [ stLen + sizeof ( charT ) ] );
+    boost::scoped_array< charT > pE ( new charT [ stLen + sizeof ( charT ) ] );
 
     const NoncharT* pCE = s.c_str ();
     size_t stNumCharConverted = ASCStringHelpers::_ConvertToCharT ( pE.get (), &pCE[ pos ], stLen );
diff --git a/source/astar2.cpp b/source/astar2.cpp
index f4695b8..dbf1d28 100644
--- a/source/astar2.cpp
+++ b/source/astar2.cpp
@@ -340,7 +340,7 @@ bool AStar3D::findPath( const MapCoordinate3D& B ) {
 
 bool AStar3D::findPath( const vector<MapCoordinate3D>& B ) {
 
-   MapCoordinate3D A = veh->getPosition3D();
+    MapCoordinate3D A = veh->getPosition3D();
 
     OpenContainer open;
 
@@ -456,36 +456,41 @@ bool AStar3D::findPath( const vector<MapCoordinate3D>& B ) {
               directions = d;
            }
 
-           if ( !operationLimiter || operationLimiter->allowMovement() )
-              for( int dci = 0; dci < 6; dci++ ) {
-
-                 HexDirection dir = HexDirection(directions[dci]);
-                 Node N2 = Node();
-                 if ( !initNode(N2, N_ptr, getNeighbouringFieldCoordinate(N_ptr->h, dir), B) )
-                    continue;
-                 if ( N2.canStop && actmap->getField(N2.h)->getContainer() && actmap->getField(N2.h)->vehicle != veh) {
-                     // there's an container on the field that can be entered. This means, the unit can't stop 'over' the container...
-                     if ( !veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  ) ) {
-                        N2.canStop = false;
-                        open.pushOrUpdate ( N2 );
-                     }
-
-                     // ... only inside it
-                     N2.canStop = true;
-                     N2.enterHeight = N2.h.getNumericalHeight() ;
-                     N2.h.setNumericalHeight (-1);
-                     // N2.hasAttacked = true;
-                     if (!visited.find(N2.h))
-                        open.pushOrUpdate ( N2 );
-                  } else
-                     if ( !veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  ) )
-                        open.pushOrUpdate ( N2 );
+           if ( !operationLimiter || operationLimiter->allowMovement() ) {
+
+              // this check is actually only necessary for the very first field in which the unit starts.
+              // The unit may not be able to leave it, for example if a ship is frozen in ice
+              if ( terrainaccessible ( oldFld, veh) || veh->getMap()->getgameparameter(cgp_movefrominvalidfields)) {
+
+                 for( int dci = 0; dci < 6; dci++ ) {
+                    HexDirection dir = HexDirection(directions[dci]);
+                    Node N2 = Node();
+                    if ( !initNode(N2, N_ptr, getNeighbouringFieldCoordinate(N_ptr->h, dir), B) )
+                       continue;
+                    if ( N2.canStop && actmap->getField(N2.h)->getContainer() && actmap->getField(N2.h)->vehicle != veh) {
+                        // there's an container on the field that can be entered. This means, the unit can't stop 'over' the container...
+                        if ( !veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  ) ) {
+                           N2.canStop = false;
+                           open.pushOrUpdate ( N2 );
+                        }
+
+                        // ... only inside it
+                        N2.canStop = true;
+                        N2.enterHeight = N2.h.getNumericalHeight() ;
+                        N2.h.setNumericalHeight (-1);
+                        // N2.hasAttacked = true;
+                        if (!visited.find(N2.h))
+                           open.pushOrUpdate ( N2 );
+                     } else
+                        if ( !veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  ) )
+                           open.pushOrUpdate ( N2 );
+                  }
               }
-
+           }
            // and now change the units' height. That's only possible on fields where the unit can stop it's movement
 
 
-              if ( (!operationLimiter || operationLimiter->allowHeightChange()) && !(veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  )) )
+           if ( (!operationLimiter || operationLimiter->allowHeightChange()) && !(veh->typ->hasFunction( ContainerBaseType::OnlyMoveToAndFromTransports  )) )
               if ( (fieldAccessible ( oldFld, veh, N_ptr->h.getBitmappedHeight() ) == 2 ) || actmap->getgameparameter( cgp_movefrominvalidfields) )
                  for ( int heightDelta = -1; heightDelta <= 1; heightDelta += 2 ) {
                     const VehicleType::HeightChangeMethod* hcm = veh->getHeightChange( heightDelta, N_ptr->h.getBitmappedHeight());
diff --git a/source/attack.cpp b/source/attack.cpp
index 5352a26..c113bee 100644
--- a/source/attack.cpp
+++ b/source/attack.cpp
@@ -28,6 +28,7 @@
 #include <stdio.h>
 #include <math.h>
 #include <iostream>
+#include <fstream>
 
 #include "typen.h"
 #include "buildingtype.h"
@@ -378,9 +379,30 @@ void tunitattacksunit :: setup ( Vehicle* &attackingunit, Vehicle* &attackedunit
 
 void log( const Vehicle* attacker, const Vehicle* attackee )
 {
-   if( CGameOptions::Instance()->logKillsToConsole ) 
-      std::cout << attackee->getOwner() << ";" << attacker->getOwner() << ";" << attackee->typ->id  << ";"
-            << attackee->typ->name  << ";" << attackee->experience << ";" << attacker->getMap()->time.turn() <<  "\n" ;
+   if( CGameOptions::Instance()->logKillsToConsole ) {
+      static bool header = false;
+      ASCString msg;
+      if ( !header ) {
+          msg += "# Attacked player; Attacking player ; attacked unit type id ; attacked unit type name ; attacked unit offensive experience ; turn \n";
+          header = true;
+      }
+
+      msg +=  ASCString::toString(attackee->getOwner()) + ";"
+            + ASCString::toString(attacker->getOwner()) + ";"
+            + ASCString::toString(attackee->typ->id)  + ";"
+            + attackee->typ->name  + ";"
+            + ASCString::toString(attackee->experience) + ";"
+            + ASCString::toString(attacker->getMap()->time.turn()) +  "\n" ;
+
+      std::cout << msg;
+#ifdef WIN32
+      ASCString filename = constructFileName( 0, "", "kills.txt");
+      std::ofstream outfile;
+
+      outfile.open( filename.c_str(), std::ios_base::app);
+      outfile << msg;
+#endif
+   }
 }
 
 void tunitattacksunit :: setresult( const Context& context )
@@ -407,15 +429,15 @@ void tunitattacksunit :: setresult( const Context& context )
       e->execute ( context );
    }
    
-   GameAction* f = new InflictDamage( _attackingunit, av.damage - _attackingunit->damage );
-   f->execute ( context );
-   
    if( av.damage >= 100 )
       log ( _attackedunit, _attackingunit );
 
    if( dv.damage >= 100 )
       log ( _attackingunit, _attackedunit );
    
+   GameAction* f = new InflictDamage( _attackingunit, av.damage - _attackingunit->damage );
+   f->execute ( context );
+
    GameAction* g = new InflictDamage( _attackedunit, dv.damage - _attackedunit->damage  );
    g->execute ( context );
    
diff --git a/source/basegfx.cpp b/source/basegfx.cpp
index 6920c94..aa0d157 100644
--- a/source/basegfx.cpp
+++ b/source/basegfx.cpp
@@ -1823,7 +1823,7 @@ void showtext ( const char* text, int x, int y, int textcol )
       } else 
          fontheight = activefontsettings.height;
 
-    const char* t = text;
+    const Uint8* t = (Uint8*) text;
     int length = 0;
 
     Uint8* characterpointer[1024];
diff --git a/source/basestrm.cpp b/source/basestrm.cpp
index 1c2326f..f3e47ac 100644
--- a/source/basestrm.cpp
+++ b/source/basestrm.cpp
@@ -1528,6 +1528,9 @@ void tanycompression :: close_compression ( void )
 
 tanycompression :: ~tanycompression ( )
 {
+   if ( tlzwstreamcompression::mode == tlzwstreamcompression::writing)
+       tlzwstreamcompression::close();
+
    if ( bzip_decompress ) {
       delete bzip_decompress;
       bzip_decompress = NULL;
@@ -1728,7 +1731,6 @@ tn_c_lzw_filestream :: ~tn_c_lzw_filestream()
       }
    } catch ( ... ) {
       displayLogMessage( 9, ASCString("~tn_c_lzw_filestream : caught exception") );
-      throw;
    }
 }
 
diff --git a/source/basestrm.h b/source/basestrm.h
index 183121f..a7588b3 100644
--- a/source/basestrm.h
+++ b/source/basestrm.h
@@ -262,7 +262,7 @@ class tlzwstreamcompression {
 
 
               /* decode buffer */
-              unsigned char *DecodeBuffer;
+              unsigned char *decodeBuffer;
               unsigned DecodeBufferSize ;
               
               unsigned int inchar;
diff --git a/source/campaignactionrecorder.cpp b/source/campaignactionrecorder.cpp
index 14bbd42..7971be3 100644
--- a/source/campaignactionrecorder.cpp
+++ b/source/campaignactionrecorder.cpp
@@ -52,9 +52,9 @@ void CampaignActionLogger::commitCommand( GameMap* map, Command& command )
 
 CampaignActionLogger::CampaignActionLogger ( GameMap* map ) : gamemap ( map ), commands(), writer( commands )
 {
-   gamemap->sigPlayerUserInteractionEnds.connect( SigC::slot( *this, &CampaignActionLogger::endTurn ));
-   gamemap->sigMapWon.connect( SigC::slot( *this, &CampaignActionLogger::mapWon ));
-   gamemap->actions.commitCommand.connect( SigC::slot( *this, &CampaignActionLogger::commitCommand ));
+   gamemap->sigPlayerUserInteractionEnds.connect( sigc::mem_fun( *this, &CampaignActionLogger::endTurn ));
+   gamemap->sigMapWon.connect( sigc::mem_fun( *this, &CampaignActionLogger::mapWon ));
+   gamemap->actions.commitCommand.connect( sigc::mem_fun( *this, &CampaignActionLogger::commitCommand ));
 }
 
 
diff --git a/source/campaignactionrecorder.h b/source/campaignactionrecorder.h
index 7e161cd..2f99921 100644
--- a/source/campaignactionrecorder.h
+++ b/source/campaignactionrecorder.h
@@ -42,7 +42,7 @@ class LuaCommandListRecorder : public LuaCommandListWriter<C> {
 };
 
 
-class CampaignActionLogger : public SigC::Object, public ActionRecorder {
+class CampaignActionLogger : public sigc::trackable, public ActionRecorder {
    
       void endTurn( Player& player );
       
diff --git a/source/clparser/Makefile.in b/source/clparser/Makefile.in
index 2b6e44f..9ffed46 100644
--- a/source/clparser/Makefile.in
+++ b/source/clparser/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/containerbase.cpp b/source/containerbase.cpp
index 2358ad2..bc90381 100644
--- a/source/containerbase.cpp
+++ b/source/containerbase.cpp
@@ -64,8 +64,8 @@ ASCString ContainerBase::getPrivateName() const
 }
 
 
-SigC::Signal1<void,ContainerBase*> ContainerBase :: anyContainerDestroyed;
-SigC::Signal1<void,ContainerBase*> ContainerBase :: anyContainerConquered;
+sigc::signal<void,ContainerBase*> ContainerBase :: anyContainerDestroyed;
+sigc::signal<void,ContainerBase*> ContainerBase :: anyContainerConquered;
 
 
 Resources ContainerBase :: putResource ( const Resources& res, bool queryonly, int scope, int player)
diff --git a/source/containerbase.h b/source/containerbase.h
index 378d8c6..5e677e8 100644
--- a/source/containerbase.h
+++ b/source/containerbase.h
@@ -125,7 +125,7 @@ class ContainerBase {
       //! removes ALL units from cargo
       void clearCargo();
 
-      SigC::Signal0<void> cargoChanged;
+      sigc::signal<void> cargoChanged;
 
       
       //! a name given by the user or the map creator
@@ -313,10 +313,10 @@ class ContainerBase {
       virtual int maxAmmo( int type ) const = 0 ;
 
 
-      SigC::Signal0<void> conquered;
-      SigC::Signal0<void> destroyed;
-      static SigC::Signal1<void,ContainerBase*> anyContainerDestroyed;
-      static SigC::Signal1<void,ContainerBase*> anyContainerConquered;
+      sigc::signal<void> conquered;
+      sigc::signal<void> destroyed;
+      static sigc::signal<void,ContainerBase*> anyContainerDestroyed;
+      static sigc::signal<void,ContainerBase*> anyContainerConquered;
 
       static int calcShadowDist( int binaryHeight );
 
diff --git a/source/dashboard.cpp b/source/dashboard.cpp
index 8e5b843..2d8619f 100644
--- a/source/dashboard.cpp
+++ b/source/dashboard.cpp
@@ -20,7 +20,7 @@
  *                                                                         *
  ***************************************************************************/
 
- #include "sigc++/retype.h"
+ #include "sigc++/adaptors/retype.h"
 
 #include "dashboard.h"
 #include "graphics/blitter.h"
@@ -88,7 +88,7 @@ class ExperienceOverview : public PG_Widget {
    public:
       ExperienceOverview( const PG_Point& pos, int exp = -1 ) : PG_Widget( NULL, getSize(pos), true )
       {
-         // PG_Application::GetApp()->sigMouseButtonUp.connect( SigC::slot( *this, &ExperienceOverview::QuitModal ));
+         // PG_Application::GetApp()->sigMouseButtonUp.connect( sigc::mem_fun( *this, &ExperienceOverview::QuitModal ));
       }
 
 
@@ -113,7 +113,7 @@ class ExperienceOverview : public PG_Widget {
 DashboardPanel::DashboardPanel ( PG_Widget *parent, const PG_Rect &r, const ASCString& panelName_, bool loadTheme = true )
    :LayoutablePanel ( parent, r, panelName_, loadTheme ), veh(NULL), bld(NULL)
 {
-   updateFieldInfo.connect ( SigC::slot( *this, &DashboardPanel::eval ));
+   updateFieldInfo.connect ( sigc::mem_fun( *this, &DashboardPanel::eval ));
    registerSpecialDisplay( "windarrow" );
 
    registerSpecialDisplay( "unitexp" );
@@ -125,13 +125,13 @@ DashboardPanel::DashboardPanel ( PG_Widget *parent, const PG_Rect &r, const ASCS
    registerSpecialDisplay( "showplayercolor1" );
    registerSpecialDisplay( "field_weather" );
 
-   ContainerBase::anyContainerDestroyed.connect( SigC::slot( *this, &DashboardPanel::containerDeleted ));
+   ContainerBase::anyContainerDestroyed.connect( sigc::mem_fun( *this, &DashboardPanel::containerDeleted ));
    
-   GameMap::sigMapDeletion.connect( SigC::slot( *this, &DashboardPanel::reset ));
+   GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &DashboardPanel::reset ));
 
    PG_Widget* w = parent->FindChild( "unitexp", true );
    if ( w )
-      w->sigMouseButtonDown.connect( SigC::slot( *this, &DashboardPanel::viewExperienceOverview ));
+      w->sigMouseButtonDown.connect( sigc::hide( sigc::hide( sigc::mem_fun( *this, &DashboardPanel::viewExperienceOverview ))));
 };
 
 bool DashboardPanel::viewExperienceOverview()
@@ -191,7 +191,7 @@ void DashboardPanel::registerSpecialDisplay( const ASCString& name )
 {
    SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( name, true ) );
    if ( sdw )
-     sdw->display.connect( SigC::slot( *this, &DashboardPanel::painter ));
+     sdw->display.connect( sigc::mem_fun( *this, &DashboardPanel::painter ));
 }
 
 
@@ -525,16 +525,16 @@ UnitInfoPanel::UnitInfoPanel (PG_Widget *parent, const PG_Rect &r ) : DashboardP
 {
    SpecialInputWidget* siw = dynamic_cast<SpecialInputWidget*>( FindChild( "weapinfo", true ) );
    if ( siw ) {
-      siw->sigMouseButtonDown.connect( SigC::slot( *this, &UnitInfoPanel::onClick ));
-      siw->sigMouseButtonUp.connect( SigC::slot( *this, &UnitInfoPanel::onClick ));
+      siw->sigMouseButtonDown.connect( sigc::mem_fun( *this, &UnitInfoPanel::onClick ));
+      siw->sigMouseButtonUp.connect( sigc::mem_fun( *this, &UnitInfoPanel::onClick ));
    }
 
    PG_Label* l = dynamic_cast<PG_Label*>( parent->FindChild( "unitname", true ) );
    if ( l ) {
-      l->sigMouseButtonUp.connect( SigC::slot( *this, &UnitInfoPanel::unitNaming ));
+      l->sigMouseButtonUp.connect( sigc::hide( sigc::hide( sigc::mem_fun( *this, &UnitInfoPanel::unitNaming ))));
    }
 
-   VehicleTypeSelectionItemFactory::showVehicleInfo.connect( SigC::slot( *this, &UnitInfoPanel::showUnitInfo ));
+   VehicleTypeSelectionItemFactory::showVehicleInfo.connect( sigc::mem_fun( *this, &UnitInfoPanel::showUnitInfo ));
 }
 
 void UnitInfoPanel::showUnitInfo( const VehicleType* vt )
@@ -649,7 +649,7 @@ class WeaponInfoLine: public PG_Image {
       {
          SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( name, true ) );
          if ( sdw )
-            sdw->display.connect( SigC::slot( *this, &WeaponInfoLine::painter ));
+            sdw->display.connect( sigc::mem_fun( *this, &WeaponInfoLine::painter ));
       };
 
 	   void eventMouseEnter()
@@ -853,8 +853,8 @@ MapInfoPanel::MapInfoPanel (PG_Widget *parent, const PG_Rect &r, MapDisplayPG* m
    zoomSlider = dynamic_cast<PG_Slider*>( FindChild( "zoomscroller", true ) );
    if ( zoomSlider ) {
       zoomSlider->SetRange(0,75); // results in zoomlevels from 100 - 25
-      zoomSlider->sigSlide.connect( SigC::slot( *this, &MapInfoPanel::scrollTrack ));
-      mapDisplay->newZoom.connect( SigC::slot( *this, &MapInfoPanel::zoomChanged ));
+      zoomSlider->sigSlide.connect( sigc::mem_fun( *this, &MapInfoPanel::scrollTrack ));
+      mapDisplay->newZoom.connect( sigc::mem_fun( *this, &MapInfoPanel::zoomChanged ));
       zoomSlider->SetPosition( 100 - mapDisplay->getZoom() );
    }   
 
@@ -866,18 +866,18 @@ MapInfoPanel::MapInfoPanel (PG_Widget *parent, const PG_Rect &r, MapDisplayPG* m
          )
          layerChanged( true, label[i]);
       if ( cb ) 
-         cb->sigClick.connect( SigC::bind( SigC::slot( *this, &MapInfoPanel::checkBox ), label[i] ));
+         cb->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &MapInfoPanel::checkBox ), label[i] ));
    }      
    
-   mapDisplay->layerChanged.connect( SigC::slot( *this, &MapInfoPanel::layerChanged ));
+   mapDisplay->layerChanged.connect( sigc::mem_fun( *this, &MapInfoPanel::layerChanged ));
       
    PG_Button* b = dynamic_cast<PG_Button*>( FindChild( "weaprange", true ) );
    if ( b )
-      b->sigClick.connect( SigC::slot( *this, &MapInfoPanel::showWeaponRange ));
+      b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MapInfoPanel::showWeaponRange )));
    
    PG_Button* b2 = dynamic_cast<PG_Button*>( FindChild( "moverange", true ) );
    if ( b2 )
-      b2->sigClick.connect( SigC::slot( *this, &MapInfoPanel::showMovementRange ));
+      b2->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MapInfoPanel::showMovementRange )));
    
 }
 
@@ -921,7 +921,7 @@ bool MapInfoPanel::scrollTrack( long pos )
    return true;
 }
 
-bool MapInfoPanel::checkBox( bool state, const char* name )
+bool MapInfoPanel::checkBox( PG_Widget* w, bool state, const char* name )
 {
    changeActive = true;
    mapDisplay->activateMapLayer( name, state );
@@ -933,7 +933,7 @@ bool MapInfoPanel::checkBox( bool state, const char* name )
 
 ActionInfoPanel::ActionInfoPanel (PG_Widget *parent, const PG_Rect &r ) : DashboardPanel( parent, r, "ActionInfo" )
 {
-   ActionContainer::actionListChanged.connect( SigC::slot( *this, &ActionInfoPanel::update ));
+   ActionContainer::actionListChanged.connect( sigc::mem_fun( *this, &ActionInfoPanel::update ));
 }
 
 void ActionInfoPanel::update( GameMap* map )
diff --git a/source/dashboard.h b/source/dashboard.h
index d6b4f8f..ea607aa 100644
--- a/source/dashboard.h
+++ b/source/dashboard.h
@@ -89,7 +89,7 @@ class MapInfoPanel : public DashboardPanel {
         
         void layerChanged( bool state, const ASCString& label );        
         bool scrollTrack( long pos );
-        bool checkBox( bool state, const char* name );
+        bool checkBox( PG_Widget* w, bool state, const char* name );
         void zoomChanged( int zoom );
 
         bool showWeaponRange();
diff --git a/source/dataversioncheck.cpp b/source/dataversioncheck.cpp
index ca1a6fa..33db02d 100644
--- a/source/dataversioncheck.cpp
+++ b/source/dataversioncheck.cpp
@@ -43,7 +43,7 @@ void checkDataFileVersion()
             
 void checkDataVersion()
 {
-   PackageRepository::packgeDescriptionLoaded.connect( SigC::slot( &checkDataFileVersion ));
+   PackageRepository::packgeDescriptionLoaded.connect( sigc::ptr_fun( &checkDataFileVersion ));
 }
             
 
diff --git a/source/dialogs/Makefile.am b/source/dialogs/Makefile.am
index fd52cf1..087b01e 100644
--- a/source/dialogs/Makefile.am
+++ b/source/dialogs/Makefile.am
@@ -16,7 +16,7 @@ libdialogs_la_LIBADD    = @SDL_LIBS@
 libgamedialogs_la_SOURCES   = cargodialog.cpp unitcounting.cpp cargowidget.cpp ammotransferdialog.cpp attackpanel.cpp vehicletypeselector.cpp nextcampaignmap.cpp \
                               editplayerdata.cpp buildingtypeselector.cpp choosetech.cpp productionanalysis.cpp internalAmmoTransferDialog.cpp replayrecorder.cpp \
                               mailoptionseditor.cpp vehicleproductionselection.cpp infodialogs.cpp actionmanager.cpp gotoposition.cpp taskmanager.cpp \
-                              actionwidget.cpp unitnaming.cpp
+                              actionwidget.cpp unitnaming.cpp eventinfo.cpp
                               
 libgamedialogs_la_LIBADD    = @SDL_LIBS@ 
 
diff --git a/source/dialogs/Makefile.in b/source/dialogs/Makefile.in
index 1d6cd31..9279453 100644
--- a/source/dialogs/Makefile.in
+++ b/source/dialogs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -113,7 +113,7 @@ am_libgamedialogs_la_OBJECTS = cargodialog.lo unitcounting.lo \
 	internalAmmoTransferDialog.lo replayrecorder.lo \
 	mailoptionseditor.lo vehicleproductionselection.lo \
 	infodialogs.lo actionmanager.lo gotoposition.lo taskmanager.lo \
-	actionwidget.lo unitnaming.lo
+	actionwidget.lo unitnaming.lo eventinfo.lo
 libgamedialogs_la_OBJECTS = $(am_libgamedialogs_la_OBJECTS)
 libmapeddialogs_la_DEPENDENCIES =
 am_libmapeddialogs_la_OBJECTS = cargoeditor.lo cargowidget.lo \
@@ -304,6 +304,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -382,7 +385,7 @@ libdialogs_la_LIBADD = @SDL_LIBS@
 libgamedialogs_la_SOURCES = cargodialog.cpp unitcounting.cpp cargowidget.cpp ammotransferdialog.cpp attackpanel.cpp vehicletypeselector.cpp nextcampaignmap.cpp \
                               editplayerdata.cpp buildingtypeselector.cpp choosetech.cpp productionanalysis.cpp internalAmmoTransferDialog.cpp replayrecorder.cpp \
                               mailoptionseditor.cpp vehicleproductionselection.cpp infodialogs.cpp actionmanager.cpp gotoposition.cpp taskmanager.cpp \
-                              actionwidget.cpp unitnaming.cpp
+                              actionwidget.cpp unitnaming.cpp eventinfo.cpp
 
 libgamedialogs_la_LIBADD = @SDL_LIBS@ 
 libmapeddialogs_la_SOURCES = cargoeditor.cpp cargowidget.cpp eventeditor.cpp newmap.cpp exchangegraphics.cpp importbi3map.cpp edittechadapter.cpp
@@ -466,6 +469,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/edittechadapter.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/emailsetup.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eventeditor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eventinfo.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/exchangegraphics.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fieldmarker.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fileselector.Plo at am__quote@
diff --git a/source/dialogs/actionmanager.cpp b/source/dialogs/actionmanager.cpp
index f946363..28ed73b 100644
--- a/source/dialogs/actionmanager.cpp
+++ b/source/dialogs/actionmanager.cpp
@@ -52,10 +52,10 @@ class ActionSelectionWidget: public ActionWidget
          if ( actions.isActive_req( &action ) )
             check->SetPressed();
          
-         check->sigClick.connect( SigC::slot( *this, &ActionSelectionWidget::click ));
+         check->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ActionSelectionWidget::click )));
       }
    protected:
-      bool click( )
+      bool click( PG_RadioButton* button )
       {
          actions.setActive( &act, check->GetPressed() );
          return true;
@@ -132,8 +132,8 @@ class ActionManager : public ASC_PG_Dialog {
       ActionManager( GameMap* map ) : ASC_PG_Dialog( NULL, PG_Rect( -1, -1, 400, 550 ), "Manage Actions" ), gamemap( map ) 
       {
          StandardButtonDirection( Horizontal );
-         AddStandardButton("Close")->sigClick.connect( SigC::slot( *this, &ActionManager::ok ));
-         AddStandardButton("Run")->sigClick.connect( SigC::slot( *this, &ActionManager::run ));
+         AddStandardButton("Close")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ActionManager::ok )));
+         AddStandardButton("Run")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ActionManager::run )));
          selection = new ItemSelectorWidget( this, PG_Rect( 5, 20, Width()-10, Height() - 70 ), new ActionFactory( map ));
       }
    
diff --git a/source/dialogs/admingame.cpp b/source/dialogs/admingame.cpp
index 30891dd..4bb1269 100644
--- a/source/dialogs/admingame.cpp
+++ b/source/dialogs/admingame.cpp
@@ -317,19 +317,19 @@ class AdminGameWindow : public ASC_PG_Dialog {
          new ActionItem( actionlistbox, 20, "export technology", PlayerActionFunctor( this, &AdminGameWindow::exportTechs));
          new ActionItem( actionlistbox, 20, "import technology", PlayerActionFunctor( this, &AdminGameWindow::importTechs));
 
-         (new PG_Button( scrollwidget, PG_Rect( 3*gap+2*selectorWidth, ypos, 50, selectorHeight ), "Apply" ))->sigClick.connect( SigC::slot( *this, &AdminGameWindow::apply ));
+         (new PG_Button( scrollwidget, PG_Rect( 3*gap+2*selectorWidth, ypos, 50, selectorHeight ), "Apply" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AdminGameWindow::apply )));
          
          ypos += 270;
          
          new PG_Label( scrollwidget, PG_Rect( 20, ypos, 100, 20 ), "Turn:" );
          turn = new PG_LineEdit( scrollwidget, PG_Rect( 130, ypos, 50, 20));
          turn->SetEditable( true );
-         turn->sigEditEnd.connect( SigC::slot( *this, &AdminGameWindow::turnEdited ));
-         turn->sigEditReturn.connect( SigC::slot( *this, &AdminGameWindow::turnEdited ));
+         turn->sigEditEnd.connect( sigc::mem_fun( *this, &AdminGameWindow::turnEdited ));
+         turn->sigEditReturn.connect( sigc::mem_fun( *this, &AdminGameWindow::turnEdited ));
 
          if ( turnSkipper ) {
              PG_Button* b = new PG_Button ( scrollwidget, PG_Rect( 200, ypos, 100, 50 ), "skip player" );
-             b->sigClick.connect( SigC::slot( *this, &AdminGameWindow::skipPlayer ));
+             b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AdminGameWindow::skipPlayer )));
          }
 
          ypos += 30;
@@ -341,7 +341,7 @@ class AdminGameWindow : public ASC_PG_Dialog {
          
          if ( actmap->network ) {
             ypos += 30;         
-            (new PG_Button( scrollwidget, PG_Rect( 20, ypos, 200, 20 ), "Setup data transfer" ))->sigClick.connect( SigC::slot( *this, &AdminGameWindow::netSetup )) ;
+            (new PG_Button( scrollwidget, PG_Rect( 20, ypos, 200, 20 ), "Setup data transfer" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AdminGameWindow::netSetup ))) ;
          }
          
          ypos += 30;
@@ -350,11 +350,11 @@ class AdminGameWindow : public ASC_PG_Dialog {
          ypos += PlayerSetupWidget::guessHeight(gamemap) + gap;
 
 
-         (new PG_Button( scrollwidget, PG_Rect( gap, ypos, Width() - 3* gap, 30), "OK" ))->sigClick.connect( SigC::slot( *this, &AdminGameWindow::ok));
+         (new PG_Button( scrollwidget, PG_Rect( gap, ypos, Width() - 3* gap, 30), "OK" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AdminGameWindow::ok)));
          ypos += 40;
 
          if ( actmap->getgameparameter(cgp_superVisorCanSaveMap)) {
-            (new PG_Button( scrollwidget, PG_Rect( gap, ypos, Width() - 3* gap, 30), "Save as Map" ))->sigClick.connect( SigC::slot( *this, &AdminGameWindow::saveAsMap));
+            (new PG_Button( scrollwidget, PG_Rect( gap, ypos, Width() - 3* gap, 30), "Save as Map" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AdminGameWindow::saveAsMap)));
             ypos += 40;
          }
 
diff --git a/source/dialogs/alliancesetup.cpp b/source/dialogs/alliancesetup.cpp
index 51e4780..d3bba72 100644
--- a/source/dialogs/alliancesetup.cpp
+++ b/source/dialogs/alliancesetup.cpp
@@ -89,7 +89,7 @@ class ListBoxImageItem : public PG_ListBoxBaseItem {
          new PG_Label( this, PG_Rect(diplomaticStateIconSize + 5, diplomaticStateIconSpace, 200,diplomaticStateIconSize), getStateName<SelectionType>(s));
       }
       
-      SigC::Signal1<void,SelectionType> sigSet;
+      sigc::signal<void,SelectionType> sigSet;
       
       bool eventMouseButtonUp(const SDL_MouseButtonEvent* button) 
       {
@@ -127,7 +127,7 @@ class DiplomaticModeChooser : public PG_Widget {
          PG_ListBox listBox( NULL, PG_Rect( x, y + Height(), 250, getItemNum<SelectionType>() * ( diplomaticStateIconSpace * 2 + diplomaticStateIconSize ) + 4 ));
          for ( int i = 0; i < getItemNum<SelectionType>(); ++i) {
             ListBoxImageItem<SelectionType>* item = new ListBoxImageItem<SelectionType>( NULL, PG_Point(0,0), SelectionType(i));
-            item->sigSet.connect( SigC::slot( *this, &DiplomaticModeChooser::SetState));
+            item->sigSet.connect( sigc::mem_fun( *this, &DiplomaticModeChooser::SetState));
             listBox.AddChild( item );
          }
          listBox.Show();
@@ -139,7 +139,7 @@ class DiplomaticModeChooser : public PG_Widget {
       {
       };
 
-      SigC::Signal1<void,SelectionType> sigStateChange;
+      sigc::signal<void,SelectionType> sigStateChange;
             
       void eventDraw (SDL_Surface *surface, const PG_Rect &rect)
       {
@@ -254,12 +254,12 @@ AllianceSetupWidget::AllianceSetupWidget( GameMap* gamemap, ApplyStrategy* apply
                   PG_Rect rect ( x + (colWidth - diplomaticStateIconSize)/2 ,  (lineHeight - diplomaticStateIconSize)/2,diplomaticStateIconSize,diplomaticStateIconSize); 
                   if ( allEditable ) {
                      DiplomaticModeChooser<DiplomaticStates>* dmc = new DiplomaticModeChooser<DiplomaticStates>( horizontalBar, rect, getState(i,j), true );
-                     dmc->sigStateChange.connect( SigC::bind( SigC::slot( *this, &AllianceSetupWidget::setState ), j, i));
+                     dmc->sigStateChange.connect( sigc::bind( sigc::mem_fun( *this, &AllianceSetupWidget::setState ), j, i));
                      diplomaticWidgets[ linearize( i,j) ] = dmc;
                   } else {
                      DiplomaticTransitions& s = stateChanges[i][j];
                      DiplomaticModeChooser<DiplomaticTransitions>* dmc = new DiplomaticModeChooser<DiplomaticTransitions>( horizontalBar, rect, s, i == gamemap->actplayer );
-                     // dmc->sigStateChange.connect( SigC::bind( SigC::slot( *this, &AllianceSetupWidget::setState ), j, i));
+                     // dmc->sigStateChange.connect( sigc::bind( sigc::mem_fun( *this, &AllianceSetupWidget::setState ), j, i));
                      diplomaticWidgets[ linearize( i,j) ] = dmc;
                   }   
                      
@@ -348,9 +348,9 @@ class AllianceSetupWindow : public ASC_PG_Dialog {
       {
          asw = new AllianceSetupWidget( actmap, strategy, allEditable, this, PG_Rect( 5, 30, r.Width() - 10, r.Height() - 60 ));
          PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 200, Height() - 30, 90, 20 ), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &AllianceSetupWindow::Apply ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AllianceSetupWindow::Apply )));
          PG_Button* cancel = new PG_Button( this, PG_Rect( Width() - 100, Height() - 30, 90, 20 ), "Cancel" );
-         cancel->sigClick.connect( SigC::slot( *this, &AllianceSetupWindow::QuitModal ));
+         cancel->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AllianceSetupWindow::QuitModal )));
       }
 
       bool Apply()
diff --git a/source/dialogs/ammotransferdialog.cpp b/source/dialogs/ammotransferdialog.cpp
index 38574a2..ea0d60e 100644
--- a/source/dialogs/ammotransferdialog.cpp
+++ b/source/dialogs/ammotransferdialog.cpp
@@ -67,10 +67,10 @@ class TransferWidget : public PG_Widget {
    
             updateRange();
    
-            slider->sigSlide.connect( SigC::slot( *transferrable, &Transferrable::setDestAmount ));
-            slider->sigSlideEnd.connect( SigC::slot( *this, &TransferWidget::updatePos));
+            slider->sigSlide.connect( sigc::mem_fun( *transferrable, &Transferrable::setDestAmount ));
+            slider->sigSlideEnd.connect( sigc::mem_fun( *this, &TransferWidget::updatePos));
 
-            handler.updateRanges.connect( SigC::slot( *this, &TransferWidget::updateRange));
+            handler.updateRanges.connect( sigc::mem_fun( *this, &TransferWidget::updateRange));
          }
 
          
@@ -80,11 +80,11 @@ class TransferWidget : public PG_Widget {
          
          l = new PG_Label ( this, labels );
          l->SetAlignment( PG_Label::LEFT );
-         transferrable->sigSourceAmount.connect( SigC::slot( *l, &PG_Label::SetText ));
+         transferrable->sigSourceAmount.connect( sigc::mem_fun( *l, &PG_Label::SetText ));
          
          l = new PG_Label ( this, labels );
          l->SetAlignment( PG_Label::RIGHT );
-         transferrable->sigDestAmount.connect( SigC::slot( *l, &PG_Label::SetText ));
+         transferrable->sigDestAmount.connect( sigc::mem_fun( *l, &PG_Label::SetText ));
       };
 };
 
@@ -175,7 +175,7 @@ AmmoTransferWindow :: AmmoTransferWindow ( ContainerBase* source, ContainerBase*
       PG_CheckButton* production = new PG_CheckButton( area, PG_Rect( border, ypos, area->w - 30, 20 ), "allow ammo production" );
       if ( CGameOptions::Instance()->autoproduceammunition )
          production->SetPressed(  );
-      production->sigClick.connect( SigC::slot( *handler, &TransferHandler::allowAmmoProduction ));
+      production->sigClick.connect( sigc::hide( sigc::mem_fun( *handler, &TransferHandler::allowAmmoProduction )));
       ypos += 30;
    }
    
@@ -186,7 +186,7 @@ AmmoTransferWindow :: AmmoTransferWindow ( ContainerBase* source, ContainerBase*
 
    int buttonWidth = 150;
    PG_Button* b = new PG_Button( this, PG_Rect( w - buttonWidth - border, h - 30 - border, buttonWidth, 30), "OK" );
-   b->sigClick.connect( SigC::slot( *this, &AmmoTransferWindow::ok ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AmmoTransferWindow::ok )));
    
    for ( TransferHandler::Transfers::iterator i = handler->getTransfers().begin(); i != handler->getTransfers().end(); ++i ) 
       (*i)->showAll();
diff --git a/source/dialogs/attackpanel.cpp b/source/dialogs/attackpanel.cpp
index 15a5c8c..1c85ed7 100644
--- a/source/dialogs/attackpanel.cpp
+++ b/source/dialogs/attackpanel.cpp
@@ -127,7 +127,7 @@ void AttackPanel::registerSpecialDisplay( const ASCString& name )
 {
    SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( name, true ) );
    if ( sdw )
-      sdw->display.connect( SigC::slot( *this, &AttackPanel::painter ));
+      sdw->display.connect( sigc::mem_fun( *this, &AttackPanel::painter ));
 }
 
 
diff --git a/source/dialogs/buildingtypeselector.h b/source/dialogs/buildingtypeselector.h
index e737e84..ee9680e 100644
--- a/source/dialogs/buildingtypeselector.h
+++ b/source/dialogs/buildingtypeselector.h
@@ -54,7 +54,7 @@ class BuildingTypeCountWidget: public BuildingTypeBaseWidget  {
 };
 
 
-class BuildingTypeSelectionItemFactory: public SelectionItemFactory, public SigC::Object  {
+class BuildingTypeSelectionItemFactory: public SelectionItemFactory, public sigc::trackable  {
       Resources plantResources;
       const Player& actplayer;
    public:
@@ -74,7 +74,7 @@ class BuildingTypeSelectionItemFactory: public SelectionItemFactory, public SigC
    public:
       BuildingTypeSelectionItemFactory( Resources plantResources, const Container& types, const Player& player );
       
-      SigC::Signal0<void> reloadAllItems;
+      sigc::signal<void> reloadAllItems;
 
       void restart();
    
diff --git a/source/dialogs/cargodialog.cpp b/source/dialogs/cargodialog.cpp
index d41f70f..7028454 100644
--- a/source/dialogs/cargodialog.cpp
+++ b/source/dialogs/cargodialog.cpp
@@ -15,6 +15,7 @@
  *                                                                         *
  ***************************************************************************/
 
+#include <sigc++/sigc++.h>
 #include <pgimage.h>
 #include <pgtooltiphelp.h>
 #include "cargodialog.h"
@@ -64,7 +65,7 @@ const VehicleType* selectVehicletype( ContainerBase* plant, const vector<Vehicle
 
 class CargoDialog;
 
-class SubWindow: public SigC::Object
+class SubWindow: public sigc::trackable
 {
    protected:
       CargoDialog* cargoDialog;
@@ -187,7 +188,7 @@ class Movement : public GuiFunction
 };
 
 
-class UnitProduction : public GuiFunction, public SigC::Object
+class UnitProduction : public GuiFunction, public sigc::trackable
 {
       CargoDialog& parent;
       ConstructUnitCommand::Producables producables;
@@ -404,13 +405,13 @@ class CargoDialog : public Panel
       void registerSpecialDisplay( const ASCString& name ) {
          SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( name, true ) );
          if ( sdw )
-            sdw->display.connect( SigC::slot( *this, &CargoDialog::painter ));
+            sdw->display.connect( sigc::mem_fun( *this, &CargoDialog::painter ));
       };
 
       void registerSpecialInput( const ASCString& name ) {
          SpecialInputWidget* siw = dynamic_cast<SpecialInputWidget*>( FindChild( name, true ) );
          if ( siw )
-            siw->sigMouseButtonDown.connect( SigC::slot( *this, &CargoDialog::onClick ));
+            siw->sigMouseButtonDown.connect( sigc::mem_fun( *this, &CargoDialog::onClick ));
       };
 
       bool onClick ( PG_MessageObject* obj, const SDL_MouseButtonEvent* event ) {
@@ -462,7 +463,7 @@ class CargoDialog : public Panel
          
       };
 
-      bool activate_i( int pane ) {
+      bool activate_i( PG_Button* b, int pane ) {
          if ( pane >= 0 && pane < activesubwindows.size() ) {
             activate( activesubwindows[pane]->getASCTXTname() );
             activesubwindows[pane]->update();
@@ -667,7 +668,7 @@ class CargoDialog : public Panel
          else return NULL;
       };
 
-      SigC::Signal0<void>  sigCargoChanged;
+      sigc::signal<void>  sigCargoChanged;
 
       void setUnitInfoWidgets( const ContainerBase* container, const ASCString& prefix ) {
          if ( container ) {
@@ -1006,7 +1007,7 @@ class NetControlWindow : public SubWindow
                for ( int y = 0; y < 4; ++y ) {
                   PG_Button* b = findButton( x, y );
                   if ( b ) {
-                     b->sigClick.connect( SigC::bind( SigC::bind( SigC::slot( *this, &NetControlWindow::click ), x), y));
+                     b->sigClick.connect( sigc::bind( sigc::bind( sigc::mem_fun( *this, &NetControlWindow::click ), x), y));
                      if ( y >= 2)
                         b->SetToggle( true );
                   }
@@ -1040,7 +1041,7 @@ class CargoInfoWindow : public SubWindow
 
       void registerSubwindow( CargoDialog* cd ) {
          SubWindow::registerSubwindow( cd );
-         cargoDialog->sigCargoChanged.connect( SigC::slot( *this, &CargoInfoWindow::update ));
+         cargoDialog->sigCargoChanged.connect( sigc::mem_fun( *this, &CargoInfoWindow::update ));
       };
 
 
@@ -1058,7 +1059,7 @@ class CargoInfoWindow : public SubWindow
 class BuildingControlWindow : public SubWindow
 {
    public:
-      SigC::Signal0<void> damageChanged;
+      sigc::signal<void> damageChanged;
 
 
       void registerChilds( CargoDialog* cd ) {
@@ -1067,7 +1068,7 @@ class BuildingControlWindow : public SubWindow
          if ( widget ) {
             PG_Button* b = dynamic_cast<PG_Button*>( widget->FindChild( "RepairButton", true ) );
             if ( b )
-               b->sigClick.connect( SigC::slot( *this, &BuildingControlWindow::repair ));
+               b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &BuildingControlWindow::repair )));
          }
       }
 
@@ -1377,7 +1378,7 @@ class ResearchGraph : public GraphWidget
          recalc();
       }
 
-      SigC::Signal0<void> sigChange;
+      sigc::signal<void> sigChange;
 
 };
 
@@ -1544,8 +1545,8 @@ class MatterAndMiningBaseWindow : public SubWindow
          if ( first && slider ) {
             first = false;
             slider->SetRange( 0, 100 );
-            slider->sigScrollPos.connect( SigC::slot( *this, &MatterAndMiningBaseWindow::scrollPos ));
-            slider->sigScrollTrack.connect( SigC::slot( *this, &MatterAndMiningBaseWindow::scrollTrack ));
+            slider->sigScrollPos.connect( sigc::mem_fun( *this, &MatterAndMiningBaseWindow::scrollPos ));
+            slider->sigScrollTrack.connect( sigc::mem_fun( *this, &MatterAndMiningBaseWindow::scrollTrack ));
          }
 
          for ( int r = 0; r < 3; ++r )
@@ -1773,11 +1774,11 @@ CargoDialog ::CargoDialog (PG_Widget *parent, ContainerBase* cb )
 {
    shutdownImmediately = false;
 
-   sigClose.connect( SigC::slot( *this, &CargoDialog::QuitModal ));
+   sigClose.connect( sigc::mem_fun( *this, &CargoDialog::QuitModal ));
 
    registerGuiFunctions( guiIconHandler );
 
-   cb->destroyed.connect( SigC::slot( *this, &CargoDialog::containerDestroyed ));
+   cb->destroyed.connect( sigc::mem_fun( *this, &CargoDialog::containerDestroyed ));
 
    ciw = new CargoInfoWindow;
    subwindows.push_back( ciw );
@@ -1802,8 +1803,8 @@ CargoDialog ::CargoDialog (PG_Widget *parent, ContainerBase* cb )
 
 
 
-   // cb->resourceChanged.connect( SigC::slot( *this, &CargoDialog::updateResourceDisplay ));
-   // cb->ammoChanged.connect( SigC::slot( *this, &CargoDialog::showAmmo ));
+   // cb->resourceChanged.connect( sigc::mem_fun( *this, &CargoDialog::updateResourceDisplay ));
+   // cb->ammoChanged.connect( sigc::mem_fun( *this, &CargoDialog::showAmmo ));
 
 
    try {
@@ -1864,7 +1865,7 @@ CargoDialog ::CargoDialog (PG_Widget *parent, ContainerBase* cb )
 
    NewGuiHost::pushIconHandler( &guiIconHandler );
 
-   activate_i(0);
+   activate_i(NULL, 0);
    cargoChanged();
    Show();
    setupOK = true;
@@ -1879,7 +1880,7 @@ void CargoDialog::userHandler( const ASCString& label, PropertyReadingContainer&
       int y = 0;
       for ( int i = 0; i < activesubwindows.size(); ++i ) {
          SubWinButton* button = new SubWinButton( parent, SPoint( x, y ), activesubwindows[i] );
-         button->sigClick.connect( SigC::bind( SigC::slot( *this, &CargoDialog::activate_i  ), i));
+         button->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &CargoDialog::activate_i  ), i));
          if ( x + 2*SubWinButton::buttonwidth < parent->Width() )
             x += SubWinButton::buttonwidth;
          else {
@@ -1910,7 +1911,7 @@ void CargoDialog::userHandler( const ASCString& label, PropertyReadingContainer&
 
    if ( label == "ResearchGraph" ) {
       ResearchGraph* graph = new ResearchGraph( parent, PG_Rect( 0, 0, parent->Width(), parent->Height() ), container );
-      graph->sigChange.connect( SigC::slot( *researchWindow, &SubWindow::update ));
+      graph->sigChange.connect( sigc::mem_fun( *researchWindow, &SubWindow::update ));
    }
 
    if ( label == "MiningGraph" ) {
@@ -1921,7 +1922,7 @@ void CargoDialog::userHandler( const ASCString& label, PropertyReadingContainer&
 
    if ( label == "DamageBar" ) {
       DamageBarWidget* dbw = new DamageBarWidget( parent, PG_Rect( 0, 0, parent->Width(), parent->Height() ), container );
-      buildingControlWindow->damageChanged.connect( SigC::slot( *dbw, &DamageBarWidget::repaint ));
+      buildingControlWindow->damageChanged.connect( sigc::mem_fun( *dbw, &DamageBarWidget::repaint ));
    }
 
    if ( label == "ScrollArea" ) {
@@ -1929,10 +1930,10 @@ void CargoDialog::userHandler( const ASCString& label, PropertyReadingContainer&
       if ( unitScrollArea ) {
          cargoWidget = new CargoWidget( unitScrollArea, PG_Rect( 1, 1, unitScrollArea->Width() -2 , unitScrollArea->Height() -2 ), container, false );
          cargoWidget->enableDragNDrop( true );
-         cargoWidget->sigDragDone.connect( SigC::slot( *this, &CargoDialog::dragUnitToInnerContainer ));
-         cargoWidget->sigDragAvail.connect( SigC::slot( *this, &CargoDialog::dragUnitToInnerContainerAvail ));
-         cargoWidget->sigDragInProcess.connect( SigC::slot( *this, &CargoDialog::dragInProcess ));
-         cargoWidget->sigDragAborted.connect( SigC::slot( *this, &CargoDialog::dragAborted ));
+         cargoWidget->sigDragDone.connect( sigc::mem_fun( *this, &CargoDialog::dragUnitToInnerContainer ));
+         cargoWidget->sigDragAvail.connect( sigc::mem_fun( *this, &CargoDialog::dragUnitToInnerContainerAvail ));
+         cargoWidget->sigDragInProcess.connect( sigc::mem_fun( *this, &CargoDialog::dragInProcess ));
+         cargoWidget->sigDragAborted.connect( sigc::mem_fun( *this, &CargoDialog::dragAborted ));
 
          vector<StoringPosition*> storingPositionVector;
 
@@ -1969,19 +1970,19 @@ void CargoDialog::userHandler( const ASCString& label, PropertyReadingContainer&
          }
 
          cargoWidget->registerStoringPositions( storingPositionVector, unitColumnCount );
-         cargoWidget->sigScrollTrack.connect( SigC::slot( *this, &CargoDialog::clearSmallIcons ));
+         cargoWidget->sigScrollTrack.connect( sigc::mem_fun( *this, &CargoDialog::clearSmallIcons ));
 
-         cargoWidget->unitMarked.connect( SigC::slot( *this, &CargoDialog::checkStoringPosition ));
+         cargoWidget->unitMarked.connect( sigc::mem_fun( *this, &CargoDialog::checkStoringPosition ));
          
          if ( ciw )
-            cargoWidget->unitMarked.connect( SigC::hide<Vehicle*>( SigC::slot( *ciw, &CargoInfoWindow::update )));
+            cargoWidget->unitMarked.connect( sigc::hide( sigc::mem_fun( *ciw, &CargoInfoWindow::update )));
          
          if ( mainScreenWidget && mainScreenWidget->getGuiHost() )
-            cargoWidget->unitMarked.connect( SigC::hide<Vehicle*>( SigC::slot( *this, &CargoDialog::clearSmallIcons )));
+            cargoWidget->unitMarked.connect( sigc::hide( sigc::mem_fun( *this, &CargoDialog::clearSmallIcons )));
 
-         cargoWidget->unitClicked.connect ( SigC::slot( *this, &CargoDialog::onUnitClick ));
+         cargoWidget->unitClicked.connect ( sigc::mem_fun( *this, &CargoDialog::onUnitClick ));
 
-         container->cargoChanged.connect( SigC::slot( *cargoWidget, &CargoWidget::redrawAll ));
+         container->cargoChanged.connect( sigc::mem_fun( *cargoWidget, &CargoWidget::redrawAll ));
       }
    }
    if ( label == "UnitTypeList"  || label == "UnitTypeListHorizontal" )  {
@@ -2143,7 +2144,7 @@ void UnitProduction::execute( const MapCoordinate& pos, ContainerBase* subject,
       production->setMode( ConstructUnitCommand::internal );
       producables = production->getProduceableVehicles();
       VehicleProduction_SelectionWindow fsw( NULL, PG_Rect( 10, 10, 450, 550 ), parent.getContainer(), producables, true );
-      fsw.reloadProducebles.connect( SigC::slot( *this, &UnitProduction::productionLinesChanged ));
+      fsw.reloadProducebles.connect( sigc::mem_fun( *this, &UnitProduction::productionLinesChanged ));
       fsw.SetTransparency(0);
       fsw.Show();
       fsw.RunModal();
@@ -2623,7 +2624,7 @@ class VehicleWidget: public VehicleBaseWidget
       };
 };
 
-class VehicleSelectionFactory: public SelectionItemFactory, public SigC::Object
+class VehicleSelectionFactory: public SelectionItemFactory, public sigc::trackable
 {
    public:
       typedef vector<Vehicle*> Container;
diff --git a/source/dialogs/cargoeditor.cpp b/source/dialogs/cargoeditor.cpp
index 78f3b8c..137be11 100644
--- a/source/dialogs/cargoeditor.cpp
+++ b/source/dialogs/cargoeditor.cpp
@@ -129,28 +129,28 @@ class CargoEditor : public PG_Window {
          int buttonLine = Height() - 110 + 60;
          int buttonHeight = 30;
          PG_Button* add = new PG_Button( this, PG_Rect( 10, buttonLine, 50, buttonHeight), "+" );
-         add->sigClick.connect( SigC::slot( *this, &CargoEditor::addUnit ));
+         add->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::addUnit )));
          
          PG_Button* rem = new PG_Button( this, PG_Rect( 70, buttonLine, 50, buttonHeight), "-" );
-         rem->sigClick.connect( SigC::slot( *this, &CargoEditor::remove ));
+         rem->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::remove )));
          
          PG_Button* copy = new PG_Button( this, PG_Rect( 130, buttonLine, 50, buttonHeight), "copy" );
-         copy->sigClick.connect( SigC::slot( *this, &CargoEditor::copyUnit ));
+         copy->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::copyUnit )));
          
          PG_Button* paste = new PG_Button( this, PG_Rect( 190, buttonLine, 50, buttonHeight), "paste" );
-         paste->sigClick.connect( SigC::slot( *this, &CargoEditor::pasteUnit ));
+         paste->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::pasteUnit )));
          
          PG_Button* edit = new PG_Button( this, PG_Rect( 250, buttonLine, 50, buttonHeight), "edit" );
-         edit->sigClick.connect( SigC::slot( *this, &CargoEditor::editUnit ));
+         edit->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::editUnit )));
          
          PG_Button* cargo = new PG_Button( this, PG_Rect( 310, buttonLine, 50, buttonHeight), "cargo" );
-         cargo->sigClick.connect( SigC::slot( *this, &CargoEditor::editUnitCargo ));
+         cargo->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::editUnitCargo )));
          
          PG_Button* cancel = new PG_Button( this, PG_Rect( 370, buttonLine, 50, buttonHeight), "cancel" );
-         cancel->sigClick.connect( SigC::slot( *this, &CargoEditor::cancel ));
+         cancel->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::cancel )));
          
          PG_Button* ok = new PG_Button( this, PG_Rect( 430, buttonLine, 50, buttonHeight), "ok" );
-         ok->sigClick.connect( SigC::slot( *this, &CargoEditor::ok ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CargoEditor::ok )));
       }
 
       bool eventKeyDown(const SDL_KeyboardEvent* key)
diff --git a/source/dialogs/cargowidget.cpp b/source/dialogs/cargowidget.cpp
index bedfc8a..a9b9d07 100644
--- a/source/dialogs/cargowidget.cpp
+++ b/source/dialogs/cargowidget.cpp
@@ -76,8 +76,8 @@ PG_Rect StoringPosition :: CalcSize( const PG_Point& pos  )
 StoringPosition :: StoringPosition( PG_Widget *parent, const PG_Point &pos, const PG_Point& unitPos, HighLightingManager& highLightingManager, const ContainerBase::Cargo& storageVector, int number, bool regularPosition, CargoWidget* cargoWidget  )
       : PG_Widget ( parent, CalcSize(pos), true ), highlight( highLightingManager ), storage( storageVector), num(number), regular(regularPosition), unitPosition( unitPos ), dragState( Off ), dragTarget( NoDragging )
 {
-   highlight.markChanged.connect( SigC::slot( *this, &StoringPosition::markChanged ));
-   highlight.redrawAll.connect( SigC::bind( SigC::slot( *this, &StoringPosition::Redraw), true));
+   highlight.markChanged.connect( sigc::mem_fun( *this, &StoringPosition::markChanged ));
+   highlight.redrawAll.connect( sigc::bind( sigc::mem_fun( *this, &StoringPosition::Redraw), true));
 
    if ( unitPosition.x < 0 ) {
       unitPosition.x = (Width() - fieldsizex)/2;
@@ -399,21 +399,21 @@ CargoWidget :: CargoWidget( PG_Widget* parent, const PG_Rect& pos, ContainerBase
       registerStoringPositions( StoringPosition::setup( this, container, unitHighLight, unitColumnCount ), unitColumnCount );
 
    if ( my_objVerticalScrollbar )
-      my_objVerticalScrollbar->sigScrollTrack.connect ( SigC::slot( *this, &CargoWidget::handleScrollTrack ));
+      my_objVerticalScrollbar->sigScrollTrack.connect ( sigc::mem_fun( *this, &CargoWidget::handleScrollTrack ));
 
    if ( my_objHorizontalScrollbar )
-      my_objHorizontalScrollbar->sigScrollTrack.connect ( SigC::slot( *this, &CargoWidget::handleScrollTrack ));
+      my_objHorizontalScrollbar->sigScrollTrack.connect ( sigc::mem_fun( *this, &CargoWidget::handleScrollTrack ));
 };
 
 void CargoWidget::registerStoringPositions( vector<StoringPosition*> sp, const int& colCount )
 {
    unitColumnCount = colCount;
    storingPositionVector  = sp;
-   unitHighLight.markChanged.connect( SigC::slot( *this, &CargoWidget::checkStoringPosition ));
-   unitHighLight.clickOnMarkedUnit.connect( SigC::slot( *this, &CargoWidget::click ));
+   unitHighLight.markChanged.connect( sigc::mem_fun( *this, &CargoWidget::checkStoringPosition ));
+   unitHighLight.clickOnMarkedUnit.connect( sigc::mem_fun( *this, &CargoWidget::click ));
 }
 
-bool  CargoWidget::handleScrollTrack (PG_ScrollBar *widget, long data)
+bool  CargoWidget::handleScrollTrack (long data)
 {
    sigScrollTrack();
    return true;
diff --git a/source/dialogs/cargowidget.h b/source/dialogs/cargowidget.h
index ae1b15e..0a95a81 100644
--- a/source/dialogs/cargowidget.h
+++ b/source/dialogs/cargowidget.h
@@ -32,11 +32,11 @@ class HighLightingManager
    public:
       HighLightingManager();
       int getMark();
-      SigC::Signal2<void,int,int> markChanged;
+      sigc::signal<void,int,int> markChanged;
       void setNew(int pos );
-      SigC::Signal0<bool> redrawAll;
+      sigc::signal<bool> redrawAll;
       //! the bool param is set to true if this is the first click on a unit 
-      SigC::Signal3<void,int, SPoint, bool> clickOnMarkedUnit;
+      sigc::signal<void,int, SPoint, bool> clickOnMarkedUnit;
 };
 
 class CargoWidget;
@@ -102,16 +102,16 @@ class CargoWidget : public PG_ScrollWidget {
 
       void click( int num, SPoint mousePos, bool first );
    protected:
-      bool 	handleScrollTrack (PG_ScrollBar *widget, long data);
+      bool 	handleScrollTrack (long data);
       
    public:
       CargoWidget( PG_Widget* parent, const PG_Rect& pos, ContainerBase* container, bool setup );
       bool eventKeyDown(const SDL_KeyboardEvent* key);
       Vehicle* getMarkedUnit();
-      SigC::Signal1<void,Vehicle*> unitMarked;
+      sigc::signal<void,Vehicle*> unitMarked;
 
       //! the bool param is set to true if this is the first click on a unit 
-      SigC::Signal3<void,Vehicle*,SPoint,bool> unitClicked;
+      sigc::signal<void,Vehicle*,SPoint,bool> unitClicked;
       void redrawAll();
       
       void startDrag( Vehicle* v );
@@ -119,15 +119,15 @@ class CargoWidget : public PG_ScrollWidget {
       void releaseDrag( int x, int y );
       
       //! First param: dragged unit, Second Param: target unit
-      SigC::Signal2<void, Vehicle*, Vehicle*> sigDragDone;
+      sigc::signal<void, Vehicle*, Vehicle*> sigDragDone;
       
       //! First param: dragged unit, Second Param: target unit
-      SigC::Signal2<bool, Vehicle*, Vehicle*> sigDragAvail;
+      sigc::signal<bool, Vehicle*, Vehicle*> sigDragAvail;
       
-      SigC::Signal0<void> sigDragInProcess;
-      SigC::Signal0<void> sigDragAborted;
+      sigc::signal<void> sigDragInProcess;
+      sigc::signal<void> sigDragAborted;
 
-      SigC::Signal0<void> sigScrollTrack;
+      sigc::signal<void> sigScrollTrack;
 
       void enableDragNDrop( bool enable ) { dragNdrop = enable; };
       bool dragNdropEnabled() const { return dragNdrop; }; 
diff --git a/source/dialogs/choosetech.cpp b/source/dialogs/choosetech.cpp
index a62e34b..b39d9f8 100644
--- a/source/dialogs/choosetech.cpp
+++ b/source/dialogs/choosetech.cpp
@@ -70,7 +70,7 @@ TechWidget :: TechWidget( PG_Widget* parent, const PG_Point& pos, int width, con
    if ( tech->relatedUnitID > 0 ) {
       PG_Button* b = new PG_Button( this, PG_Rect( width - 2 * lineheight - 10, Height()/2-lineheight, 2*lineheight, 2*lineheight ));
       b->SetIcon( IconRepository::getIcon( "blue-i.png").getBaseSurface() );
-      b->sigClick.connect( SigC::slot( *this, &TechWidget::info ));
+      b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &TechWidget::info )));
    }
    
    SetTransparency( 255 );
@@ -112,7 +112,7 @@ Surface TechWidget::clippingSurface;
 
 
 
-   class TechnologySelectionItemFactory: public SelectionItemFactory, public SigC::Object  {
+   class TechnologySelectionItemFactory: public SelectionItemFactory, public sigc::trackable  {
          Player& player;
          bool allTechs;
       public:
@@ -129,7 +129,7 @@ Surface TechWidget::clippingSurface;
          bool showAllTechs( bool all) { allTechs = all; return true; };
          
          void restart();
-         SigC::Signal1<void,const Technology*> techSelected;
+         sigc::signal<void,const Technology*> techSelected;
    
          SelectionWidget* spawnNextItem( PG_Widget* parent, const PG_Point& pos );
       
@@ -313,19 +313,19 @@ class ChooseTech : public ASC_PG_Dialog
       ChooseTech( Player& my_player ) : ASC_PG_Dialog( NULL, PG_Rect( -1, -1, 770, 600), "Choose Technology" ) , factory(NULL), player( my_player ), goal(NULL), okPressed(false)
       {
          factory = new TechnologySelectionItemFactory( player );
-         factory->techSelected.connect( SigC::slot( *this, &ChooseTech::techSelected ));
+         factory->techSelected.connect( sigc::mem_fun( *this, &ChooseTech::techSelected ));
          itemSelector = new ItemSelectorWidget( this, PG_Rect( 10, 40, 400, Height() - 80 ), factory );
 
-         (allTechsCheckButton = new PG_CheckButton( this, PG_Rect( 10, Height() - 40, 300, 25 ), "Show ~A~ll Technologies"))->sigClick.connect( SigC::slot( *this, &ChooseTech::changeTechView));
+         (allTechsCheckButton = new PG_CheckButton( this, PG_Rect( 10, Height() - 40, 300, 25 ), "Show ~A~ll Technologies"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ChooseTech::changeTechView)));
          techList = new PG_MultiLineEdit( this, PG_Rect ( 450, 40, 300, 200 ));
          techList->SetEditable(false);
          pointsLabel = new PG_Label( this, PG_Rect( 450, 250, 300, 25 ));
          availLabel = new PG_Label( this, PG_Rect( 450, 280, 300, 25 ), "Accumulated research points: " + ASCString::toString( player.research.progress) );
 
-         (new PG_Button( this, PG_Rect( 450, 320, 300, 20), "List Prerequisites" ))->sigClick.connect( SigC::slot( *this, &ChooseTech::showPrerequisites ));
+         (new PG_Button( this, PG_Rect( 450, 320, 300, 20), "List Prerequisites" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ChooseTech::showPrerequisites )));
 
-         AddStandardButton("~C~ancel")->sigClick.connect( SigC::slot( *this, &ChooseTech::cancel ));
-         AddStandardButton("~O~K")->sigClick.connect( SigC::slot( *this, &ChooseTech::ok ));
+         AddStandardButton("~C~ancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ChooseTech::cancel )));
+         AddStandardButton("~O~K")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ChooseTech::ok )));
       };
       
       bool selectionPerformed()
diff --git a/source/dialogs/editgameoptions.cpp b/source/dialogs/editgameoptions.cpp
index e89463e..06a7207 100644
--- a/source/dialogs/editgameoptions.cpp
+++ b/source/dialogs/editgameoptions.cpp
@@ -30,7 +30,7 @@
 
 
 #include "selectionwindow.h"
-#include "sigc++/retype.h"
+#include "sigc++/adaptors/retype.h"
 #include "editmapparam.h"
 #include "fileselector.h"
 #include "../ascstring.h"
@@ -325,11 +325,11 @@ class EditGameOptions : public ASC_PG_Dialog {
          (new PG_PropertyField_String<ASCString>( propertyEditor , "Language Override", &o->languageOverride ));
          
          if ( !mainApp )
-            new PG_PropertyField_Checkbox<bool>( propertyEditor, "DEV: Save event message seperately", &o->saveEventMessagesExternal );
+            new PG_PropertyField_Checkbox<bool>( propertyEditor, "DEV: Save event message separately", &o->saveEventMessagesExternal );
 
         
          PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 100, Height() - 40, 90, 30), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &EditGameOptions::ok ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditGameOptions::ok )));
       };
 
 };
diff --git a/source/dialogs/editmapparam.cpp b/source/dialogs/editmapparam.cpp
index cd45707..9293fa8 100644
--- a/source/dialogs/editmapparam.cpp
+++ b/source/dialogs/editmapparam.cpp
@@ -22,7 +22,7 @@
 #include <pgimage.h>
 
 #include "selectionwindow.h"
-#include "sigc++/retype.h"
+#include "sigc++/adaptors/retype.h"
 #include "editmapparam.h"
 #include "fileselector.h"
 
@@ -98,13 +98,13 @@ GameParameterEditorWidget :: GameParameterEditorWidget ( GameMap* gamemap, PG_Wi
    propertyEditor = new PG_PropertyEditor( this, PG_Rect( 0,0, rect.Width() - 110, rect.Height() ), "PropertyEditor", 70 );
    
    PG_Button* load = new PG_Button( this, PG_Rect( rect.Width() - 100, 0,  100, 30 ), "Load" );
-   load->sigClick.connect( SigC::slot( *this, &GameParameterEditorWidget::LoadParameter ));
+   load->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GameParameterEditorWidget::LoadParameter )));
    
    PG_Button* save = new PG_Button( this, PG_Rect( rect.Width() - 100, 40, 100, 30 ), "Save" );
-   save->sigClick.connect( SigC::slot( *this, &GameParameterEditorWidget::SaveParameter ));
+   save->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GameParameterEditorWidget::SaveParameter )));
    
    PG_Button* def = new PG_Button( this, PG_Rect( rect.Width() - 100, 80, 100, 30 ), "Default" );
-   def->sigClick.connect( SigC::slot( *this, &GameParameterEditorWidget::ResetParameter ));
+   def->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GameParameterEditorWidget::ResetParameter )));
    
    
    for ( int i = 0; i< gameparameternum; ++i ) {
@@ -160,7 +160,7 @@ class EditMapParameters : public ASC_PG_Dialog {
       {
          gpew = new GameParameterEditorWidget ( actmap, this, PG_Rect( 10, GetTitlebarHeight(), Width() - 20, Height() - GetTitlebarHeight() - 40 ));
          PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 100, Height() - 40, 90, 30), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &EditMapParameters::ok ));
+         ok->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EditMapParameters::ok )));
       };
 
 };
diff --git a/source/dialogs/editplayerdata.cpp b/source/dialogs/editplayerdata.cpp
index 00f9679..26f2717 100644
--- a/source/dialogs/editplayerdata.cpp
+++ b/source/dialogs/editplayerdata.cpp
@@ -74,7 +74,7 @@ EditPlayerData :: EditPlayerData(Player& player  ) : ASC_PG_Dialog( NULL, PG_Rec
 //   colorSelector->SetColor( player.getColor() );
 
    StandardButtonDirection( Horizontal );
-   AddStandardButton( "OK")->sigClick.connect( SigC::slot( *this, &EditPlayerData::ok ));
+   AddStandardButton( "OK")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditPlayerData::ok )));
 }
 
 bool EditPlayerData  :: ok()
diff --git a/source/dialogs/edittechadapter.cpp b/source/dialogs/edittechadapter.cpp
index 6cf4a4e..215e3cf 100644
--- a/source/dialogs/edittechadapter.cpp
+++ b/source/dialogs/edittechadapter.cpp
@@ -63,7 +63,7 @@ class TechAdapterWidget: public SelectionWidget
 
 
 
-   class TechAdapterSelectionItemFactory: public SelectionItemFactory, public SigC::Object  {
+   class TechAdapterSelectionItemFactory: public SelectionItemFactory, public sigc::trackable  {
         
          ASCString selected;
          
@@ -84,7 +84,7 @@ class TechAdapterWidget: public SelectionWidget
          
          
          void restart();
-         SigC::Signal1<void,const ASCString&> techSelected;
+         sigc::signal<void,const ASCString&> techSelected;
    
          SelectionWidget* spawnNextItem( PG_Widget* parent, const PG_Point& pos );
       
@@ -285,22 +285,22 @@ class EditTechAdapter : public ASC_PG_Dialog
          
          
          allAdapterfactory = new TechAdapterSelectionItemFactory();
-         allAdapterfactory->techSelected.connect( SigC::slot( *this, &EditTechAdapter::techAdapterSelected ));
+         allAdapterfactory->techSelected.connect( sigc::mem_fun( *this, &EditTechAdapter::techAdapterSelected ));
          allItemSelector = new ItemSelectorWidget( eleft, PG_Rect( 10, 10, eleft->Width() - 20, eleft->Height()-20 ), allAdapterfactory );
 
          playerFactory = new TechAdapterSelectionItemFactory( playerAdapter );
-         playerFactory->techSelected.connect( SigC::slot( *this, &EditTechAdapter::techAdapterSelected ));
+         playerFactory->techSelected.connect( sigc::mem_fun( *this, &EditTechAdapter::techAdapterSelected ));
          playerItemSelector = new ItemSelectorWidget( eright, PG_Rect( 10, 10, eright->Width() - 20, eright->Height()-20 ), playerFactory );
          
          
-         (new PG_Button(this, PG_Rect( left.x + left.Width() + 10, left.y, right.x - left.x - left.Width() - 20,  30), "Add >>" ))->sigClick.connect( SigC::slot( *this, &EditTechAdapter::add));
-         (new PG_Button(this, PG_Rect( left.x + left.Width() + 10, left.y + 40, right.x - left.x - left.Width() - 20,  30), "Remove <<" ))->sigClick.connect( SigC::slot( *this, &EditTechAdapter::remove));
+         (new PG_Button(this, PG_Rect( left.x + left.Width() + 10, left.y, right.x - left.x - left.Width() - 20,  30), "Add >>" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditTechAdapter::add)));
+         (new PG_Button(this, PG_Rect( left.x + left.Width() + 10, left.y + 40, right.x - left.x - left.Width() - 20,  30), "Remove <<" ))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditTechAdapter::remove)));
          
          Emboss* deps = new Emboss(this, PG_Rect ( 10, Height() - 160, 330, 120 ), true);
          objectList = new TextRenderer( deps, PG_Rect(1,1,deps->Width() - 2, deps->Height() - 2) );
 
-         AddStandardButton("~O~K")->sigClick.connect( SigC::slot( *this, &EditTechAdapter::ok ));
-         AddStandardButton("~C~ancel")->sigClick.connect( SigC::slot( *this, &EditTechAdapter::cancel ));
+         AddStandardButton("~O~K")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditTechAdapter::ok )));
+         AddStandardButton("~C~ancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EditTechAdapter::cancel )));
       };
 };
 
diff --git a/source/dialogs/eventeditor.cpp b/source/dialogs/eventeditor.cpp
index 38934b3..4d9c1eb 100644
--- a/source/dialogs/eventeditor.cpp
+++ b/source/dialogs/eventeditor.cpp
@@ -76,7 +76,7 @@ class EventEditor : public ASC_PG_Dialog {
          event->action->setup();
       }
 
-      bool setupTrigger( int num )
+      bool setupTrigger( PG_Widget* w, int num )
       {
          if ( event->trigger.size() > num )
             if ( event->trigger[num] )
@@ -111,7 +111,7 @@ class EventEditor : public ASC_PG_Dialog {
          }
       }
       
-      bool invertTrigger( bool invert, int e )
+      bool invertTrigger( PG_Widget* w, bool invert, int e )
       {
          if ( event->trigger.size() > e ) {
             event->trigger[e]->invert = invert;
@@ -179,8 +179,8 @@ class EventEditor : public ASC_PG_Dialog {
                if ( event->action->getName() == actionNames[i] )
                   eventType->SelectItem ( i );
 
-         eventType->selectionSignal.connect( SigC::slot( *this, &EventEditor::actionSelected ));
-         (new PG_Button( this, PG_Rect( labelWidth + 50 + 300, ypos, 100, 25 ), "setup"))->sigClick.connect( SigC::slot( *this, &EventEditor::setupEvent ));
+         eventType->selectionSignal.connect( sigc::mem_fun( *this, &EventEditor::actionSelected ));
+         (new PG_Button( this, PG_Rect( labelWidth + 50 + 300, ypos, 100, 25 ), "setup"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventEditor::setupEvent )));
          ypos += 40;
 
          new PG_Label( this, PG_Rect( 10, ypos, labelWidth, 25 ), "Description:" );
@@ -193,10 +193,10 @@ class EventEditor : public ASC_PG_Dialog {
             
             DropDownSelector* trigger = new DropDownSelector( this, PG_Rect( labelWidth+30, ypos, 200,25 ), triggerNames );
                  
-            (new PG_Button( this, PG_Rect( labelWidth+50+200, ypos, 100, 25 ), "setup"))->sigClick.connect( SigC::bind( SigC::slot( *this, &EventEditor::setupTrigger ), e));
+            (new PG_Button( this, PG_Rect( labelWidth+50+200, ypos, 100, 25 ), "setup"))->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &EventEditor::setupTrigger ), e));
             
             PG_CheckButton* inv = new PG_CheckButton( this, PG_Rect( labelWidth+70+300, ypos, 100, 25 ), "invert");
-            inv->sigClick.connect( SigC::bind( SigC::slot( *this, &EventEditor::invertTrigger ), e));
+            inv->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &EventEditor::invertTrigger ), e));
             if ( event->trigger.size() > e ) {
                if ( event->trigger[e]->invert )
                   inv->SetPressed();
@@ -209,7 +209,7 @@ class EventEditor : public ASC_PG_Dialog {
                   if ( triggerNames[i] == "Nothing (always false)"  )
                      trigger->SelectItem ( i );
                
-            trigger->selectionSignal.connect( SigC::bind( SigC::slot( *this, &EventEditor::triggerSelected), e ));
+            trigger->selectionSignal.connect( sigc::bind( sigc::mem_fun( *this, &EventEditor::triggerSelected), e ));
             ypos += 40;
          }
 
@@ -243,8 +243,8 @@ class EventEditor : public ASC_PG_Dialog {
          ypos += 40;
 
          
-         AddStandardButton ( "Cancel" )->sigClick.connect( SigC::slot( *this, &EventEditor::QuitModal ));
-         AddStandardButton ( "OK" )->sigClick.connect( SigC::slot( *this, &EventEditor::ok ));
+         AddStandardButton ( "Cancel" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventEditor::QuitModal )));
+         AddStandardButton ( "OK" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventEditor::ok )));
          
       };
 
@@ -366,16 +366,16 @@ class EventList : public ASC_PG_Dialog {
       {
          int w = 500;
          PG_Button* b = new PG_Button( this, PG_Rect ( w, 40, 90, 25 ), "~N~ew" );
-         b->sigClick.connect( SigC::slot( *this, &EventList::ButtonNew ));
+         b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventList::ButtonNew )));
 
          b = new PG_Button( this, PG_Rect ( w, 80, 90, 25 ), "~E~dit" );
-         b->sigClick.connect( SigC::slot( *this, &EventList::ButtonEdit ));
+         b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventList::ButtonEdit )));
          
          b = new PG_Button( this, PG_Rect ( w, 120, 90, 25 ), "~D~elete" );
-         b->sigClick.connect( SigC::slot( *this, &EventList::ButtonDelete ));
+         b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventList::ButtonDelete )));
          
          b = new PG_Button( this, PG_Rect ( w, 160, 90, 25 ), "~O~K" );
-         b->sigClick.connect( SigC::slot( *this, &EventList::ButtonOK ));
+         b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &EventList::ButtonOK )));
          
 
          listbox = new PG_ListBox( this, PG_Rect( 20, 40, w - 30, Height()-50 ));
diff --git a/source/dialogs/eventinfo.cpp b/source/dialogs/eventinfo.cpp
new file mode 100644
index 0000000..f234059
--- /dev/null
+++ b/source/dialogs/eventinfo.cpp
@@ -0,0 +1,66 @@
+/*
+     This file is part of Advanced Strategic Command; http://www.asc-hq.de
+     Copyright (C) 1994-2010  Martin Bickel  and  Marc Schellenberger
+ 
+     This program 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.
+ 
+     This program 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.
+ 
+     You should have received a copy of the GNU General Public License
+     along with this program; see the file COPYING. If not, write to the 
+     Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+     Boston, MA  02111-1307  USA
+*/
+
+
+#include "../global.h"
+
+#include "../typen.h"
+#include "../mapfield.h"
+#include "../gamemap.h"
+#include "eventinfo.h"
+#include "../gameeventsystem.h"
+
+#include "../widgets/textrenderer.h"
+
+
+static const char* triggerStateNames[] = { "unfulfilled", "fulfilled", "finally_fulfilled", "finally_failed" };
+static const char* eventStateNames[] = { "Untriggered", "Triggered", "Timed", "Executed"};
+
+
+void viewEventInfo ( GameMap* gamemap )
+{
+   ASCString text;
+
+   text += "#fontsize=18#Event Information\n";
+
+   for (GameMap::Events::iterator e = gamemap->events.begin(); e != gamemap->events.end(); ++e ) {
+       text += "\n#fontsize=14#" + (*e)->description + "#fontsize=11#\n";
+
+       int counter = 0;
+       for ( vector<EventTrigger*>::iterator t = (*e)->trigger.begin(); t != (*e)->trigger.end(); ++t ) {
+           text += "Trigger " + ASCString::toString(counter++) + " ";
+           text += triggerStateNames[(*t)->state(gamemap->actplayer)];
+           if ( (*t)->invert )
+               text += " (inverted)";
+           text += "\n";
+       }
+       text += "Event ";
+       text += eventStateNames[(*e)->status];
+       text += "\n";
+
+   }
+   
+   ViewFormattedText vft( "Field Information", text, PG_Rect( -1, -1, 420, 600 ));
+   vft.Show();
+   vft.RunModal();
+}
+
+
+
diff --git a/source/dialogs/eventinfo.h b/source/dialogs/eventinfo.h
new file mode 100644
index 0000000..8a5df1c
--- /dev/null
+++ b/source/dialogs/eventinfo.h
@@ -0,0 +1,29 @@
+/*
+     This file is part of Advanced Strategic Command; http://www.asc-hq.de
+     Copyright (C) 1994-2010  Martin Bickel  and  Marc Schellenberger
+ 
+     This program 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.
+ 
+     This program 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.
+ 
+     You should have received a copy of the GNU General Public License
+     along with this program; see the file COPYING. If not, write to the 
+     Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+     Boston, MA  02111-1307  USA
+*/
+
+
+#ifndef EVENTINFO_H
+#define EVENTINFO_H
+
+class GameMap;
+extern void viewEventInfo ( GameMap* gamemap  );
+
+#endif
+
diff --git a/source/dialogs/exchangegraphics.cpp b/source/dialogs/exchangegraphics.cpp
index e0ac14b..a5a389e 100644
--- a/source/dialogs/exchangegraphics.cpp
+++ b/source/dialogs/exchangegraphics.cpp
@@ -283,21 +283,21 @@ class ExchangeGraphics: public ASC_PG_Dialog
          selectedType->AddItem( "Object" );
          selectedType->SelectItem( 0 );
 
-         (new PG_Button( this, PG_Rect( 10, 100, 180, 30), "Select Filename"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::fileSelect ));
+         (new PG_Button( this, PG_Rect( 10, 100, 180, 30), "Select Filename"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::fileSelect )));
 
          terrain = new PG_Label( this, PG_Rect( 10, 140, 180, 25));
          object  = new PG_Label( this, PG_Rect( 10, 170, 180, 25));
 
 
-         (new PG_Button( this, PG_Rect( 10, 200, 180, 30), "Apply"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::apply ));
-         (new PG_Button( this, PG_Rect( 10, 240, 180, 30), "Restore Original"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::restore ));
-         (new PG_Button( this, PG_Rect( 10, 280, 180, 30), "Replacement Summary"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::summary ));
-         (new PG_Button( this, PG_Rect( 10, 320, 180, 30), "Load from file"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::readFile ));
-         (new PG_Button( this, PG_Rect( 10, 360, 180, 30), "Close"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::close ));
-         (new PG_Button( this, PG_Rect( 10, 400, 180, 30), "Snow"))->sigClick.connect( SigC::slot( *this, &ExchangeGraphics::snow ));
+         (new PG_Button( this, PG_Rect( 10, 200, 180, 30), "Apply"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::apply )));
+         (new PG_Button( this, PG_Rect( 10, 240, 180, 30), "Restore Original"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::restore )));
+         (new PG_Button( this, PG_Rect( 10, 280, 180, 30), "Replacement Summary"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::summary )));
+         (new PG_Button( this, PG_Rect( 10, 320, 180, 30), "Load from file"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::readFile )));
+         (new PG_Button( this, PG_Rect( 10, 360, 180, 30), "Close"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::close )));
+         (new PG_Button( this, PG_Rect( 10, 400, 180, 30), "Snow"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ExchangeGraphics::snow )));
 
-         cursorMoved.connect( SigC::slot( *this, &ExchangeGraphics::newCursorPos ));
-         updateFieldInfo.connect( SigC::slot( *this, &ExchangeGraphics::newCursorPos ));
+         cursorMoved.connect( sigc::mem_fun( *this, &ExchangeGraphics::newCursorPos ));
+         updateFieldInfo.connect( sigc::mem_fun( *this, &ExchangeGraphics::newCursorPos ));
    
          newCursorPos();
 
diff --git a/source/dialogs/fieldmarker.cpp b/source/dialogs/fieldmarker.cpp
index 0ddadad..88c9c95 100644
--- a/source/dialogs/fieldmarker.cpp
+++ b/source/dialogs/fieldmarker.cpp
@@ -47,20 +47,20 @@ SelectFromMap::SelectFromMap( CoordinateList& list, GameMap* map, bool justOne,
 
    
    listbox = new PG_ListBox( this, PG_Rect( 10, 30, 130, readOnly ? 210 : 180 ));
-   listbox->sigSelectItem.connect( SigC::slot( *this, &SelectFromMap::listItemClicked ));
+   listbox->sigSelectItem.connect( sigc::mem_fun( *this, &SelectFromMap::listItemClicked ));
 
    if ( !readOnly ) {
       PG_Button* m = new PG_Button ( this, PG_Rect( 10, 230, 130, 20 ), "mark (~space~)");
-      m->sigClick.connect( SigC::slot( *this, &SelectFromMap::mark ));
+      m->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SelectFromMap::mark )));
    }
 
 
    PG_Button* b = new PG_Button ( this, PG_Rect( 10, 270, 130, 20 ), "~O~K");
-   b->sigClick.connect( SigC::slot( *this, &SelectFromMap::closeDialog ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SelectFromMap::closeDialog )));
 
    omp = getMainScreenWidget()->getOverviewMapPanel();
    md  = getMainScreenWidget()->getMapDisplay();
-   md->mouseButtonOnField.connect( SigC::slot( *this, &SelectFromMap::markField2 ));
+   md->mouseButtonOnField.connect( sigc::mem_fun( *this, &SelectFromMap::markField2 ));
    oldprio = md->setSignalPriority( 2 );
    
 
diff --git a/source/dialogs/fileselector.cpp b/source/dialogs/fileselector.cpp
index bd23e94..ba55340 100644
--- a/source/dialogs/fileselector.cpp
+++ b/source/dialogs/fileselector.cpp
@@ -257,15 +257,15 @@ FileSelectionWindow::FileSelectionWindow( PG_Widget *parent, const PG_Rect &r, c
    this->overwriteMessage = overwriteMessage;
 
    factory = new FileSelectionItemFactory( fileWildcard );
-   factory->filenameSelectedMouse.connect ( SigC::slot( *this, &FileSelectionWindow::fileNameSelected ));
-   factory->filenameSelectedKeyb.connect ( SigC::slot( *this, &FileSelectionWindow::fileNameSelected ));
-   // factory->filenameMarked.connect   ( SigC::slot( *this, &FileSelectionWindow::fileNameSelected ));
+   factory->filenameSelectedMouse.connect ( sigc::mem_fun( *this, &FileSelectionWindow::fileNameSelected ));
+   factory->filenameSelectedKeyb.connect ( sigc::mem_fun( *this, &FileSelectionWindow::fileNameSelected ));
+   // factory->filenameMarked.connect   ( sigc::mem_fun( *this, &FileSelectionWindow::fileNameSelected ));
    ItemSelectorWidget* isw = new ItemSelectorWidget( this, PG_Rect(10, GetTitlebarHeight(), r.Width() - 20, r.Height() - GetTitlebarHeight()), factory );
    if ( save ) {
       isw->constrainNames( false );
-      isw->nameEntered.connect( SigC::slot( *this, &FileSelectionWindow::fileNameEntered ));
+      isw->nameEntered.connect( sigc::mem_fun( *this, &FileSelectionWindow::fileNameEntered ));
    }
-   isw->sigQuitModal.connect( SigC::slot( *this, &ItemSelectorWindow::QuitModal));
+   isw->sigQuitModal.connect( sigc::mem_fun( *this, &ItemSelectorWindow::QuitModal));
 
 };
 
@@ -396,15 +396,15 @@ SavegameSelectionWindow::SavegameSelectionWindow( PG_Widget *parent, const PG_Re
    this->overwriteMessage = overwriteMessage;
 
    factory = new SavegameSelectionItemFactory( fileWildcard );
-   factory->filenameSelectedMouse.connect ( SigC::slot( *this, &SavegameSelectionWindow::fileNameSelected ));
-   factory->filenameSelectedKeyb.connect ( SigC::slot( *this, &SavegameSelectionWindow::fileNameSelected ));
-   // factory->filenameMarked.connect   ( SigC::slot( *this, &SavegameSelectionWindow::fileNameSelected ));
+   factory->filenameSelectedMouse.connect ( sigc::mem_fun( *this, &SavegameSelectionWindow::fileNameSelected ));
+   factory->filenameSelectedKeyb.connect ( sigc::mem_fun( *this, &SavegameSelectionWindow::fileNameSelected ));
+   // factory->filenameMarked.connect   ( sigc::mem_fun( *this, &SavegameSelectionWindow::fileNameSelected ));
    ItemSelectorWidget* isw = new ItemSelectorWidget( this, PG_Rect(10, GetTitlebarHeight(), r.Width() - 20, r.Height() - GetTitlebarHeight()), factory );
    if ( save ) {
       isw->constrainNames( false );
-      isw->nameEntered.connect( SigC::slot( *this, &SavegameSelectionWindow::fileNameEntered ));
+      isw->nameEntered.connect( sigc::mem_fun( *this, &SavegameSelectionWindow::fileNameEntered ));
    }
-   isw->sigQuitModal.connect( SigC::slot( *this, &ItemSelectorWindow::QuitModal));
+   isw->sigQuitModal.connect( sigc::mem_fun( *this, &ItemSelectorWindow::QuitModal));
 
 };
 
diff --git a/source/dialogs/fileselector.h b/source/dialogs/fileselector.h
index 89e8e09..6ae931a 100644
--- a/source/dialogs/fileselector.h
+++ b/source/dialogs/fileselector.h
@@ -96,9 +96,9 @@ class FileSelectionItemFactory: public SelectionItemFactory  {
       
       SelectionWidget* spawnNextItem( PG_Widget* parent, const PG_Point& pos );
       
-      SigC::Signal1<void,const ASCString& > filenameSelectedMouse;
-      SigC::Signal1<void,const ASCString& > filenameSelectedKeyb;
-      SigC::Signal1<void,const ASCString& > filenameMarked;
+      sigc::signal<void,const ASCString& > filenameSelectedMouse;
+      sigc::signal<void,const ASCString& > filenameSelectedKeyb;
+      sigc::signal<void,const ASCString& > filenameMarked;
       
       void itemMarked( const SelectionWidget* widget );
       
@@ -145,9 +145,9 @@ class SavegameSelectionItemFactory: public SelectionItemFactory  {
 
       SelectionWidget* spawnNextItem( PG_Widget* parent, const PG_Point& pos );
 
-      SigC::Signal1<void,const ASCString& > filenameSelectedMouse;
-      SigC::Signal1<void,const ASCString& > filenameSelectedKeyb;
-      SigC::Signal1<void,const ASCString& > filenameMarked;
+      sigc::signal<void,const ASCString& > filenameSelectedMouse;
+      sigc::signal<void,const ASCString& > filenameSelectedKeyb;
+      sigc::signal<void,const ASCString& > filenameMarked;
 
       void itemMarked( const SelectionWidget* widget );
 
diff --git a/source/dialogs/gotoposition.cpp b/source/dialogs/gotoposition.cpp
index 4f72aa5..a5ebe12 100644
--- a/source/dialogs/gotoposition.cpp
+++ b/source/dialogs/gotoposition.cpp
@@ -54,13 +54,13 @@ GotoPosition::GotoPosition ( GameMap* gamemap ) : ASC_PG_Dialog( NULL, PG_Rect(
    int fieldwidth = (Width()-3*border)/2;
    xfield = new PG_LineEdit( this, PG_Rect( border, 40, fieldwidth, 20));
    // xfield->SetText( ASCString::toString( gamemap->getCursor().x ));
-   xfield->sigEditReturn.connect( SigC::slot( *this, &GotoPosition::line1completed ));
+   xfield->sigEditReturn.connect( sigc::mem_fun( *this, &GotoPosition::line1completed ));
 
    yfield = new PG_LineEdit( this, PG_Rect( (Width()+border)/2, 40, fieldwidth, 20));
    // yfield->SetText( ASCString::toString( gamemap->getCursor().y ));
-   yfield->sigEditReturn.connect( SigC::slot( *this, &GotoPosition::ok ));
+   yfield->sigEditReturn.connect( sigc::mem_fun( *this, &GotoPosition::ok ));
 
-   AddStandardButton( "~O~k" )->sigClick.connect( SigC::slot( *this, &GotoPosition::ok ));
+   AddStandardButton( "~O~k" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GotoPosition::ok )));
 };
 
 int GotoPosition::RunModal()
diff --git a/source/dialogs/importbi3map.cpp b/source/dialogs/importbi3map.cpp
index 6dccbb5..10d601a 100644
--- a/source/dialogs/importbi3map.cpp
+++ b/source/dialogs/importbi3map.cpp
@@ -134,8 +134,8 @@ class ImportBI3MapDialog : public ASC_PG_Dialog {
 ImportBI3MapDialog::ImportBI3MapDialog( GameMap* gamemap, bool insert ) : ASC_PG_Dialog( NULL, PG_Rect(-1,-1,450,370), "Import BI Map") , actmap(gamemap)
 {
    this->insert = insert;
-   AddStandardButton("OK")->sigClick.connect( SigC::slot( *this, &ImportBI3MapDialog::ok ));
-   AddStandardButton("Cancel")->sigClick.connect( SigC::slot( *this, &ImportBI3MapDialog::cancel ));
+   AddStandardButton("OK")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ImportBI3MapDialog::ok )));
+   AddStandardButton("Cancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ImportBI3MapDialog::cancel )));
 
    int ypos = 30;
    new PG_Label( this, PG_Rect( 20, ypos, Width()-40,20), "Directory of BI3 installation:");
diff --git a/source/dialogs/internalAmmoTransferDialog.cpp b/source/dialogs/internalAmmoTransferDialog.cpp
index c1cddcb..77dcfc8 100644
--- a/source/dialogs/internalAmmoTransferDialog.cpp
+++ b/source/dialogs/internalAmmoTransferDialog.cpp
@@ -302,8 +302,8 @@ InternalAmmoTransferWidget::InternalAmmoTransferWidget( PG_Widget* parent, const
 	slider->SetRange( 0, _handler->getMaxAmmo( weaponID ) );
 	slider->SetPosition( *amount );
 	
-	slider->sigSlide.connect( SigC::slot( *this, &InternalAmmoTransferWidget::slide ));
-	slider->sigSlideEnd.connect( SigC::slot( *this, &InternalAmmoTransferWidget::slideEnd));
+	slider->sigSlide.connect( sigc::mem_fun( *this, &InternalAmmoTransferWidget::slide ));
+	slider->sigSlideEnd.connect( sigc::mem_fun( *this, &InternalAmmoTransferWidget::slideEnd));
 	
 	PG_Rect labels = PG_Rect( 0, 0, pos.w, 20 );
 	std::stringstream nameStream;
@@ -445,7 +445,7 @@ InternalAmmoTransferWindow :: InternalAmmoTransferWindow ( Vehicle* source, PG_W
 	
 	int buttonWidth = 150;
 	PG_Button* b = new PG_Button( this, PG_Rect( w - buttonWidth - border, h - 30 - border, buttonWidth, 30), "OK" );
-	b->sigClick.connect( SigC::slot( *this, &InternalAmmoTransferWindow::ok ));
+	b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &InternalAmmoTransferWindow::ok )));
 }
 
 void internalAmmoTransferWindow ( Vehicle* vehicle )
diff --git a/source/dialogs/locatefile.cpp b/source/dialogs/locatefile.cpp
index 18c687e..93d63e5 100644
--- a/source/dialogs/locatefile.cpp
+++ b/source/dialogs/locatefile.cpp
@@ -25,7 +25,7 @@ class FileFindDialog: public ASC_PG_Dialog {
    private:
       TextRenderer* location;
       PG_LineEdit* le;
-      bool find( PG_LineEdit* le )
+      bool find(  )
       {
          location->SetText("searching ...");
          ASCString filename = le->GetText();
@@ -42,7 +42,7 @@ class FileFindDialog: public ASC_PG_Dialog {
       FileFindDialog () : ASC_PG_Dialog( NULL, PG_Rect( -1, -1, 500, 200 ), "Locate File") 
       {
          le = new PG_LineEdit( this, PG_Rect( 20, 40, 460, 25 ));
-         le->sigEditEnd.connect( SigC::slot( *this, &FileFindDialog::find )); 
+         le->sigEditEnd.connect( sigc::mem_fun( *this, &FileFindDialog::find )); 
          
          location = new TextRenderer ( this, PG_Rect( 20, 90, 460, 90 ));
       }
diff --git a/source/dialogs/mailoptionseditor.cpp b/source/dialogs/mailoptionseditor.cpp
index 34a9d2c..b373593 100644
--- a/source/dialogs/mailoptionseditor.cpp
+++ b/source/dialogs/mailoptionseditor.cpp
@@ -95,10 +95,10 @@ class MailOptionsDialog : public ASC_PG_Dialog {
             }
             
             PG_Button* apply = new PG_Button( this, PG_Rect( Width()/2 + 20, 30, Width()/2-30, 20),"Apply");
-            apply->sigClick.connect( SigC::slot( *this, &MailOptionsDialog::cannedConfigSelected));
+            apply->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MailOptionsDialog::cannedConfigSelected)));
             
            
-            // dds->selectionSignal.connect( SigC::slot( *this, &MailOptionsDialog::cannedConfigSelected));
+            // dds->selectionSignal.connect( sigc::mem_fun( *this, &MailOptionsDialog::cannedConfigSelected));
          } else
             dds = NULL;
          
@@ -109,8 +109,8 @@ class MailOptionsDialog : public ASC_PG_Dialog {
          if ( !help.empty() ) 
             new TextRenderer( this, PG_Rect( 10, 100, Width()-20, 160 ), help); 
          
-         AddStandardButton("OK")->sigClick.connect( SigC::slot( *this, &MailOptionsDialog::ok));
-         AddStandardButton("Cancel")->sigClick.connect( SigC::slot( *this, &MailOptionsDialog::cancel));
+         AddStandardButton("OK")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MailOptionsDialog::ok)));
+         AddStandardButton("Cancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MailOptionsDialog::cancel)));
          
       }
 };
diff --git a/source/dialogs/messagedialog.cpp b/source/dialogs/messagedialog.cpp
index 5c66ba2..9b97cf4 100644
--- a/source/dialogs/messagedialog.cpp
+++ b/source/dialogs/messagedialog.cpp
@@ -57,7 +57,7 @@ MessageDialog::MessageDialog(PG_Widget* parent, const PG_Rect& r, const std::str
 
    my_btnok = new PG_Button(this, btn1, btn1text);
    my_btnok->SetID(1);
-   my_btnok->sigClick.connect(slot(*this, &MessageDialog::handleButton));
+   my_btnok->sigClick.connect( sigc::mem_fun(*this, &MessageDialog::handleButton));
    my_btnok->activateHotkey( 0 );
 
    if ( bttncount == 2 ) {
@@ -66,7 +66,7 @@ MessageDialog::MessageDialog(PG_Widget* parent, const PG_Rect& r, const std::str
 
       my_btncancel = new PG_Button(this, btn2, btn2text);
       my_btncancel->SetID(2);
-      my_btncancel->sigClick.connect(slot(*this, &MessageDialog::handleButton));
+      my_btncancel->sigClick.connect(sigc::mem_fun(*this, &MessageDialog::handleButton));
       my_btncancel->activateHotkey( 0 );
    }
 
@@ -82,7 +82,7 @@ MessageDialog::MessageDialog(PG_Widget* parent, const PG_Rect& r, const std::str
 
    my_btnok = new PG_Button(this, btn1, btn1text);
    my_btnok->SetID(1);
-   my_btnok->sigClick.connect(slot(*this, &MessageDialog::handleButton));
+   my_btnok->sigClick.connect(sigc::mem_fun(*this, &MessageDialog::handleButton));
    my_btnok->activateHotkey( 0 );
 
    Init(windowtext, textalign, style);
diff --git a/source/dialogs/newgame.cpp b/source/dialogs/newgame.cpp
index 41ba009..6fae2f7 100644
--- a/source/dialogs/newgame.cpp
+++ b/source/dialogs/newgame.cpp
@@ -99,7 +99,7 @@ class StartMultiplayerGame: public ConfigurableWindow {
       EmailSetupWidget* emailSetup;
       PG_Widget* emailSetupParent;
    
-      bool nextPage(PG_Button* button = NULL);
+      bool nextPage();
       void showPage();
       bool checkPlayerStat();
       
@@ -226,7 +226,7 @@ StartMultiplayerGame::StartMultiplayerGame(PG_MessageObject* c): ConfigurableWin
    pbemserver(NULL)
 {
     setup();
-    sigClose.connect( SigC::slot( *this, &StartMultiplayerGame::QuitModal ));
+    sigClose.connect( sigc::mem_fun( *this, &StartMultiplayerGame::QuitModal ));
     
     PG_RadioButton* b1 = dynamic_cast<PG_RadioButton*>(FindChild(buttonLabels[0], true ));
     if ( b1 ) 
@@ -234,15 +234,15 @@ StartMultiplayerGame::StartMultiplayerGame(PG_MessageObject* c): ConfigurableWin
 
     PG_Button* next = dynamic_cast<PG_Button*>(FindChild("next", true ));
     if ( next )
-      next->sigClick.connect( SigC::slot( *this, &StartMultiplayerGame::nextPage ));
+      next->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &StartMultiplayerGame::nextPage )));
 
     PG_Button* start = dynamic_cast<PG_Button*>(FindChild("start", true ));
     if ( start )
-      start->sigClick.connect( SigC::slot( *this, &StartMultiplayerGame::start ));
+      start->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &StartMultiplayerGame::start )));
       
     PG_Button* qstart = dynamic_cast<PG_Button*>(FindChild("quickstart", true ));
     if ( qstart )
-      qstart->sigClick.connect( SigC::slot( *this, &StartMultiplayerGame::quickstart ));
+      qstart->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &StartMultiplayerGame::quickstart )));
       
     PG_CheckButton* supervisor = dynamic_cast<PG_CheckButton*>(FindChild("SupervisorOn", true ));
     if ( supervisor ) {
@@ -250,7 +250,7 @@ StartMultiplayerGame::StartMultiplayerGame(PG_MessageObject* c): ConfigurableWin
          supervisor->SetPressed();
        else
           supervisor->SetUnpressed();
-       supervisor->sigClick.connect( SigC::slot( *this, &StartMultiplayerGame::togglesupervisor ));
+       supervisor->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &StartMultiplayerGame::togglesupervisor )));
     }
 
     PG_LineEdit* s1 = dynamic_cast<PG_LineEdit*>( FindChild( "SupervisorPlain", true ));
@@ -301,7 +301,7 @@ void StartMultiplayerGame::loadCampaigns()
    if ( !list ) 
       return;
    
-   list->sigSelectItem.connect( SigC::slot( *this, &StartMultiplayerGame::campaignSelected ));
+   list->sigSelectItem.connect( sigc::hide( sigc::mem_fun( *this, &StartMultiplayerGame::campaignSelected )));
    
    
    tfindfile ff ( "*.asccampaign" );
@@ -527,7 +527,7 @@ GameMap* StartMultiplayerGame::searchForMap( const ASCString& password )
    return NULL;
 }
 
-bool StartMultiplayerGame::nextPage(PG_Button* button)
+bool StartMultiplayerGame::nextPage()
 {
    int oldpage = page;
    switch ( page )  {
@@ -693,9 +693,9 @@ void StartMultiplayerGame::userHandler( const ASCString& label, PropertyReadingC
 {
    if ( label == "FileList" ) {
       FileSelectionItemFactory* factory = new FileSelectionItemFactory( mapextension );
-      factory->filenameSelectedKeyb.connect ( SigC::slot( *this, &StartMultiplayerGame::fileNameSelected ));
-      factory->filenameSelectedMouse.connect ( SigC::slot( *this, &StartMultiplayerGame::fileNameMarked ));
-      factory->filenameMarked.connect   ( SigC::slot( *this, &StartMultiplayerGame::fileNameMarked ));
+      factory->filenameSelectedKeyb.connect ( sigc::mem_fun( *this, &StartMultiplayerGame::fileNameSelected ));
+      factory->filenameSelectedMouse.connect ( sigc::mem_fun( *this, &StartMultiplayerGame::fileNameMarked ));
+      factory->filenameMarked.connect   ( sigc::mem_fun( *this, &StartMultiplayerGame::fileNameMarked ));
       new ItemSelectorWidget( parent, PG_Rect(0, 0, parent->Width(), parent->Height()), factory );
    }
    
diff --git a/source/dialogs/newmap.cpp b/source/dialogs/newmap.cpp
index baf540a..57ce208 100644
--- a/source/dialogs/newmap.cpp
+++ b/source/dialogs/newmap.cpp
@@ -137,7 +137,7 @@ class NewMap: public ASC_PG_Dialog {
          new PG_PropertyField_Checkbox<bool>( properties, "Direct Access", &gamemap->campaign.directaccess );
          (new PG_PropertyField_String<ASCString>( properties, "Password", &gamemap->codeWord )); //->SetPassHidden('*');
          terrainButton = (new PG_PropertyField_Button( properties, "Terrain", "", 50 ))->GetButton();
-         terrainButton->sigClick.connect( SigC::slot( *this, &NewMap::selectTerrain ));
+         terrainButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMap::selectTerrain )));
 
          (new PG_PropertyField_Integer<int>( properties, "Wind Speed", &gamemap->weather.windSpeed ))->SetRange(0,255);
 
@@ -152,8 +152,8 @@ class NewMap: public ASC_PG_Dialog {
 
          StandardButtonDirection ( ASC_PG_Dialog::Horizontal );
 
-         AddStandardButton ( "Cancel" )->sigClick.connect( SigC::slot( *this, &NewMap::cancel ));
-         AddStandardButton ( "OK" )->sigClick.connect( SigC::slot( *this, &NewMap::ok ));
+         AddStandardButton ( "Cancel" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMap::cancel )));
+         AddStandardButton ( "OK" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMap::ok )));
          
       };
 
diff --git a/source/dialogs/nextcampaignmap.cpp b/source/dialogs/nextcampaignmap.cpp
index 4bf0b00..d62a912 100644
--- a/source/dialogs/nextcampaignmap.cpp
+++ b/source/dialogs/nextcampaignmap.cpp
@@ -44,7 +44,7 @@ NextCampaignMap :: NextCampaignMap(PG_Widget* parent, const PG_Rect& r ) : Confi
 
    PG_Button* b = dynamic_cast<PG_Button*>( FindChild( "GO", true ) );
    if ( b )
-      b->sigClick.connect( SigC::slot( *this, &NextCampaignMap::QuitModal ));
+      b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NextCampaignMap::QuitModal )));
    
 }
 
diff --git a/source/dialogs/playersetup.cpp b/source/dialogs/playersetup.cpp
index a9c5e2a..9af061c 100644
--- a/source/dialogs/playersetup.cpp
+++ b/source/dialogs/playersetup.cpp
@@ -134,9 +134,9 @@ class PlayerSetupWindow : public ASC_PG_Dialog {
       {
          asw = new PlayerSetupWidget( actmap, PlayerSetupWidget::AllEditable, this, PG_Rect( 5, 30, r.Width() - 10, r.Height() - 60 ));
          PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 200, Height() - 30, 90, 20 ), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &PlayerSetupWindow::Apply ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PlayerSetupWindow::Apply )));
          PG_Button* cancel = new PG_Button( this, PG_Rect( Width() - 100, Height() - 30, 90, 20 ), "Cancel" );
-         cancel->sigClick.connect( SigC::slot( *this, &PlayerSetupWindow::QuitModal ));
+         cancel->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PlayerSetupWindow::QuitModal )));
       }
 
       bool Apply()
diff --git a/source/dialogs/pwd_dlg.cpp b/source/dialogs/pwd_dlg.cpp
index 753445f..b79bea7 100644
--- a/source/dialogs/pwd_dlg.cpp
+++ b/source/dialogs/pwd_dlg.cpp
@@ -109,12 +109,12 @@
                   
                   line1 = new PG_LineEdit( this, PG_Rect( border, 50, Width() - 2 * border, 20));
                   line1->SetPassHidden('*');
-                  line1->sigEditReturn.connect( SigC::slot( *this, &PasswordDialog::line1completed ));
+                  line1->sigEditReturn.connect( sigc::mem_fun( *this, &PasswordDialog::line1completed ));
 
                   if ( firstTime ) {
                      line2 = new PG_LineEdit( this, PG_Rect( border, 80, Width() - 2 * border, 20));
                      line2->SetPassHidden('*');
-                     line2->sigEditReturn.connect( SigC::slot( *this, &PasswordDialog::ok ));
+                     line2->sigEditReturn.connect( sigc::mem_fun( *this, &PasswordDialog::ok ));
                   } else {
                      line2 = NULL;
                   }
@@ -126,18 +126,18 @@
                      bnum = 2;
 
                   
-                  addButton ( "~O~k", bnum ) -> sigClick.connect( SigC::slot( *this, &PasswordDialog::ok ));
+                  addButton ( "~O~k", bnum ) -> sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PasswordDialog::ok )));
                   
                   if ( firstTime && defaultAllowed ) {
-                     addButton ( "~D~efault", bnum ) -> sigClick.connect( SigC::slot( *this, &PasswordDialog::def ));
+                     addButton ( "~D~efault", bnum ) -> sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PasswordDialog::def )));
                      if ( cancelAllowed ) {
-                        addButton ( "~C~ancel", bnum ) -> sigClick.connect( SigC::slot( *this, &PasswordDialog::cancel ));
+                        addButton ( "~C~ancel", bnum ) -> sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PasswordDialog::cancel )));
                      }
                   } else {
                      if ( cancelAllowed ) {
-                        addButton ( "~C~ancel", bnum ) -> sigClick.connect( SigC::slot( *this, &PasswordDialog::cancel ));
+                        addButton ( "~C~ancel", bnum ) -> sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PasswordDialog::cancel )));
                      } else {
-                        addButton ( "~A~bort", bnum ) -> sigClick.connect( SigC::slot( *this, &PasswordDialog::cancel ));
+                        addButton ( "~A~bort", bnum ) -> sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PasswordDialog::cancel )));
                      }
                   }
                };
diff --git a/source/dialogs/replayrecorder.cpp b/source/dialogs/replayrecorder.cpp
index 96296a9..1021e7e 100644
--- a/source/dialogs/replayrecorder.cpp
+++ b/source/dialogs/replayrecorder.cpp
@@ -68,7 +68,7 @@ ReplayRecorderDialog::ReplayRecorderDialog( const ASCString& file, bool fileAlre
    new PG_Label(this, PG_Rect(20,30,80,25),"File:");
    filename = new PG_LineEdit( this, PG_Rect( 120, 30, 150, 25 ));
    filename->SetText( file );
-   (new PG_Button(this, PG_Rect( 290, 30, 90, 25), "Browse"))->sigClick.connect( SigC::slot( *this, &ReplayRecorderDialog::selectFilename ));
+   (new PG_Button(this, PG_Rect( 290, 30, 90, 25), "Browse"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ReplayRecorderDialog::selectFilename )));
    
    if ( !file.empty() && fileAlreadyOpen ) {
       append = new PG_CheckButton( this, PG_Rect( 120, 70, 150, 25), "append to video");
@@ -91,7 +91,7 @@ ReplayRecorderDialog::ReplayRecorderDialog( const ASCString& file, bool fileAlre
    
    
    
-   (new PG_Button( this, PG_Rect( 20, 240, 100, 30 ), "OK"))->sigClick.connect( SigC::slot(*this, &ReplayRecorderDialog::ok ));
+   (new PG_Button( this, PG_Rect( 20, 240, 100, 30 ), "OK"))->sigClick.connect( sigc::hide( sigc::mem_fun(*this, &ReplayRecorderDialog::ok )));
    
 }
 
diff --git a/source/dialogs/selectionwindow.cpp b/source/dialogs/selectionwindow.cpp
index 7cbaa26..5cf3196 100644
--- a/source/dialogs/selectionwindow.cpp
+++ b/source/dialogs/selectionwindow.cpp
@@ -268,8 +268,8 @@ void ItemSelectorWidget::reLoad( bool show )
       if ( visibleRowCount < 0 )
          visibleRowCount = scrollWidget->Height() / (w->Height() + gapWidth);
 
-      w->itemSelected.connect( SigC::bind( SigC::slot( *this, &ItemSelectorWidget::itemSelected ), true ));
-      w->itemMarked.connect( SigC::slot( *this, &ItemSelectorWidget::markItem ));
+      w->itemSelected.connect( sigc::bind( sigc::mem_fun( *this, &ItemSelectorWidget::itemSelected ), true ));
+      w->itemMarked.connect( sigc::mem_fun( *this, &ItemSelectorWidget::markItem ));
       w->setSelectionCallback( &selectionCallBack );
       widgets.push_back ( w );
       
@@ -308,8 +308,8 @@ ItemSelectorWindow::ItemSelectorWindow( PG_Widget *parent, const PG_Rect &r , co
    
    itemSelector = new ItemSelectorWidget( this, PG_Rect( 5, GetTitlebarHeight () + 2, Width()-5, Height()- GetTitlebarHeight ()- 5 ), itemFactory );
    
-   itemSelector->sigItemSelected.connect(  SigC::slot( *this, &ItemSelectorWindow::itemSelected ));
-   itemSelector->sigQuitModal.connect( SigC::slot( *this, &ItemSelectorWindow::QuitModal));
+   itemSelector->sigItemSelected.connect(  sigc::mem_fun( *this, &ItemSelectorWindow::itemSelected ));
+   itemSelector->sigQuitModal.connect( sigc::mem_fun( *this, &ItemSelectorWindow::QuitModal));
 };
 
 void ItemSelectorWindow::itemSelected( const SelectionWidget* )
diff --git a/source/dialogs/selectionwindow.h b/source/dialogs/selectionwindow.h
index 09a7419..1ff5c02 100644
--- a/source/dialogs/selectionwindow.h
+++ b/source/dialogs/selectionwindow.h
@@ -58,8 +58,8 @@ class SelectionWidget : public PG_Widget {
       virtual ASCString getName() const = 0;
       
 
-      SigC::Signal1<void,const SelectionWidget*> itemSelected;
-      SigC::Signal1<void,const SelectionWidget*> itemMarked;
+      sigc::signal<void,const SelectionWidget*> itemSelected;
+      sigc::signal<void,const SelectionWidget*> itemMarked;
                  
    protected:
       
@@ -118,9 +118,9 @@ class ItemSelectorWidget : public PG_Widget {
       // the ItemSelectorWindow will take ownership over the itemFactory
       ItemSelectorWidget( PG_Widget *parent, const PG_Rect &r , SelectionItemFactory* itemFactory ) ;
 
-      SigC::Signal1<void,const SelectionWidget*> sigItemSelected;
-      SigC::Signal1<void,ASCString> nameEntered;
-      SigC::Signal0<bool> sigQuitModal;
+      sigc::signal<void,const SelectionWidget*> sigItemSelected;
+      sigc::signal<void,ASCString> nameEntered;
+      sigc::signal<bool> sigQuitModal;
       
       void constrainNames( bool constrain );
       int getItemNum() const { return widgets.size(); };
diff --git a/source/dialogs/soundsettings.cpp b/source/dialogs/soundsettings.cpp
index 16db7b0..c63be3d 100644
--- a/source/dialogs/soundsettings.cpp
+++ b/source/dialogs/soundsettings.cpp
@@ -34,8 +34,9 @@ class SoundSettings : public ASC_PG_Dialog
    protected:
 
       bool radioButtonEvent( PG_RadioButton* button, bool state);
-      bool buttonEvent( PG_Button* button );
-      bool eventScrollTrack(PG_ScrollBar* slider, long data);
+      bool buttonEvent( );
+      bool eventScrollTrack_sound(long data);
+      bool eventScrollTrack_music(long data);
 
       bool diag();
 };
@@ -53,12 +54,12 @@ SoundSettings::SoundSettings(PG_Widget* parent, const PG_Rect& r, PG_MessageObje
    sSettings = CGameOptions::Instance()->sound;
 
    PG_CheckButton* musb = new PG_CheckButton(this, PG_Rect( 30, 50, 200, 20 ), "Enable Music", 1 );
-   musb->sigClick.connect(SigC::slot( *this, &SoundSettings::radioButtonEvent ));
+   musb->sigClick.connect( sigc::mem_fun( *this, &SoundSettings::radioButtonEvent ));
    new PG_Label ( this, PG_Rect(30, 80, 150, 20), "Music Volume" );
    PG_Slider* mus = new PG_Slider(this, PG_Rect(180, 80, 200, 20), PG_Slider::HORIZONTAL, 21);
    mus->SetRange(0,100);
    mus->SetPosition(sSettings.musicVolume);
-   mus->sigScrollTrack.connect( SigC::slot( *this, &SoundSettings::eventScrollTrack ));
+   mus->sigScrollTrack.connect( sigc::mem_fun( *this, &SoundSettings::eventScrollTrack_music ));
 
    if ( sSettings.muteMusic )
       musb->SetUnpressed();
@@ -67,12 +68,12 @@ SoundSettings::SoundSettings(PG_Widget* parent, const PG_Rect& r, PG_MessageObje
 
 
    PG_CheckButton* sndb = new PG_CheckButton(this, PG_Rect( 30, 150, 200, 20 ), "Enable Sound", 2 );
-   sndb->sigClick.connect(SigC::slot( *this, &SoundSettings::radioButtonEvent ));
+   sndb->sigClick.connect( sigc::mem_fun( *this, &SoundSettings::radioButtonEvent ));
    new PG_Label ( this, PG_Rect(30, 180, 150, 20), "Sound Volume" );
    PG_Slider* snd = new PG_Slider(this, PG_Rect(180, 180, 200, 20), PG_Slider::HORIZONTAL, 31);
    snd->SetRange(0,100);
    snd->SetPosition(sSettings.soundVolume);
-   snd->sigScrollTrack.connect( SigC::slot( *this, &SoundSettings::eventScrollTrack ));
+   snd->sigScrollTrack.connect( sigc::mem_fun( *this, &SoundSettings::eventScrollTrack_sound ));
    if ( sSettings.muteEffects )
       sndb->SetUnpressed();
    else
@@ -80,16 +81,16 @@ SoundSettings::SoundSettings(PG_Widget* parent, const PG_Rect& r, PG_MessageObje
 
 
    PG_Button* b1 = new PG_Button(this, PG_Rect(30,r.h-40,(r.w-70)/2,30), "OK", 100);
-   b1->sigClick.connect(SigC::slot( *this, &SoundSettings::closeWindow ));
+   b1->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &SoundSettings::closeWindow )));
 
    PG_Button* b2 = new PG_Button(this, PG_Rect(r.w/2+5,r.h-40,(r.w-70)/2,30), "Cancel", 101);
-   b2->sigClick.connect(SigC::slot( *this, &SoundSettings::buttonEvent ));
+   b2->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &SoundSettings::buttonEvent )));
 
-   sigClose.connect( SigC::slot( *this, &SoundSettings::closeWindow ));
+   sigClose.connect( sigc::mem_fun( *this, &SoundSettings::closeWindow ));
    
 
    PG_Button* b3 = new PG_Button(this, PG_Rect( Width() -100, 25, 90, 20 ), "Diagnostics" );
-   b3->sigClick.connect( SigC::slot( *this, &SoundSettings::diag));
+   b3->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SoundSettings::diag)));
 
    // caller = c;
    // SetInputFocus();
@@ -119,22 +120,20 @@ bool SoundSettings::radioButtonEvent( PG_RadioButton* button, bool state)
 }
 
 
-bool SoundSettings::eventScrollTrack(PG_ScrollBar* slider, long data)
+bool SoundSettings::eventScrollTrack_music(long data)
 {
-   if(slider->GetID() == 21) {
-      CGameOptions::Instance()->sound.musicVolume = data;
-      CGameOptions::Instance()->setChanged();
-      updateSettings();
-      return true;
-   }
-
-   if(slider->GetID() == 31) {
-      CGameOptions::Instance()->sound.soundVolume = data;
-      CGameOptions::Instance()->setChanged();
-      updateSettings();
-      return true;
-   }
-   return false;
+  CGameOptions::Instance()->sound.musicVolume = data;
+  CGameOptions::Instance()->setChanged();
+  updateSettings();
+  return true;
+}
+
+bool SoundSettings::eventScrollTrack_sound(long data)
+{
+  CGameOptions::Instance()->sound.soundVolume = data;
+  CGameOptions::Instance()->setChanged();
+  updateSettings();
+  return true;
 }
 
 
@@ -148,7 +147,7 @@ bool SoundSettings::diag()
 }
 
 
-bool SoundSettings::buttonEvent( PG_Button* button )
+bool SoundSettings::buttonEvent( )
 {
    quitModalLoop(2);
    CGameOptions::Instance()->sound = sSettings;
diff --git a/source/dialogs/taskmanager.cpp b/source/dialogs/taskmanager.cpp
index 52a7e8c..5a73c46 100644
--- a/source/dialogs/taskmanager.cpp
+++ b/source/dialogs/taskmanager.cpp
@@ -76,8 +76,8 @@ class TaskWidget: public ActionWidget
          this->taskContainer = taskContainer;
          this->command = command;
          
-         (new PG_Button(this, PG_Rect( width-70, 5, 60, 15 ), "Run"))->sigClick.connect( SigC::slot( *this, &TaskWidget::run ));
-         (new PG_Button(this, PG_Rect( width-70, 22, 60, 15 ), "Cancel"))->sigClick.connect( SigC::slot( *this, &TaskWidget::cancel ));
+         (new PG_Button(this, PG_Rect( width-70, 5, 60, 15 ), "Run"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &TaskWidget::run )));
+         (new PG_Button(this, PG_Rect( width-70, 22, 60, 15 ), "Cancel"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &TaskWidget::cancel )));
       }
    protected:
       bool click( )
@@ -176,8 +176,8 @@ class TaskManager : public ASC_PG_Dialog {
       TaskManager( GameMap* map ) : ASC_PG_Dialog( NULL, PG_Rect( -1, -1, 600, 550 ), "Manage Tasks" ), gamemap( map ) 
       {
          StandardButtonDirection( Horizontal );
-         AddStandardButton("Close")->sigClick.connect( SigC::slot( *this, &TaskManager::ok ));
-         AddStandardButton("Run All")->sigClick.connect( SigC::slot( *this, &TaskManager::run ));
+         AddStandardButton("Close")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &TaskManager::ok )));
+         AddStandardButton("Run All")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &TaskManager::run )));
          selection = new ItemSelectorWidget( this, PG_Rect( 5, 20, Width()-10, Height() - 70 ), new TaskFactory( map ));
       }
    
diff --git a/source/dialogs/unitcounting.cpp b/source/dialogs/unitcounting.cpp
index 3a2fcc0..2ce7f7d 100644
--- a/source/dialogs/unitcounting.cpp
+++ b/source/dialogs/unitcounting.cpp
@@ -27,7 +27,7 @@
 
 
 
-class VehicleCounterFactory: public SelectionItemFactory, public SigC::Object  {
+class VehicleCounterFactory: public SelectionItemFactory, public sigc::trackable  {
 public:
     typedef vector<const VehicleType*> Container;
 protected:
diff --git a/source/dialogs/unitguidedialog.cpp b/source/dialogs/unitguidedialog.cpp
index 5148388..85f34dd 100644
--- a/source/dialogs/unitguidedialog.cpp
+++ b/source/dialogs/unitguidedialog.cpp
@@ -791,7 +791,7 @@ UnitGuideWidget::UnitGuideWidget( PG_Widget* parent, const PG_Rect& pos, int tab
 	{
 		mainCategory->AddItem( mainCategories[ i ].name );
 	}
-	mainCategory->selectionSignal.connect( SigC::slot( *this, &UnitGuideWidget::mainCategoryChanged ) );
+	mainCategory->selectionSignal.connect( sigc::mem_fun( *this, &UnitGuideWidget::mainCategoryChanged ) );
 	xPos += 220;
 	
 	unitSetLabel = new PG_Label ( this, PG_Rect( xPos, yPos, 100, 20 ), "Unit Set" );
@@ -803,7 +803,7 @@ UnitGuideWidget::UnitGuideWidget( PG_Widget* parent, const PG_Rect& pos, int tab
 	{
 		unitSet->AddItem( unitSets[ i ]->name );
 	}
-	unitSet->selectionSignal.connect( SigC::slot( *this, &UnitGuideWidget::unitSetChanged ) );
+	unitSet->selectionSignal.connect( sigc::mem_fun( *this, &UnitGuideWidget::unitSetChanged ) );
 	xPos = 20;
 	yPos += 25;
 	
@@ -812,7 +812,7 @@ UnitGuideWidget::UnitGuideWidget( PG_Widget* parent, const PG_Rect& pos, int tab
 	xPos += 120;
 	
 	subCategory = new DropDownSelector( this, PG_Rect( xPos, yPos, 200, 20 ) );
-	subCategory->selectionSignal.connect( SigC::slot( *this, &UnitGuideWidget::subCategoryChanged ) );
+	subCategory->selectionSignal.connect( sigc::mem_fun( *this, &UnitGuideWidget::subCategoryChanged ) );
 	xPos += 220;
 	
 	unitLabel = new PG_Label ( this, PG_Rect( xPos, yPos, 100, 20 ), "Unit" );
@@ -838,11 +838,11 @@ UnitGuideWidget::UnitGuideWidget( PG_Widget* parent, const PG_Rect& pos, int tab
 	xPos += 120;
 	
 	showDifference = new PG_CheckButton( this, PG_Rect( xPos, yPos, 20, 20 ) );
-  showDifference->sigClick.connect( SigC::slot( *this, &UnitGuideWidget::showDifferenceTrigger ));
+  showDifference->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &UnitGuideWidget::showDifferenceTrigger )));
 	xPos += 40;
 	
 	display = new PG_Button( this, PG_Rect( xPos, yPos, 100, 20 ), "display" );
-  display->sigClick.connect( SigC::slot( *this, &UnitGuideWidget::displayUnit ));
+  display->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &UnitGuideWidget::displayUnit )));
 	xPos += 120;
 	
 	page = new DropDownSelector( this, PG_Rect( xPos, yPos, 200, 20 ) );
@@ -854,7 +854,7 @@ UnitGuideWidget::UnitGuideWidget( PG_Widget* parent, const PG_Rect& pos, int tab
 	page->AddItem( "TerrainAccess 1" );
 	page->AddItem( "TerrainAccess 2" );
 	page->AddItem( "Production" );
-	page->selectionSignal.connect( SigC::slot( *this, &UnitGuideWidget::pageChanged ) );
+	page->selectionSignal.connect( sigc::mem_fun( *this, &UnitGuideWidget::pageChanged ) );
 	
 	xPos = 0;
 	yPos += 25;
diff --git a/source/dialogs/unitinfodialog.cpp b/source/dialogs/unitinfodialog.cpp
index 9a42c6e..178e8bf 100644
--- a/source/dialogs/unitinfodialog.cpp
+++ b/source/dialogs/unitinfodialog.cpp
@@ -83,15 +83,15 @@ class UnitInfoDialog : public Panel {
          {
             SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( name, true ) );
             if ( sdw )
-               sdw->display.connect( SigC::slot( *this, &UnitInfoDialog::painter ));
+               sdw->display.connect( sigc::mem_fun( *this, &UnitInfoDialog::painter ));
          };
 
          void registerSpecialInput( const ASCString& name )
          {
             SpecialInputWidget* siw = dynamic_cast<SpecialInputWidget*>( FindChild( name, true ) );
             if ( siw ) {
-               siw->sigMouseButtonDown.connect( SigC::slot( *this, &UnitInfoDialog::onClick ));
-               siw->sigMouseButtonUp.connect( SigC::slot( *this, &UnitInfoDialog::onRelease ));
+               siw->sigMouseButtonDown.connect( sigc::mem_fun( *this, &UnitInfoDialog::onClick ));
+               siw->sigMouseButtonUp.connect( sigc::mem_fun( *this, &UnitInfoDialog::onRelease ));
             }
          };
 
@@ -312,7 +312,7 @@ class UnitInfoDialog : public Panel {
         
         UnitInfoDialog (PG_Widget *parent, const Vehicle* vehicle, const VehicleType* vehicleType ) 
            : Panel( parent, PG_Rect::null, "UnitInfoDialog", false ), veh(vehicle), vt( vehicleType ), weaponGraph(NULL), currentWeapon(-1) {
-               sigClose.connect( SigC::slot( *this, &UnitInfoDialog::QuitModal ));
+               sigClose.connect( sigc::mem_fun( *this, &UnitInfoDialog::QuitModal ));
 
                if( veh )
                   vt = veh->typ;
@@ -499,7 +499,7 @@ class UnitInfoDialog : public Panel {
                yoffset += sw->Height();
 
                assignWeaponInfo( this, sw, vt->weapons.weapon[i] );
-               sw->sigMouseButtonDown.connect( SigC::bind( SigC::slot( *this, &UnitInfoDialog::onWeaponClick ), i));
+               sw->sigMouseButtonDown.connect( sigc::bind( sigc::mem_fun( *this, &UnitInfoDialog::onWeaponClick ), i));
             }
          }
          if ( label == "entrancesystems" && vt ) {
@@ -520,7 +520,7 @@ class UnitInfoDialog : public Panel {
                xoffset += sw->Width();
 
                // assignWeaponInfo( this, sw, vt->weapons.weapon[i] );
-               sw->sigMouseButtonDown.connect( SigC::bind( SigC::slot( *this, &UnitInfoDialog::onEntranceClick ), i));
+               sw->sigMouseButtonDown.connect( sigc::bind( sigc::mem_fun( *this, &UnitInfoDialog::onEntranceClick ), i));
             }
          }
       }; 
diff --git a/source/dialogs/unitnaming.cpp b/source/dialogs/unitnaming.cpp
index 26e58e3..db88a96 100644
--- a/source/dialogs/unitnaming.cpp
+++ b/source/dialogs/unitnaming.cpp
@@ -50,14 +50,14 @@ UnitNaming::UnitNaming ( ContainerBase* myUnit) : ASC_PG_Dialog( NULL, PG_Rect(
    int fieldwidth = Width() - 3 * border - width;
    publicName = new PG_LineEdit( this, PG_Rect( border*2 + width, 40, fieldwidth, 20));
    publicName->SetText( myUnit->name );
-   publicName->sigEditReturn.connect( SigC::slot( *this, &UnitNaming::line1completed ));
+   publicName->sigEditReturn.connect( sigc::mem_fun( *this, &UnitNaming::line1completed ));
 
    new PG_Label( this, PG_Rect( border, 70, width, 20), "Private: ");
    privateName = new PG_LineEdit( this, PG_Rect( border*2 + width, 70, fieldwidth, 20));
    privateName->SetText( myUnit->privateName);
-   privateName->sigEditReturn.connect( SigC::slot( *this, &UnitNaming::ok ));
+   privateName->sigEditReturn.connect( sigc::mem_fun( *this, &UnitNaming::ok ));
 
-   AddStandardButton( "~O~k" )->sigClick.connect( SigC::slot( *this, &UnitNaming::ok ));
+   AddStandardButton( "~O~k" )->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &UnitNaming::ok )));
 };
 
 int UnitNaming::RunModal()
diff --git a/source/dialogs/vehicleproductionselection.cpp b/source/dialogs/vehicleproductionselection.cpp
index 24f8393..3c2121d 100644
--- a/source/dialogs/vehicleproductionselection.cpp
+++ b/source/dialogs/vehicleproductionselection.cpp
@@ -223,23 +223,23 @@ VehicleProduction_SelectionWindow::VehicleProduction_SelectionWindow( PG_Widget
       factory->setResourceFilling ( false );
    }
 
-   factory->sigVehicleTypeSelected.connect ( SigC::slot( *this, &VehicleProduction_SelectionWindow::vtSelected ));
-   factory->sigVehicleTypeMarked.connect ( SigC::slot( *this, &VehicleProduction_SelectionWindow::vtMarked ));
+   factory->sigVehicleTypeSelected.connect ( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::vtSelected ));
+   factory->sigVehicleTypeMarked.connect ( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::vtMarked ));
 
    isw = new ItemSelectorWidget( this, PG_Rect(10, GetTitlebarHeight(), r.Width() - 20, r.Height() - GetTitlebarHeight() - 40), factory );
-   isw->sigQuitModal.connect( SigC::slot( *this, &VehicleProduction_SelectionWindow::quitSignalled));
+   isw->sigQuitModal.connect( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::quitSignalled));
 
    int y = GetTitlebarHeight() + isw->Height();
    if ( internally ) {
       PG_CheckButton* fillRes = new PG_CheckButton( this, PG_Rect( 10, y + 2, r.Width() / 2 - 50, 20), "Fill with Resources" );
       if ( factory->getResourceFilling() )
          fillRes->SetPressed();
-      fillRes->sigClick.connect( SigC::slot( *factory, &VehicleProduction_SelectionItemFactory::setResourceFilling ));
+      fillRes->sigClick.connect( sigc::hide( sigc::mem_fun( *factory, &VehicleProduction_SelectionItemFactory::setResourceFilling )));
       if ( plant->baseType->hasFunction(ContainerBaseType::AmmoProduction)) {
          PG_CheckButton* fillAmmo = new PG_CheckButton( this, PG_Rect( 10, y + 20, r.Width() / 2 - 50, 20), "Fill with Ammo" );
          if ( factory->getAmmoFilling() )
             fillAmmo->SetPressed();
-         fillAmmo->sigClick.connect( SigC::slot( *factory, &VehicleProduction_SelectionItemFactory::setAmmoFilling ));
+         fillAmmo->sigClick.connect( sigc::hide( sigc::mem_fun( *factory, &VehicleProduction_SelectionItemFactory::setAmmoFilling )));
       } else
          factory->setAmmoFilling( false );
          
@@ -248,19 +248,19 @@ VehicleProduction_SelectionWindow::VehicleProduction_SelectionWindow( PG_Widget
       factory->setResourceFilling ( false );
    }
 
-   factory->reloadAllItems.connect( SigC::slot( *this, &VehicleProduction_SelectionWindow::reLoadAndUpdate ));
+   factory->reloadAllItems.connect( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::reLoadAndUpdate ));
    
    PG_Rect rr ( r.Width() / 2 + 10, y + 2, (r.Width() - 20) - (r.Width() / 2 + 10) , 35);
    PG_Button* b  = new PG_Button( this, PG_Rect( rr.x + rr.h + 5, rr.y, rr.w - 40, rr.h ) , "Produce" );
-   b->sigClick.connect( SigC::slot( *this,&VehicleProduction_SelectionWindow::produce ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this,&VehicleProduction_SelectionWindow::produce )));
 
    if ( !plant->baseType->hasFunction(ContainerBaseType::NoProductionCustomization) && internally ) {
       PG_Button* b2 = new PG_Button( this, PG_Rect( rr.x, rr.y, rr.h, rr.h ), "+" );
-      b2->sigClick.connect( SigC::slot( *this, &VehicleProduction_SelectionWindow::addProductionLine ));
+      b2->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::addProductionLine )));
       new PG_ToolTipHelp( b2, "Add production line");
 
       PG_Button* b3 = new PG_Button( this, PG_Rect( rr.x - rr.h - 5, rr.y, rr.h, rr.h ), "-" );
-      b3->sigClick.connect( SigC::slot( *this, &VehicleProduction_SelectionWindow::removeProductionLine ));
+      b3->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &VehicleProduction_SelectionWindow::removeProductionLine )));
       new PG_ToolTipHelp( b3, "Remove production line");
    }
 };
diff --git a/source/dialogs/vehicleproductionselection.h b/source/dialogs/vehicleproductionselection.h
index 5c25e5e..ca24101 100644
--- a/source/dialogs/vehicleproductionselection.h
+++ b/source/dialogs/vehicleproductionselection.h
@@ -45,8 +45,8 @@ class VehicleProduction_SelectionItemFactory: public VehicleTypeSelectionItemFac
 
       Resources getCost( const VehicleType* type );
 
-      SigC::Signal2<void,const VehicleType*, bool > sigVehicleTypeSelected;
-      SigC::Signal1<void,const VehicleType* > sigVehicleTypeMarked;
+      sigc::signal<void,const VehicleType*, bool > sigVehicleTypeSelected;
+      sigc::signal<void,const VehicleType* > sigVehicleTypeMarked;
       
       void updateProducables();
       
@@ -99,7 +99,7 @@ class VehicleProduction_SelectionWindow : public ASC_PG_Dialog
       
       void updateProducables();
       
-      SigC::Signal0<void> reloadProducebles;
+      sigc::signal<void> reloadProducebles;
       
       bool addProductionLine();
 
diff --git a/source/dialogs/vehicletypeselector.cpp b/source/dialogs/vehicletypeselector.cpp
index 0d263b2..10be933 100644
--- a/source/dialogs/vehicletypeselector.cpp
+++ b/source/dialogs/vehicletypeselector.cpp
@@ -39,7 +39,7 @@ VehicleTypeBaseWidget :: VehicleTypeBaseWidget( PG_Widget* parent, const PG_Poin
 
    PG_Button* b = new PG_Button( this, PG_Rect( buttonXPos(width, 0 ), Height()/2-lineheight, 2*lineheight, 2*lineheight ));
    b->SetIcon( IconRepository::getIcon( "blue-i.png").getBaseSurface() );
-   b->sigClick.connect( SigC::slot( *this, &VehicleTypeBaseWidget::info ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &VehicleTypeBaseWidget::info )));
    
    SetTransparency( 255 );
 };
@@ -99,7 +99,7 @@ VehicleBaseWidget :: VehicleBaseWidget( PG_Widget* parent, const PG_Point& pos,
 
    PG_Button* b = new PG_Button( this, PG_Rect( buttonXPos(width, 0 ), Height()/2-lineheight, 2*lineheight, 2*lineheight ));
    b->SetIcon( IconRepository::getIcon( "blue-i.png").getBaseSurface() );
-   b->sigClick.connect( SigC::slot( *this, &VehicleBaseWidget::info ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &VehicleBaseWidget::info )));
 
    SetTransparency( 255 );
 };
@@ -181,7 +181,7 @@ VehicleTypeCountLocateWidget::VehicleTypeCountLocateWidget( PG_Widget* parent, c
    
    PG_Button* b = new PG_Button( this, PG_Rect( buttonXPos(width, 1 ), Height()/2-lineheight, 2*lineheight, 2*lineheight ));
    b->SetIcon( IconRepository::getIcon( "magnifier.png").getBaseSurface() );
-   b->sigClick.connect( SigC::slot( *this, &VehicleTypeCountLocateWidget::locate ));
+   b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &VehicleTypeCountLocateWidget::locate )));
          
 }
 
@@ -233,7 +233,7 @@ SelectionWidget* VehicleTypeSelectionItemFactory::spawnNextItem( PG_Widget* pare
       return NULL;
 };
 
-SigC::Signal1<void,const VehicleType*> VehicleTypeSelectionItemFactory::showVehicleInfo;
+sigc::signal<void,const VehicleType*> VehicleTypeSelectionItemFactory::showVehicleInfo;
 
 
 void VehicleTypeSelectionItemFactory::itemSelected( const SelectionWidget* widget, bool mouse )
diff --git a/source/dialogs/vehicletypeselector.h b/source/dialogs/vehicletypeselector.h
index 8786796..0ac9be5 100644
--- a/source/dialogs/vehicletypeselector.h
+++ b/source/dialogs/vehicletypeselector.h
@@ -75,18 +75,18 @@ class VehicleTypeCountLocateWidget: public VehicleTypeCountWidget  {
    public:
       VehicleTypeCountLocateWidget( PG_Widget* parent, const PG_Point& pos, int width, const VehicleType* vehicletype, const Player& player, int number );
       
-      SigC::Signal1<void,const VehicleType*> locateVehicles;
+      sigc::signal<void,const VehicleType*> locateVehicles;
 };
 
 
-class VehicleTypeSelectionItemFactory: public SelectionItemFactory, public SigC::Object  {
+class VehicleTypeSelectionItemFactory: public SelectionItemFactory, public sigc::trackable  {
       Resources plantResources;
       const Player& actplayer;
       bool showResourcesForUnit;
    public:
       typedef vector<const VehicleType*> Container;
 
-      static SigC::Signal1<void,const VehicleType*> showVehicleInfo;
+      static sigc::signal<void,const VehicleType*> showVehicleInfo;
       
    protected:
       Container::iterator it;
@@ -101,7 +101,7 @@ class VehicleTypeSelectionItemFactory: public SelectionItemFactory, public SigC:
       VehicleTypeSelectionItemFactory( Resources plantResources, const Container& types, const Player& player );
       VehicleTypeSelectionItemFactory( const Container& types, const Player& player );
       
-      SigC::Signal0<void> reloadAllItems;
+      sigc::signal<void> reloadAllItems;
 
       void restart();
    
diff --git a/source/dlg_box.cpp b/source/dlg_box.cpp
index 140e2b3..81a0606 100644
--- a/source/dlg_box.cpp
+++ b/source/dlg_box.cpp
@@ -3375,7 +3375,7 @@ class ViewTextQuery : public ASC_PG_Dialog {
          if ( button2.length() ) {
             r = PG_Rect( 10, Height() - 40, Width()/2-15, 30 );
             PG_Button* b = new PG_Button( this, PG_Rect( Width()/2+5, Height() - 40, Width()/2-15, 30 ), button2 );
-            b->sigClick.connect( SigC::bind( SigC::slot( *this, &ViewTextQuery::quitModalLoop ), 1));
+            b->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &ViewTextQuery::quitModalLoopW ), 1));
             b->activateHotkey(0);
          } else 
             r = PG_Rect( 10, Height() - 40, Width() - 20, 30 );
@@ -3383,7 +3383,7 @@ class ViewTextQuery : public ASC_PG_Dialog {
 
 
         PG_Button* b = new PG_Button( this, r, button1 );
-        b->sigClick.connect( SigC::bind( SigC::slot( *this, &ViewTextQuery::quitModalLoop ), 0));
+        b->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &ViewTextQuery::quitModalLoopW ), 0));
         b->activateHotkey(0);
 
         new TextRenderer( this, PG_Rect( 10, 30, Width()-20, Height() - 70 ), readtextmessage( id ));
diff --git a/source/doc/Makefile.in b/source/doc/Makefile.in
index 3f716b4..a20f983 100644
--- a/source/doc/Makefile.in
+++ b/source/doc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/docs/Makefile.in b/source/docs/Makefile.in
index c53a5b2..ba0e6ce 100644
--- a/source/docs/Makefile.in
+++ b/source/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/docs/en/Makefile.in b/source/docs/en/Makefile.in
index facf13e..7366ca1 100644
--- a/source/docs/en/Makefile.in
+++ b/source/docs/en/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/ed_mapcomponent.cpp b/source/ed_mapcomponent.cpp
index 12f97a4..349ecb2 100644
--- a/source/ed_mapcomponent.cpp
+++ b/source/ed_mapcomponent.cpp
@@ -50,7 +50,7 @@ MapComponent::MapComponent( const MapItemType* item ) : mapItem( item )
 {
    if ( !initialized ) {
       initialized = true;
-      selection.playerChanged.connect( SigC::slot( &MapComponent::setPlayer ));
+      selection.playerChanged.connect( sigc::ptr_fun( &MapComponent::setPlayer ));
          
    }
 }
diff --git a/source/ed_mapcomponent.h b/source/ed_mapcomponent.h
index 4eaa502..b48c0db 100644
--- a/source/ed_mapcomponent.h
+++ b/source/ed_mapcomponent.h
@@ -33,7 +33,7 @@
 #include "objects.h"
 
 
-extern SigC::Signal0<void> filtersChangedSignal;
+extern sigc::signal<void> filtersChangedSignal;
 
 
 class Placeable {
diff --git a/source/edgen.cpp b/source/edgen.cpp
index 506e707..263fbe0 100644
--- a/source/edgen.cpp
+++ b/source/edgen.cpp
@@ -53,7 +53,7 @@
                virtual void buttonpressed(int  id);
        protected :
                Uint8 flip,showland,showdesert,showforest,showmaterial,showfuel,correctvalues,calculatevalues;
-               Uint8 initialized[ layercount ];
+               bool initialized[ layercount ];
                Uint8 *constructionlayer;
                int layer,actlayer;
                int barsize,maxbarsize;
diff --git a/source/edglobal.cpp b/source/edglobal.cpp
index b2b1886..205ee32 100644
--- a/source/edglobal.cpp
+++ b/source/edglobal.cpp
@@ -121,7 +121,7 @@
         "End PolygonMode",
         "Smooth coasts",
         "Import BI-Map",
-        "SEPERATOR",
+        "SEPARATOR",
         "BI-Resource Mode",
         "Resize map",
         "Insert BI map",
@@ -250,7 +250,6 @@ void SelectionHolder::pickup ( MapField* fld )
 int infomessage( char* formatstring, ... )
 {
    char stringtooutput[200];
-   char* c = new char[200];
    // int linenum = 0;
 
    memset (stringtooutput, 0, sizeof ( stringtooutput ));
@@ -280,9 +279,6 @@ int infomessage( char* formatstring, ... )
    else
       lastdisplayedmessageticker = ticker;
 
-
-   delete ( c );
-
    return ++actdisplayedmessage;
 }
 
@@ -336,7 +332,7 @@ class PlayerColorPanel : public PG_Widget {
             lab->SetFontSize(15);
          }
 
-         PG_Application::GetApp()->sigAppIdle.connect( SigC::slot( *this, &PlayerColorPanel::idler ));
+         PG_Application::GetApp()->sigAppIdle.connect( sigc::hide( sigc::mem_fun( *this, &PlayerColorPanel::idler )));
       }
 
       void Show( bool fade = false )
diff --git a/source/edglobal.h b/source/edglobal.h
index c0797c9..528b188 100644
--- a/source/edglobal.h
+++ b/source/edglobal.h
@@ -151,7 +151,7 @@ enum tuseractions {
 
  };
 
-class SelectionHolder : public SigC::Object {
+class SelectionHolder : public sigc::trackable {
      const Placeable* currentItem;
      int actplayer;
      int currentWeather;
@@ -161,7 +161,7 @@ class SelectionHolder : public SigC::Object {
  
      int getPlayer() { return actplayer; };
      void setPlayer( int player );
-     SigC::Signal1<void,int> playerChanged;
+     sigc::signal<void,int> playerChanged;
      
      void setWeather( int weather );
      int getWeather() { return currentWeather; };
@@ -171,7 +171,7 @@ class SelectionHolder : public SigC::Object {
      void setSelection( const Placeable& component ) ;
      void pickup ( MapField* fld );
      
-     SigC::Signal1<void,const Placeable*> selectionChanged;
+     sigc::signal<void,const Placeable*> selectionChanged;
      void clear(); 
 };
  
diff --git a/source/edmain.cpp b/source/edmain.cpp
index 9e265ff..7ed59c8 100644
--- a/source/edmain.cpp
+++ b/source/edmain.cpp
@@ -219,7 +219,7 @@ int main(int argc, char *argv[] )
    }
 
    MessagingHub::Instance().setVerbosity( cl->r() );
-   MessagingHub::Instance().exitHandler.connect( SigC::bind( SigC::slot( exit_asc ), -1 ));
+   MessagingHub::Instance().exitHandler.connect( sigc::bind( &exit_asc, -1 ));
 
    #ifdef logging
     logtofile ( kgetstartupmessage() );
@@ -260,7 +260,12 @@ int main(int argc, char *argv[] )
    if ( fullscreen )
       flags |= SDL_FULLSCREEN;
    
+   #ifdef pbpeditor
+   app.setIcon( "pbpeditor-icon.png" );
+   #else
    app.setIcon( "mapeditor-icon.png" );
+   #endif
+
    if ( !app.InitScreen( xr, yr, 32, flags))
       fatalError( "Could not initialize video mode");
 #ifdef WIN32
@@ -275,9 +280,9 @@ int main(int argc, char *argv[] )
 
    virtualscreenbuf.init();
 
-   mapChanged.connect( SigC::hide<GameMap*>( repaintMap.slot() ) );
-   mapChanged.connect( SigC::hide<GameMap*>( updateFieldInfo.slot() ) );
-   mapChanged.connect( SigC::hide<GameMap*>( SigC::slot( setSaveNotification) ));
+   mapChanged.connect( sigc::hide( repaintMap.make_slot() ) );
+   mapChanged.connect( sigc::hide( updateFieldInfo.make_slot() ) );
+   mapChanged.connect( sigc::hide( sigc::ptr_fun( &setSaveNotification) ));
    
    TaskHibernatingContainer::registerHooks();
 
diff --git a/source/edmisc.cpp b/source/edmisc.cpp
index b3dde3b..b2e88b2 100644
--- a/source/edmisc.cpp
+++ b/source/edmisc.cpp
@@ -2658,7 +2658,7 @@ public:
         }
 
         okButton = AddStandardButton( "OK" );
-        okButton->sigClick.connect( SigC::slot( *this, &SelectUnitSetFilter::ok ));
+        okButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SelectUnitSetFilter::ok )));
     };
 
     bool ok() {
@@ -3774,8 +3774,8 @@ class ItemLocator : public ASC_PG_Dialog {
 public:
     ItemLocator() : ASC_PG_Dialog(NULL, PG_Rect(-1,-1,400,200 ), "Item Locator")
     {
-        AddStandardButton("OK")->sigClick.connect( SigC::slot(*this, &ItemLocator::ok ));
-        AddStandardButton("cancel")->sigClick.connect( SigC::slot(*this, &ItemLocator::cancel ));
+        AddStandardButton("OK")->sigClick.connect( sigc::hide( sigc::mem_fun(*this, &ItemLocator::ok )));
+        AddStandardButton("cancel")->sigClick.connect( sigc::hide( sigc::mem_fun(*this, &ItemLocator::cancel )));
 
         typeSelector = new DropDownSelector(this, PG_Rect(20, 60, 150, 25 ));
         typeSelector->AddItem("Terrain");
@@ -4332,7 +4332,7 @@ CopyMap::CopyMap() : FieldAddressing( actmap ), ASC_PG_Dialog( NULL, PG_Rect( 30
 
 
     PG_Button* ok = new PG_Button( this, PG_Rect( startX, startY + dialogLine*(lineHeight+lineSpacing) , startX2 - xSpacer - startX, lineHeight ), "Paste" );
-    ok->sigClick.connect( SigC::slot( *this, &CopyMap::paste ));
+    ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &CopyMap::paste )));
 
     dialogLine = 0;
 
diff --git a/source/edselfnt.cpp b/source/edselfnt.cpp
index a4c00aa..fcdad91 100644
--- a/source/edselfnt.cpp
+++ b/source/edselfnt.cpp
@@ -39,7 +39,7 @@
 #include "unitset.h"
 #include "spfst-legacy.h"
 
-SigC::Signal0<void> filtersChangedSignal;
+sigc::signal<void> filtersChangedSignal;
 
 
 
@@ -415,7 +415,7 @@ class ProductionItemFactory: public MapItemTypeWidgetFactory<MapItemTypeWidget<
 };
 
 
-class AvailableProductionItemFactory: public SelectionItemFactory, public SigC::Object  {
+class AvailableProductionItemFactory: public SelectionItemFactory, public sigc::trackable  {
    private:
       const ContainerBase* container;
       const VehicleType* selectedItem;
@@ -540,14 +540,14 @@ class ProductionEditorWindow : public ASC_PG_Dialog {
 
          
          PG_Button* addB = new PG_Button( this, PG_Rect( (my_width - centerSpace) / 2, 100, centerSpace, 30 ), "->" );
-         addB->sigClick.connect( SigC::slot( *this, &ProductionEditorWindow::addOne ));
+         addB->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ProductionEditorWindow::addOne )));
          
          PG_Button* removeB = new PG_Button( this, PG_Rect( (my_width - centerSpace) / 2, 140, centerSpace, 30 ), "<-" );
-         removeB->sigClick.connect( SigC::slot( *this, &ProductionEditorWindow::removeOne ));
+         removeB->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ProductionEditorWindow::removeOne )));
 
          
          PG_Button* ok = new PG_Button( this, PG_Rect( my_width - 100, my_height - 40, 90, 30 ), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &ProductionEditorWindow::ok ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ProductionEditorWindow::ok )));
       };
 
 };
diff --git a/source/gamedialog.cpp b/source/gamedialog.cpp
index 30c85cc..30e04fe 100644
--- a/source/gamedialog.cpp
+++ b/source/gamedialog.cpp
@@ -26,7 +26,7 @@
 #include "dialogs/newgame.h"
 #include "dialogs/editgameoptions.h"
 #include "dialog.h"
-#include "sigc++/retype.h"
+#include "sigc++/adaptors/retype.h"
 #include "iconrepository.h"
 #include "sg.h"
 #include "loaders.h"
@@ -41,41 +41,41 @@ GameDialog* GameDialog::instance = 0;
 
 GameDialog::GameDialog():  ASC_PG_Dialog(NULL, PG_Rect( -1, -1, xSize, ySize ), "Game", SHOW_CLOSE ) {
     singlePlayerButton = new PG_Button(this, PG_Rect(buttonIndent, GuiDimension::getTopOffSet()*2, 150, GuiDimension::getButtonHeight()), "New Game", 90);
-    singlePlayerButton->sigClick.connect( SigC::slot( *this, &GameDialog::newGame));
+    singlePlayerButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::newGame));
 
     PG_Point p = ScreenToClient(singlePlayerButton->x, singlePlayerButton->y);
     multiPlayerButton = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Continue Mail Game", 90);
-    multiPlayerButton->sigClick.connect( SigC::slot( *this, &GameDialog::multiGame));
+    multiPlayerButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::multiGame));
 
     p = ScreenToClient(multiPlayerButton->x, multiPlayerButton->y);
     loadGameButton = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Load Game", 90);
-    loadGameButton->sigClick.connect( SigC::slot( *this, &GameDialog::loadGame));
+    loadGameButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::loadGame));
 
     p = ScreenToClient(loadGameButton->x, loadGameButton->y);
     saveGameButton = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Save Game", 90);
-    saveGameButton->sigClick.connect( SigC::slot( *this, &GameDialog::saveGame));
+    saveGameButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::saveGame));
 
     p = ScreenToClient(loadGameButton->x, saveGameButton->y);
     PG_Button* superViseButton= new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Supervise Net Game", 90);
-    superViseButton->sigClick.connect( SigC::slot( *this, &GameDialog::supervise));
+    superViseButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::supervise));
 
 
     p = ScreenToClient(superViseButton->x, superViseButton->y);
     optionsButton = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Options", 90);
-    optionsButton->sigClick.connect( SigC::slot( *this, &GameDialog::showOptions));
+    optionsButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::showOptions));
 
 
     p = ScreenToClient(optionsButton->x, optionsButton->y);
     exitButton  = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Quit Game", 90);
-    exitButton->sigClick.connect( SigC::slot( *this, &GameDialog::exitGame));
+    exitButton->sigClick.connect( sigc::mem_fun( *this, &GameDialog::exitGame));
 
     if ( actmap ) {
       p = ScreenToClient(exitButton->x, exitButton->y);
       continueButton = new PG_Button(this, PG_Rect(p.x, p.y + GuiDimension::getButtonHeight() + 2 * GuiDimension::getTopOffSet() , 150, GuiDimension::getButtonHeight()), "Return to Game", 90);
-      continueButton->sigClick.connect( SigC::slot( *this, &GameDialog::closeWindow ));
+      continueButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GameDialog::closeWindow )));
     }
 
-    sigClose.connect( SigC::slot( *this, &GameDialog::closeWindow ));    
+    sigClose.connect( sigc::mem_fun( *this, &GameDialog::closeWindow ));    
     SetInputFocus();
 }
 
@@ -246,11 +246,11 @@ const int ConfirmExitDialog::ySize = 120;
 ConfirmExitDialog::ConfirmExitDialog(PG_MessageObject* c): ASC_PG_Dialog(NULL, PG_Rect( 200, 100, xSize, ySize ), "End Game", MODAL ) {
 
     okButton = new PG_Button(this, PG_Rect(80, GuiDimension::getTopOffSet()*2, 150, GuiDimension::getButtonHeight()), "OK", 90);
-    okButton->sigClick.connect( SigC::slot( *this, &ConfirmExitDialog::exitGame ));
+    okButton->sigClick.connect( sigc::mem_fun( *this, &ConfirmExitDialog::exitGame ));
 
     PG_Point p = ScreenToClient(okButton->x, okButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x + 150 + 10, p.y, 150, GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &ConfirmExitDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ConfirmExitDialog::closeWindow )));
 }
 
 
@@ -286,17 +286,17 @@ SinglePlayerDialog* SinglePlayerDialog::instance = 0;
 SinglePlayerDialog::SinglePlayerDialog( PG_MessageObject * c): ASC_PG_Dialog(NULL, PG_Rect( 200, 100, xSize, ySize ), "Single Player", SHOW_CLOSE ) {
 
     campaignButton = new PG_Button(this, PG_Rect(buttonIndent, GuiDimension::getTopOffSet()*2, 150, GuiDimension::getButtonHeight()), "Campaign", 90);
-    campaignButton->sigClick.connect( SigC::slot( *this, &SinglePlayerDialog::campaign ));
+    campaignButton->sigClick.connect( sigc::mem_fun( *this, &SinglePlayerDialog::campaign ));
 
     PG_Point p = ScreenToClient(campaignButton->x, campaignButton->y);
     singleLevelButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet(), 150, GuiDimension::getButtonHeight()), "Single Level", 90);
-    singleLevelButton->sigClick.connect( SigC::slot( *this, &SinglePlayerDialog::singleLevel ));
+    singleLevelButton->sigClick.connect( sigc::mem_fun( *this, &SinglePlayerDialog::singleLevel ));
 
     p = ScreenToClient(singleLevelButton->x, singleLevelButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() * 2, 150, GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &SinglePlayerDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SinglePlayerDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &SinglePlayerDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &SinglePlayerDialog::closeWindow ));
     caller = c;
     SetInputFocus();
 }
@@ -346,27 +346,27 @@ const int MultiPlayerDialog::buttonIndent = 140;
 MultiPlayerDialog::MultiPlayerDialog(PG_MessageObject* c): ASC_PG_Dialog(NULL, PG_Rect( 200, 100, xSize, ySize ), "Multi Player", SHOW_CLOSE ) {
 
     continueGameButton = new PG_Button(this, PG_Rect(buttonIndent, GuiDimension::getTopOffSet()*2, GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Continue Network Game", 90);
-    continueGameButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::continueGame ));
+    continueGameButton->sigClick.connect( sigc::mem_fun( *this, &MultiPlayerDialog::continueGame ));
 
     PG_Point p = ScreenToClient(continueGameButton->x, continueGameButton->y);
     superViseButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet(), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Supervise Network Game", 90);
-    superViseButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::superVise ));
+    superViseButton->sigClick.connect( sigc::mem_fun( *this, &MultiPlayerDialog::superVise ));
 
     p = ScreenToClient(superViseButton->x, superViseButton->y);
     setupNWButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet(), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Setup Network Game", 90);
-    setupNWButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::closeWindow ));
+    setupNWButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MultiPlayerDialog::closeWindow )));
     
      p = ScreenToClient(setupNWButton->x, setupNWButton->y);
     changeMapPasswordButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet(), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Change Password", 90);
-    changeMapPasswordButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::changeMapPassword ));
+    changeMapPasswordButton->sigClick.connect( sigc::mem_fun( *this, &MultiPlayerDialog::changeMapPassword ));
 
     p = ScreenToClient(changeMapPasswordButton->x, changeMapPasswordButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() * 2, GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MultiPlayerDialog::closeWindow )));
 
-    cancelButton->sigClick.connect( SigC::slot( *this, &MultiPlayerDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MultiPlayerDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &MultiPlayerDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &MultiPlayerDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();
@@ -418,17 +418,17 @@ const int OptionsDialog::buttonIndent = 150;
 OptionsDialog::OptionsDialog(PG_MessageObject* c ): ASC_PG_Dialog(NULL, PG_Rect( 200, 100, xSize, ySize ), "Options", SHOW_CLOSE ) {
 
     soundButton = new PG_Button(this, PG_Rect(buttonIndent, GuiDimension::getTopOffSet()*2, 150, GuiDimension::getButtonHeight()), "Sound Options", 90);
-    soundButton->sigClick.connect( SigC::slot( *this, &OptionsDialog::showSoundOptions ));
+    soundButton->sigClick.connect( sigc::mem_fun( *this, &OptionsDialog::showSoundOptions ));
 
     PG_Point p = ScreenToClient(soundButton->x, soundButton->y);
     otherButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet(), 150, GuiDimension::getButtonHeight()), "Game Options", 90);
-    otherButton->sigClick.connect( SigC::slot( *this, &OptionsDialog::showOtherOptions ));
+    otherButton->sigClick.connect( sigc::mem_fun( *this, &OptionsDialog::showOtherOptions ));
 
     p = ScreenToClient(otherButton->x, otherButton->y);
     PG_Button* okButton = new PG_Button(this, PG_Rect(p.x,  p.y + GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet() * 2, 150, GuiDimension::getButtonHeight()), "Back", 90);
-    okButton->sigClick.connect( SigC::slot( *this, &OptionsDialog::closeWindow ));
+    okButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &OptionsDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &OptionsDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &OptionsDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();
@@ -495,16 +495,16 @@ GameOptionsDialog::GameOptionsDialog(PG_MessageObject* c): ASC_PG_Dialog(NULL, P
 
     p = ScreenToClient(promptEndOfTurnLabel->x, promptEndOfTurnLabel->y);
     changePasswordButton = new PG_Button(this, PG_Rect((xSize - GuiDimension::getButtonWidth())/2, p.y + GuiDimension::getTopOffSet() + GetTextHeight() * 2 , GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Change Password");
-    changePasswordButton->sigClick.connect( SigC::slot( *this, &GameOptionsDialog::changePassword ));
+    changePasswordButton->sigClick.connect( sigc::mem_fun( *this, &GameOptionsDialog::changePassword ));
 
     okButton = new PG_Button(this, PG_Rect( buttonIndent, ySize - (GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet()), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "OK", 90);
-    okButton->sigClick.connect( SigC::slot( *this, &GameOptionsDialog::ok ));
+    okButton->sigClick.connect( sigc::mem_fun( *this, &GameOptionsDialog::ok ));
 
     p = ScreenToClient(okButton->x, okButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x + GuiDimension::getButtonWidth() + 10, p.y, GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &GameOptionsDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GameOptionsDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &GameOptionsDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &GameOptionsDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();
@@ -521,10 +521,10 @@ bool GameOptionsDialog::closeWindow() {
 }
 
 bool GameOptionsDialog::changePassword(PG_Button* button){
-Hide();
-ChangeDefaultPasswordDialog::changeDefaultPasswordDialog(this);
-Show();
-return true;
+	Hide();
+	ChangeDefaultPasswordDialog::changeDefaultPasswordDialog(this);
+	Show();
+	return true;
 }
 bool GameOptionsDialog::ok(PG_Button* button) {
     CGameOptions::Instance()->CGameOptions::Instance()->endturnquestion = promptEndOfTurnCButton->GetPressed();
@@ -556,13 +556,13 @@ ChangePasswordDialog::ChangePasswordDialog(PG_MessageObject* c): ASC_PG_Dialog(N
     
 
     okButton = new PG_Button(this, PG_Rect( buttonIndent, ySize - (GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet()), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "OK", 90);
-    okButton->sigClick.connect( SigC::slot( *this, &ChangePasswordDialog::ok ));
+    okButton->sigClick.connect( sigc::mem_fun( *this, &ChangePasswordDialog::ok ));
 
     p = ScreenToClient(okButton->x, okButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x + GuiDimension::getButtonWidth() + 10, p.y, GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &ChangePasswordDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &ChangePasswordDialog::closeWindow )));
     
-    sigClose.connect( SigC::slot( *this, &ChangePasswordDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &ChangePasswordDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();		
@@ -614,7 +614,7 @@ void ChangeDefaultPasswordDialog::changeDefaultPasswordDialog(PG_MessageObject*
  MousePreferencesDialog::MousePreferencesDialog(PG_MessageObject* c) : ASC_PG_Dialog(NULL, PG_Rect( 200, 100, xSize, ySize ), "Mouse Options",
         SHOW_CLOSE ) {
    
-   sigClose.connect( SigC::slot( *this, &MousePreferencesDialog::closeWindow ));
+   sigClose.connect( sigc::mem_fun( *this, &MousePreferencesDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();
@@ -715,7 +715,7 @@ SaveGameBaseDialog::SaveGameBaseDialog(const ASCString& title, PG_MessageObject*
     PG_Point p = ScreenToClient(fileList->x, fileList->y);
     /* slider = new PG_ScrollBar(this, PG_Rect(xSize - (GuiDimension::getLeftIndent() + GuiDimension::getSliderWidth()) , p.y, GuiDimension::getSliderWidth(), fileList->Height()), PG_ScrollBar::VERTICAL);
      slider->SetRange(0,fileList->GetWidgetCount());
-     slider->sigScrollTrack.connect( SigC::slot( *this, &SaveGameBaseDialog::handleSlider));*/
+     slider->sigScrollTrack.connect( sigc::mem_fun( *this, &SaveGameBaseDialog::handleSlider));*/
 
 
     fileNameLabel = new PG_Label(this, PG_Rect(GuiDimension::getLeftIndent(), p.y + fileList->Height() + GuiDimension::getTopOffSet(), 10, 10), "Filename: ");
@@ -735,13 +735,13 @@ SaveGameBaseDialog::SaveGameBaseDialog(const ASCString& title, PG_MessageObject*
 
 
     okButton = new PG_Button(this, PG_Rect( buttonIndent, ySize - (GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet()), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "OK", 90);
-    okButton->sigClick.connect( SigC::slot( *this, &SaveGameBaseDialog::ok ));
+    okButton->sigClick.connect( sigc::mem_fun( *this, &SaveGameBaseDialog::ok ));
 
     p = ScreenToClient(okButton->x, okButton->y);
     cancelButton = new PG_Button(this, PG_Rect(p.x + GuiDimension::getButtonWidth() + 10, p.y, GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "Cancel", 90);
-    cancelButton->sigClick.connect( SigC::slot( *this, &SaveGameBaseDialog::closeWindow ));
+    cancelButton->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &SaveGameBaseDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &SaveGameBaseDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &SaveGameBaseDialog::closeWindow ));
 
     caller = c;
     SetInputFocus();
diff --git a/source/gameevent_dialogs.cpp b/source/gameevent_dialogs.cpp
index 4bea8d5..98336a7 100644
--- a/source/gameevent_dialogs.cpp
+++ b/source/gameevent_dialogs.cpp
@@ -343,7 +343,7 @@ void selectFields( FieldAddressing::Fields& fields )
    sbfm.RunModal();
 }
 
-class UnitListFactory: public SelectionItemFactory, public SigC::Object  {
+class UnitListFactory: public SelectionItemFactory, public sigc::trackable  {
    public:
       typedef list<const VehicleType*> UnitList;
    private:
@@ -643,6 +643,6 @@ BitMapEditor::BitMapEditor( BitType& value, const ASCString& title, const vector
    }
 
    PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 100, Height() - 40, 90, 30), "OK" );
-   ok->sigClick.connect( SigC::slot( *this, &BitMapEditor::ok ));
+   ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &BitMapEditor::ok )));
 }
 
diff --git a/source/gameevents.cpp b/source/gameevents.cpp
index ae58186..e11f072 100644
--- a/source/gameevents.cpp
+++ b/source/gameevents.cpp
@@ -180,7 +180,7 @@ void BuildingConquered::arm()
 
    Building* bld = gamemap->getField ( pos )->building;
    if ( bld )
-      bld->conquered.connect( SigC::slot( *this, &BuildingConquered::triggered ));
+      bld->conquered.connect( sigc::mem_fun( *this, &BuildingConquered::triggered ));
 }
 
 void BuildingConquered::triggered()
@@ -213,8 +213,8 @@ void BuildingLost::arm()
 
    Building* bld = gamemap->getField ( pos )->building;
    if ( bld ) {
-      bld->conquered.connect( SigC::slot( *this, &BuildingConquered::triggered ));
-      bld->destroyed.connect( SigC::slot( *this, &BuildingConquered::triggered ));
+      bld->conquered.connect( sigc::mem_fun( *this, &BuildingConquered::triggered ));
+      bld->destroyed.connect( sigc::mem_fun( *this, &BuildingConquered::triggered ));
    }
 }
 
@@ -294,7 +294,7 @@ void BuildingSeen::arm()
    if ( bld ) {
       bld->connection |= cconnection_seen;
       #ifdef sgmain
-      buildingSeen.connect( SigC::slot( *this, &BuildingSeen::triggered ));
+      buildingSeen.connect( sigc::mem_fun( *this, &BuildingSeen::triggered ));
       #endif
    }
 }
@@ -384,8 +384,8 @@ void UnitLost::arm()
 {
    Vehicle* veh = gamemap->getUnit( unitID );
    if ( veh ) {
-      veh->destroyed.connect( SigC::slot( *this, &UnitLost::triggered ));
-      veh->conquered.connect( SigC::slot( *this, &UnitLost::triggered ));
+      veh->destroyed.connect( sigc::mem_fun( *this, &UnitLost::triggered ));
+      veh->conquered.connect( sigc::mem_fun( *this, &UnitLost::triggered ));
    }
 }
 
@@ -442,7 +442,7 @@ void UnitConquered::arm()
 {
    Vehicle* veh = gamemap->getUnit( unitID );
    if ( veh )
-      veh->conquered.connect( SigC::slot( *this, &UnitConquered::triggered ));
+      veh->conquered.connect( sigc::mem_fun( *this, &UnitConquered::triggered ));
 }
 
 
@@ -471,7 +471,7 @@ void UnitDestroyed::arm()
 {
   Vehicle* veh = gamemap->getUnit( unitID );
   if ( veh )
-     veh->destroyed.connect( SigC::slot( *this, &UnitDestroyed::triggered ));
+     veh->destroyed.connect( sigc::mem_fun( *this, &UnitDestroyed::triggered ));
 }
 
 
@@ -551,7 +551,7 @@ void EventTriggered::arm()
 {
    Event* e = getTargetEventName();
    if ( e )
-      e->executed.connect( SigC::slot( *this, &EventTriggered::triggered));
+      e->executed.connect( sigc::mem_fun( *this, &EventTriggered::triggered));
 }
 
 void EventTriggered::triggered()
@@ -584,8 +584,8 @@ ASCString AllEnemyUnitsDestroyed::getTypeName() const
 
 void AllEnemyUnitsDestroyed::arm()
 {
-   ContainerBase::anyContainerDestroyed.connect( SigC::hide<ContainerBase*>( SigC::slot( *this, &AllEnemyUnitsDestroyed::triggered)));
-   ContainerBase::anyContainerConquered.connect( SigC::hide<ContainerBase*>( SigC::slot( *this, &AllEnemyUnitsDestroyed::triggered)));
+   ContainerBase::anyContainerDestroyed.connect( sigc::hide( sigc::mem_fun( *this, &AllEnemyUnitsDestroyed::triggered)));
+   ContainerBase::anyContainerConquered.connect( sigc::hide( sigc::mem_fun( *this, &AllEnemyUnitsDestroyed::triggered)));
 }
 
 void AllEnemyUnitsDestroyed::triggered()
@@ -619,8 +619,8 @@ ASCString AllEnemyBuildingsDestroyed::getDetailledName() const
 
 void AllEnemyBuildingsDestroyed::arm()
 {
-   ContainerBase::anyContainerDestroyed.connect( SigC::hide<ContainerBase*>( SigC::slot( *this, &AllEnemyBuildingsDestroyed::triggered)));
-   ContainerBase::anyContainerConquered.connect( SigC::hide<ContainerBase*>( SigC::slot( *this, &AllEnemyBuildingsDestroyed::triggered)));
+   ContainerBase::anyContainerDestroyed.connect( sigc::hide( sigc::mem_fun( *this, &AllEnemyBuildingsDestroyed::triggered)));
+   ContainerBase::anyContainerConquered.connect( sigc::hide( sigc::mem_fun( *this, &AllEnemyBuildingsDestroyed::triggered)));
 }
 
 void AllEnemyBuildingsDestroyed::triggered()
@@ -700,7 +700,7 @@ void SpecificUnitEntersPolygon::arm ()
    arming = true;
    operate();
    arming = false;
-   fieldCrossed.connect( SigC::slot( *this, &SpecificUnitEntersPolygon::triggered));
+   fieldCrossed.connect( sigc::mem_fun( *this, &SpecificUnitEntersPolygon::triggered));
    Vehicle* veh = gamemap->getUnit( unitID );
    if ( veh )
       veh->connection |= cconnection_areaentered_specificunit;
@@ -788,7 +788,7 @@ void AnyUnitEntersPolygon::arm()
    arming = true;
    operate();
    arming = false;
-   fieldCrossed.connect( SigC::slot( *this, &AnyUnitEntersPolygon::triggered));
+   fieldCrossed.connect( sigc::mem_fun( *this, &AnyUnitEntersPolygon::triggered));
    #endif
 }
 
@@ -849,7 +849,7 @@ void ResourceTribute::setup()
 void ResourceTribute::arm()
 {
   #ifdef sgmain
-   tributeTransferred.connect( SigC::slot( *this, &ResourceTribute::triggered));
+   tributeTransferred.connect( sigc::mem_fun( *this, &ResourceTribute::triggered));
   #endif 
 }
 
diff --git a/source/gameevents.h b/source/gameevents.h
index 874c193..08ab408 100644
--- a/source/gameevents.h
+++ b/source/gameevents.h
@@ -160,7 +160,7 @@ class TurnPassed : public EventTrigger {
 };
 
 
-class UnitTrigger : public EventTrigger, public SigC::Object {
+class UnitTrigger : public EventTrigger, public sigc::trackable {
     protected:
       int unitID;
     public:
@@ -254,7 +254,7 @@ class BuildingPositionTrigger : public PositionTrigger {
 };
 
 
-class BuildingConquered : public BuildingPositionTrigger, public SigC::Object {
+class BuildingConquered : public BuildingPositionTrigger, public sigc::trackable {
     protected:
       BuildingConquered( EventTriggerID id ) : BuildingPositionTrigger( id ) {};
       virtual State getState( int player );
@@ -288,7 +288,7 @@ class BuildingDestroyed : public BuildingPositionTrigger {
       ASCString getDetailledName() const { return BuildingPositionTrigger::getName() + " destroyed"; };
 };
 
-class BuildingSeen : public BuildingPositionTrigger, public SigC::Object {
+class BuildingSeen : public BuildingPositionTrigger, public sigc::trackable {
     protected:
       virtual State getState( int player );
     public:
@@ -300,7 +300,7 @@ class BuildingSeen : public BuildingPositionTrigger, public SigC::Object {
       void triggered();
 };
 
-class EventTriggered : public EventTrigger, public SigC::Object {
+class EventTriggered : public EventTrigger, public sigc::trackable {
       int eventID;
       Event* getTargetEventName() const;
     protected:
@@ -318,7 +318,7 @@ class EventTriggered : public EventTrigger, public SigC::Object {
       void triggered();
 };
 
-class AllEnemyUnitsDestroyed : public EventTrigger, public SigC::Object {
+class AllEnemyUnitsDestroyed : public EventTrigger, public sigc::trackable {
    private:
       void triggered();
    protected:
@@ -335,7 +335,7 @@ class AllEnemyUnitsDestroyed : public EventTrigger, public SigC::Object {
       void arm();
 };
 
-class AllEnemyBuildingsDestroyed : public EventTrigger, public SigC::Object {
+class AllEnemyBuildingsDestroyed : public EventTrigger, public sigc::trackable {
    private:
       void triggered();
    protected:
@@ -351,7 +351,7 @@ class AllEnemyBuildingsDestroyed : public EventTrigger, public SigC::Object {
       void arm();
 };
 
-class SpecificUnitEntersPolygon : public EventTrigger, public FieldAddressing, public SigC::Object {
+class SpecificUnitEntersPolygon : public EventTrigger, public FieldAddressing, public sigc::trackable {
       int unitID;
       bool found;
       bool arming;
@@ -372,7 +372,7 @@ class SpecificUnitEntersPolygon : public EventTrigger, public FieldAddressing, p
       void fieldOperator( const MapCoordinate& mc );
 };
 
-class AnyUnitEntersPolygon : public EventTrigger, public FieldAddressing, public SigC::Object {
+class AnyUnitEntersPolygon : public EventTrigger, public FieldAddressing, public sigc::trackable {
       int player;
       bool found;
       bool arming;
@@ -394,7 +394,7 @@ class AnyUnitEntersPolygon : public EventTrigger, public FieldAddressing, public
 };
 
 
-class ResourceTribute : public EventTrigger, public SigC::Object {
+class ResourceTribute : public EventTrigger, public sigc::trackable {
       Resources demand;
       int payingPlayer;
     protected:
diff --git a/source/gameeventsystem.h b/source/gameeventsystem.h
index 61e5c98..7ea213c 100644
--- a/source/gameeventsystem.h
+++ b/source/gameeventsystem.h
@@ -154,7 +154,7 @@ class Event {
 
       void arm();
 
-      SigC::Signal0<void> executed;
+      sigc::signal<void> executed;
 
       virtual ~Event();
 };
diff --git a/source/gamemap.cpp b/source/gamemap.cpp
index 9850f3a..62eac24 100644
--- a/source/gamemap.cpp
+++ b/source/gamemap.cpp
@@ -77,13 +77,13 @@ OverviewMapHolder :: OverviewMapHolder( GameMap& gamemap ) : map(gamemap), initi
 void OverviewMapHolder :: connect()
 {
    if ( !connected ) {
-      idleEvent.connect ( SigC::slot( *this, &OverviewMapHolder::idleHandler ));
+      idleEvent.connect ( sigc::mem_fun( *this, &OverviewMapHolder::idleHandler ));
       connected = true;
    }
 }
 
 
-SigC::Signal0<void> OverviewMapHolder::generationComplete;
+sigc::signal<void> OverviewMapHolder::generationComplete;
 
 bool OverviewMapHolder :: idleHandler( )
 {
@@ -1467,9 +1467,9 @@ void GameMap::objectGrowth()
    checkunitsforremoval( this );
 }
 
-SigC::Signal1<void,GameMap&> GameMap::sigMapDeletion;
-SigC::Signal1<void,GameMap&> GameMap::sigMapCreation;
-SigC::Signal2<void,GameMap*,Player&> GameMap::sigPlayerTurnEndsStatic;
+sigc::signal<void,GameMap&> GameMap::sigMapDeletion;
+sigc::signal<void,GameMap&> GameMap::sigMapCreation;
+sigc::signal<void,GameMap*,Player&> GameMap::sigPlayerTurnEndsStatic;
 
 GameMap :: ~GameMap ()
 {
@@ -2276,7 +2276,7 @@ GameParameterSettings gameParameterSettings[gameparameternum ] = {
       {  "TrainingIncrement",                  2,                    1,   maxunitexperience,  true,   false,   "training centers: training increment"},   //       cgp_trainingIncrement,              
       {  "ExperienceEffectDivisorAttack",      1,                    1,   10,                 false,  false,   "experience effect divisor for attack"},  //       gp_experienceDivisorAttack
       {  "DisableDirectView",                  1,                    0,   1,                  false,  false,   "disable direct View"},  //       cgp_disableDirectView
-      {  "DisableUnitTrade",                   0,                    0,   1,                  false,  false,   "disable transfering units/buildings to other players"},  //       cgp_disableUnitTransfer
+      {  "DisableUnitTrade",                   0,                    0,   1,                  false,  false,   "disable transferring units/buildings to other players"},  //       cgp_disableUnitTransfer
       {  "ExperienceEffectDivisorDefense",     1,                    1,   10,                 false,  false,   "experience effect divisor for defense"},  //       cgp_experienceDivisorDefense
       {  "DebugGameEvents",                    0,                    0,   2,                  true,   false,   "debug game events"},  //       cgp_debugEvents
       {  "ObjectGrowthRate",                   0,                    0,   maxint,             true,   false,   "Object growth rate (percentage)" },  //       cgp_objectGrowthMultiplier
diff --git a/source/gamemap.h b/source/gamemap.h
index 8c76494..7d5f5a7 100644
--- a/source/gamemap.h
+++ b/source/gamemap.h
@@ -133,7 +133,7 @@ class LoadNextMap {
 
 
 
-class OverviewMapHolder : public SigC::Object {
+class OverviewMapHolder : public sigc::trackable {
       GameMap& map;
       Surface overviewMapImage;
       Surface completedMapImage;
@@ -162,7 +162,7 @@ class OverviewMapHolder : public SigC::Object {
       
       static void clearmap( GameMap* actmap );
       
-      static SigC::Signal0<void> generationComplete;
+      static sigc::signal<void> generationComplete;
       
       void resetSize();
             
@@ -487,22 +487,22 @@ class GameMap {
       void endRound();
 
 
-      SigC::Signal1<void,Player&> sigPlayerTurnBegins;
-      SigC::Signal1<void,Player&> sigPlayerUserInteractionBegins;
-      SigC::Signal1<void,Player&> sigPlayerUserInteractionEnds;
-      SigC::Signal1<void,Player&> sigPlayerTurnEnds;
-      SigC::Signal1<void,Player&> sigPlayerTurnHasEnded;
-      SigC::Signal1<void,Player&> sigMapWon;
+      sigc::signal<void,Player&> sigPlayerTurnBegins;
+      sigc::signal<void,Player&> sigPlayerUserInteractionBegins;
+      sigc::signal<void,Player&> sigPlayerUserInteractionEnds;
+      sigc::signal<void,Player&> sigPlayerTurnEnds;
+      sigc::signal<void,Player&> sigPlayerTurnHasEnded;
+      sigc::signal<void,Player&> sigMapWon;
 
-      static SigC::Signal1<void,GameMap&> sigMapCreation;
-      static SigC::Signal1<void,GameMap&> sigMapDeletion;
-      static SigC::Signal2<void,GameMap*,Player&> sigPlayerTurnEndsStatic;
+      static sigc::signal<void,GameMap&> sigMapCreation;
+      static sigc::signal<void,GameMap&> sigMapDeletion;
+      static sigc::signal<void,GameMap*,Player&> sigPlayerTurnEndsStatic;
       
       //! called when the map is resized and all coordinates have to be adjusted 
-      SigC::Signal1<void,const MapCoodinateVector&> sigCoordinateShift;
+      sigc::signal<void,const MapCoodinateVector&> sigCoordinateShift;
       
       //! called when a new round starts (after switching from player 7 to player 0 )
-      SigC::Signal0<void> newRound;
+      sigc::signal<void> newRound;
 
 
       //! if a player has won a singleplayer map, but wants to continue playing without any enemies, this will be set to 1
diff --git a/source/graphics/Makefile.in b/source/graphics/Makefile.in
index 55d0c23..4353f37 100644
--- a/source/graphics/Makefile.in
+++ b/source/graphics/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -283,6 +283,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/guifunctions.cpp b/source/guifunctions.cpp
index 956b060..080a01b 100644
--- a/source/guifunctions.cpp
+++ b/source/guifunctions.cpp
@@ -72,7 +72,7 @@ namespace GuiFunctions
 
 
 
-class AttackGui : public GuiIconHandler, public GuiFunction, public SigC::Object
+class AttackGui : public GuiIconHandler, public GuiFunction, public sigc::trackable
 {
     pair<const AttackWeap*, int> getEntry( const MapCoordinate& pos, int num );
 
@@ -90,7 +90,7 @@ protected:
 
 public:
     AttackGui() {
-        GameMap::sigMapDeletion.connect( SigC::slot( *this, &AttackGui::mapDeleted ));
+        GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &AttackGui::mapDeleted ));
     };
     void setupWeapons( AttackCommand* va ) {
         delete NewGuiHost::pendingCommand;
@@ -923,7 +923,7 @@ public:
 };
 
 
-class JumpDriveIcon : public GuiFunction, public SigC::Object
+class JumpDriveIcon : public GuiFunction, public sigc::trackable
 {
 public:
     bool available( const MapCoordinate& pos, ContainerBase* subject, int num ) {
@@ -1400,7 +1400,7 @@ public:
 
 
 
-class ObjectBuildingGui : public GuiIconHandler, public GuiFunction, public SigC::Object
+class ObjectBuildingGui : public GuiIconHandler, public GuiFunction, public sigc::trackable
 {
     Vehicle* veh;
 
@@ -1423,7 +1423,7 @@ protected:
 
 public:
     ObjectBuildingGui() : veh( NULL ) {
-        GameMap::sigMapDeletion.connect( SigC::slot( *this, &ObjectBuildingGui::mapDeleted ));
+        GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &ObjectBuildingGui::mapDeleted ));
     };
 
     bool init( Vehicle* vehicle );
diff --git a/source/guiiconhandler.cpp b/source/guiiconhandler.cpp
index acc3111..025fc1d 100644
--- a/source/guiiconhandler.cpp
+++ b/source/guiiconhandler.cpp
@@ -51,7 +51,7 @@ const float smallGuiIconSizeFactor = 1;
 
 GuiButton::GuiButton( PG_Widget *parent, const PG_Rect &r ) : PG_Button( parent, r, "", -1, "GuiButton"), func( NULL ), id(-1)
 {
-  sigClick.connect ( SigC::slot( *this, &GuiButton::exec ));
+  sigClick.connect( sigc::hide( sigc::mem_fun( *this, &GuiButton::exec )));
   SetBackground( PRESSED, IconRepository::getIcon("empty-pressed.png").getBaseSurface() );
   SetBackground( HIGHLITED, IconRepository::getIcon("empty-high.png").getBaseSurface() );
   SetBackground( UNPRESSED, IconRepository::getIcon("empty.png").getBaseSurface() );
@@ -128,8 +128,8 @@ void GuiButton::showInfoText()
 
 SmallGuiButton::SmallGuiButton( PG_Widget *parent, const PG_Rect &r, GuiButton* guiButton, NewGuiHost* host ) : PG_Button( parent, r, "", -1, "GuiButton"), referenceButton( guiButton )
 {
-  sigClick.connect ( SigC::slot( *host, &NewGuiHost::clearSmallIcons ));
-  sigClick.connect ( SigC::slot( *guiButton, &GuiButton::exec ));
+  sigClick.connect( sigc::hide( sigc::mem_fun( *host, &NewGuiHost::clearSmallIcons )));
+  sigClick.connect( sigc::hide( sigc::mem_fun( *guiButton, &GuiButton::exec )));
 
   SetBackground( PRESSED, IconRepository::getIcon("empty-pressed.png").getBaseSurface() );
   SetBackground( HIGHLITED, IconRepository::getIcon("empty-high.png").getBaseSurface() );
@@ -261,22 +261,32 @@ NewGuiHost :: NewGuiHost (MainScreenWidget *parent, MapDisplayPG* mapDisplay, co
          : DashboardPanel( parent, r, "GuiIcons", false ) , handler(NULL), enterKeyPressed(false), keyPressedButton(-1)
 {
    this->mapDisplay = mapDisplay;
-   mapDisplay->mouseButtonOnField.connect( SigC::slot( *this, &NewGuiHost::mapIconProcessing ));
-   updateFieldInfo.connect ( SigC::slot( *this, &NewGuiHost::evalCursor ));
+   mapDisplay->mouseButtonOnField.connect( sigc::mem_fun( *this, &NewGuiHost::mapIconProcessing ));
+   updateFieldInfo.connect ( sigc::mem_fun( *this, &NewGuiHost::evalCursor ));
    theGuiHost = this;
 
-   cursorMoved.connect( SigC::hide_return( SigC::slot( *this, &NewGuiHost::clearSmallIcons )) );
+   cursorMoved.connect( sigc::hide_return( sigc::mem_fun( *this, &NewGuiHost::clearSmallIcons )) );
 
    
-   PG_Application::GetApp()->sigKeyDown.connect( SigC::slot( *this, &NewGuiHost::eventKeyDown ));
-   PG_Application::GetApp()->sigKeyUp.connect( SigC::slot( *this, &NewGuiHost::eventKeyUp ));
+   PG_Application::GetApp()->sigKeyDown.connect( sigc::mem_fun( *this, &NewGuiHost::eventKeyDownSignal ));
+   PG_Application::GetApp()->sigKeyUp.connect( sigc::mem_fun( *this, &NewGuiHost::eventKeyUpSignal ));
    SetTransparency(255);
    
-   parent->lockOptionsChanged.connect( SigC::slot( *this, &NewGuiHost::lockOptionsChanged ));
+   parent->lockOptionsChanged.connect( sigc::mem_fun( *this, &NewGuiHost::lockOptionsChanged ));
 
-   GameMap::sigMapDeletion.connect( SigC::slot( *this, &NewGuiHost::mapDeleted ));
+   GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &NewGuiHost::mapDeleted ));
 }
 
+bool NewGuiHost::eventKeyDownSignal(const PG_MessageObject* o, const SDL_KeyboardEvent* key)
+{
+	return eventKeyDown(key);
+}
+bool NewGuiHost::eventKeyUpSignal(const PG_MessageObject* o, const SDL_KeyboardEvent* key)
+{
+	return eventKeyUp(key);
+}
+
+
 void NewGuiHost::lockOptionsChanged( int options )
 {
    if ( options & MainScreenWidget::LockOptions::MapActions )  
diff --git a/source/guiiconhandler.h b/source/guiiconhandler.h
index 8e2f9d3..3918d36 100644
--- a/source/guiiconhandler.h
+++ b/source/guiiconhandler.h
@@ -159,6 +159,10 @@ class NewGuiHost : public DashboardPanel {
 
         void mapDeleted( GameMap& map );
         
+        bool eventKeyDownSignal(const PG_MessageObject* o, const SDL_KeyboardEvent* key);
+        bool eventKeyUpSignal(const PG_MessageObject* o, const SDL_KeyboardEvent* key);
+
+
      protected:
         bool mapIconProcessing( const MapCoordinate& pos, const SPoint& mousePos, bool cursorChanged, int button, int prio );
 
diff --git a/source/infopopup.cpp b/source/infopopup.cpp
index 095c7fd..d350baa 100644
--- a/source/infopopup.cpp
+++ b/source/infopopup.cpp
@@ -21,7 +21,7 @@ InfoPopUp::InfoPopUp(PG_Widget* parent): PG_PopupMenu(parent, 20, 20 ) {
   addMenuItem("", 5,MenuItem::MIF_SEPARATOR );
   addMenuItem("Terrain", 6, slot(showTerrainInfo));
   //ut = new PG_PopupMenu::MenuItem(this, "Unit Type",  1, MenuItem::MIF_NONE);
-  //ut->sigSelectMenuItem.connect(SigC::slot(*this, &InfoPopUp::showUnitInfo));
+  //ut->sigSelectMenuItem.connect(sigc::mem_fun(*this, &InfoPopUp::showUnitInfo));
   //actmap->getField(mc)->vehicle;
   Hide();
 }
diff --git a/source/itemrepository.cpp b/source/itemrepository.cpp
index 962e5ba..c8c8eed 100644
--- a/source/itemrepository.cpp
+++ b/source/itemrepository.cpp
@@ -31,7 +31,7 @@
 #include "packagerepository.h"
 
 
-SigC::Signal0<void> dataLoaderTicker;
+sigc::signal<void> dataLoaderTicker;
 
 
 const char* cacheFileName = "asc2.cache";
@@ -337,7 +337,7 @@ void  loadAllData( bool useCache )
       }
       displayLogMessage ( 4, "loading of cache completed\n");
    } else {
-      MessagingHub::Instance().statusInformation("rebuilding data cache, please be patient");
+      MessagingHub::Instance().statusInformation("rebuilding data cache, please be patient\n"+ listContainer());
       
       loadalltextfiles();
 
diff --git a/source/itemrepository.h b/source/itemrepository.h
index 53920e7..4333e1b 100644
--- a/source/itemrepository.h
+++ b/source/itemrepository.h
@@ -129,7 +129,7 @@ class MineTypeRepository : public ItemRepository<MineType>  {
 extern MineTypeRepository mineTypeRepository;
 
 
-extern SigC::Signal0<void> dataLoaderTicker;
+extern sigc::signal<void> dataLoaderTicker;
 
 
 extern ItemRepositoryLoader<VehicleType>  vehicleTypeRepository;
diff --git a/source/libs/Makefile.in b/source/libs/Makefile.in
index 4ff1c75..439b65b 100644
--- a/source/libs/Makefile.in
+++ b/source/libs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -292,6 +292,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/loki-0.1.6/Makefile.in b/source/libs/loki-0.1.6/Makefile.in
index 8f3b378..38b770e 100644
--- a/source/libs/loki-0.1.6/Makefile.in
+++ b/source/libs/loki-0.1.6/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/Makefile.in b/source/libs/paragui/Makefile.in
index 4754bb9..392ebd7 100644
--- a/source/libs/paragui/Makefile.in
+++ b/source/libs/paragui/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/VisualC/paragui_dynamic.vcproj b/source/libs/paragui/VisualC/paragui_dynamic.vcproj
index 0583109..4483397 100644
--- a/source/libs/paragui/VisualC/paragui_dynamic.vcproj
+++ b/source/libs/paragui/VisualC/paragui_dynamic.vcproj
@@ -50,7 +50,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories=""$(physfs)";../src/core;../include;../src/themes;"$(libsigcpp)""
+				AdditionalIncludeDirectories=""$(physfs)";../src/core;../include;../src/themes;"$(libsigcpp2)""
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PARAGUI_DYNAMIC_EXPORTS;PHYSFS_SUPPORTS_ZIP;ZLIB_DLL"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -134,9 +134,9 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/vmg /MP"
-				Optimization="1"
+				Optimization="3"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories=""$(physfs)";../src/core;../include;../src/themes;"$(libsigcpp)""
+				AdditionalIncludeDirectories=""$(physfs)";../src/core;../include;../src/themes;"$(libsigcpp2)""
 				PreprocessorDefinitions="ZLIB_DLL;WIN32;NDEBUG;_WINDOWS;_USRDLL;PARAGUI_EXPORTS;PHYSFS_SUPPORTS_ZIP"
 				StringPooling="true"
 				RuntimeLibrary="2"
@@ -771,31 +771,6 @@
 					>
 				</File>
 				<File
-					RelativePath="..\src\core\pgsigconvert.cpp"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							Optimization="0"
-							AdditionalIncludeDirectories=""
-							PreprocessorDefinitions="ZLIB_DLL;WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;PARAGUI_DYNAMIC_EXPORTS;PHYSFS_SUPPORTS_ZIP;$(NoInherit)"
-							BasicRuntimeChecks="3"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							Optimization="1"
-							AdditionalIncludeDirectories=""
-							PreprocessorDefinitions="ZLIB_DLL;WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;PARAGUI_EXPORTS;PHYSFS_SUPPORTS_ZIP;$(NoInherit)"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
 					RelativePath="..\src\core\pgsurfacecache.cpp"
 					>
 					<FileConfiguration
diff --git a/source/libs/paragui/include/pgapplication.h b/source/libs/paragui/include/pgapplication.h
index f484122..c41cb3e 100644
--- a/source/libs/paragui/include/pgapplication.h
+++ b/source/libs/paragui/include/pgapplication.h
@@ -36,6 +36,7 @@
 
 #include <list>
 #include <utility>
+#include <sigc++/sigc++.h>
 
 #include "pgmessageobject.h"
 #include "pgscreenupdater.h"
@@ -117,11 +118,9 @@ public:
 	Signal type declaration
 	**/
 
-	template<class datatype = PG_Pointer>
-class SignalXMLTag : public PG_Signal1<PG_XMLTag*, datatype> {}
+class SignalXMLTag : public sigc::signal<bool, PG_XMLTag*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalAppIdle : public PG_Signal1<PG_MessageObject*, datatype> {}
+class SignalAppIdle : public sigc::signal<bool, PG_MessageObject*> {}
 	;
 
 	/**  */
@@ -609,8 +608,8 @@ class SignalAppIdle : public PG_Signal1<PG_MessageObject*, datatype> {}
 	my_ScreenUpdater->UpdateRects( screen, numrects, rects);   	
    }
    
-	SignalXMLTag<> sigXMLTag;
-	SignalAppIdle<> sigAppIdle;
+	SignalXMLTag sigXMLTag;
+	SignalAppIdle sigAppIdle;
 
 
    class BulkModeActivator {
@@ -727,6 +726,12 @@ private:
 	static bool defaultUpdateOverlappingSiblings;
 
    static PG_Char highlightingTag;
+
+public:
+   enum ScreenInitialization { None, Trying, Finished };
+   static ScreenInitialization isScreenInitialized();
+private:
+   static ScreenInitialization screenInitialized;
 };
 
 /**
diff --git a/source/libs/paragui/include/pgbutton.h b/source/libs/paragui/include/pgbutton.h
index 68ce60a..0d65d66 100644
--- a/source/libs/paragui/include/pgbutton.h
+++ b/source/libs/paragui/include/pgbutton.h
@@ -35,9 +35,9 @@
 #define PG_BUTTON_H
 
 #include "pgwidget.h"
-#include "pgsignals.h"
 #include "pgdraw.h"
 #include <string>
+#include <sigc++/sigc++.h>
 
 
 class PG_ButtonDataInternal;
@@ -161,8 +161,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalButtonClick : public PG_Signal1<PG_Button*, datatype> {}
+class SignalButtonClick : public sigc::signal<bool, PG_Button*> {}
 	;
 
 	/**
@@ -344,9 +343,9 @@ class SignalButtonClick : public PG_Signal1<PG_Button*, datatype> {}
    void SetText(const std::string& text);
 
    
-	SignalButtonClick<> sigClick;
+	SignalButtonClick sigClick;
 
-	static SignalButtonClick<> sigGlobalClick;
+	static SignalButtonClick sigGlobalClick;
 
 protected:
 
diff --git a/source/libs/paragui/include/pgdropdown.h b/source/libs/paragui/include/pgdropdown.h
index 92c310e..044565f 100644
--- a/source/libs/paragui/include/pgdropdown.h
+++ b/source/libs/paragui/include/pgdropdown.h
@@ -33,8 +33,8 @@
 #ifndef PG_DROPDOWN_H
 #define PG_DROPDOWN_H
 
+#include <sigc++/sigc++.h>
 #include "pgwidget.h"
-#include "pgsignals.h"
 #include "pglabel.h"
 #include "pglineedit.h"
 
@@ -58,8 +58,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalSelectItem : public PG_Signal1<PG_ListBoxBaseItem*, datatype> {}
+class SignalSelectItem : public sigc::signal<bool, PG_ListBoxBaseItem*> {}
 	;
 
 	enum {
@@ -177,11 +176,11 @@ class SignalSelectItem : public PG_Signal1<PG_ListBoxBaseItem*, datatype> {}
 
 	void AddChild(PG_Widget* child);
 
-	SignalSelectItem<> sigSelectItem;
+	SignalSelectItem sigSelectItem;
 
-	PG_LineEdit::SignalEditBegin<> sigEditBegin;
-	PG_LineEdit::SignalEditEnd<> sigEditEnd;
-	PG_LineEdit::SignalEditReturn<> sigEditReturn;
+	PG_LineEdit::SignalEditBegin sigEditBegin;
+	PG_LineEdit::SignalEditEnd sigEditEnd;
+	PG_LineEdit::SignalEditReturn sigEditReturn;
 
 protected:
 
diff --git a/source/libs/paragui/include/pglineedit.h b/source/libs/paragui/include/pglineedit.h
index 430ca7b..053cea0 100644
--- a/source/libs/paragui/include/pglineedit.h
+++ b/source/libs/paragui/include/pglineedit.h
@@ -30,7 +30,6 @@
 #define PG_LINEEDIT
 
 #include "pgthemewidget.h"
-#include "pgsignals.h"
 #include "pgstring.h"
 
 /** \file pglineedit.h
@@ -55,17 +54,13 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalEditBegin : public PG_Signal1<PG_LineEdit*, datatype> {}
+class SignalEditBegin : public sigc::signal<bool> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalEditEnd : public PG_Signal1<PG_LineEdit*, datatype> {}
+class SignalEditEnd : public sigc::signal<bool> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalEditReturn : public PG_Signal1<PG_LineEdit*, datatype> {}
+class SignalEditReturn : public sigc::signal<bool> {}
 	;
-   template<class datatype = PG_Pointer>
-class SignalEditUpdate : public PG_Signal1<PG_LineEdit*, datatype> {}
+class SignalEditUpdate : public sigc::signal<bool> {}
    ;
 
 	/** */
@@ -150,10 +145,10 @@ class SignalEditUpdate : public PG_Signal1<PG_LineEdit*, datatype> {}
 
 	bool Action(KeyAction action);
 
-	SignalEditBegin<> sigEditBegin;
-	SignalEditEnd<> sigEditEnd;
-	SignalEditReturn<> sigEditReturn;
-   SignalEditUpdate<> sigEditUpdate;
+	SignalEditBegin sigEditBegin;
+	SignalEditEnd sigEditEnd;
+	SignalEditReturn sigEditReturn;
+    SignalEditUpdate sigEditUpdate;
 
 
    
diff --git a/source/libs/paragui/include/pglistbox.h b/source/libs/paragui/include/pglistbox.h
index a75a87a..659f2d7 100644
--- a/source/libs/paragui/include/pglistbox.h
+++ b/source/libs/paragui/include/pglistbox.h
@@ -29,6 +29,7 @@
 #ifndef PG_LISTBOX_H
 #define PG_LISTBOX_H
 
+#include <sigc++/sigc++.h>
 #include "pgwidgetlist.h"
 #include "pglabel.h"
 
@@ -52,8 +53,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalSelectItem : public PG_Signal1<PG_ListBoxBaseItem*, datatype> {}
+class SignalSelectItem : public sigc::signal<bool, PG_ListBoxBaseItem*> {}
 	;
 
 	/** */
@@ -124,7 +124,7 @@ class SignalSelectItem : public PG_Signal1<PG_ListBoxBaseItem*, datatype> {}
 
 	void AddChild(PG_Widget* child);
 
-	SignalSelectItem<> sigSelectItem;
+	SignalSelectItem sigSelectItem;
 
 protected:
 
diff --git a/source/libs/paragui/include/pgmenubar.h b/source/libs/paragui/include/pgmenubar.h
index a46fde0..b9770f5 100644
--- a/source/libs/paragui/include/pgmenubar.h
+++ b/source/libs/paragui/include/pgmenubar.h
@@ -34,10 +34,12 @@
 #define PG_MENUBAR_H
 
 #include "pgthemewidget.h"
+#include "pgpopupmenu.h"
 
 class PG_Button;
 class PG_PopupMenu;
 
+
 /**
 	@author Alexander Pipelka
 	@short A menubar.
@@ -91,8 +93,7 @@ protected:
 	bool enterButton ( PG_Pointer last );
 private:
 
-
-   bool deactivateItem();
+   bool deactivateItem(PG_PopupMenu::MenuItem* item);
    
 	/**
 		Callback handler for MSG_BUTTONCLICK messages
diff --git a/source/libs/paragui/include/pgmessageobject.h b/source/libs/paragui/include/pgmessageobject.h
index fb4570e..efd068d 100644
--- a/source/libs/paragui/include/pgmessageobject.h
+++ b/source/libs/paragui/include/pgmessageobject.h
@@ -34,11 +34,13 @@
 #define PG_MESSAGEOBJECT_H
 
 #include "paragui.h"
-#include "pgsignals.h"
 #include <vector>
+#include <sigc++/sigc++.h>
 
 class PG_Widget;
 
+typedef void* PG_Pointer;
+
 /**
 	@author Alexander Pipelka
 	
@@ -47,43 +49,32 @@ class PG_Widget;
 	Provides a message pump and global handlers for all other PG_MessageObject instances.
 */
 
-class DECLSPEC PG_MessageObject : public virtual SigC::Object {
+class DECLSPEC PG_MessageObject : public virtual sigc::trackable {
 
 public:
 
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalActive : public PG_Signal2<PG_MessageObject*, const SDL_ActiveEvent*, datatype> {}
+class SignalActive : public sigc::signal<bool, PG_MessageObject*, const SDL_ActiveEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalKeyDown : public PG_Signal2<PG_MessageObject*, const SDL_KeyboardEvent*, datatype> {}
+class SignalKeyDown : public sigc::signal<bool, PG_MessageObject*, const SDL_KeyboardEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalKeyUp : public PG_Signal2<PG_MessageObject*, const SDL_KeyboardEvent*, datatype> {}
+class SignalKeyUp : public sigc::signal<bool, PG_MessageObject*, const SDL_KeyboardEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalMouseMotion : public PG_Signal2<PG_MessageObject*, const SDL_MouseMotionEvent*, datatype> {}
+class SignalMouseMotion : public sigc::signal<bool, PG_MessageObject*, const SDL_MouseMotionEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalMouseButtonDown : public PG_Signal2<PG_MessageObject*, const SDL_MouseButtonEvent*, datatype> {}
+class SignalMouseButtonDown : public sigc::signal<bool, PG_MessageObject*, const SDL_MouseButtonEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalMouseButtonUp : public PG_Signal2<PG_MessageObject*, const SDL_MouseButtonEvent*, datatype> {}
+class SignalMouseButtonUp : public sigc::signal<bool, PG_MessageObject*, const SDL_MouseButtonEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalQuit : public PG_Signal1<PG_MessageObject*, datatype> {}
+class SignalQuit : public sigc::signal<bool, PG_MessageObject*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalSysWM : public PG_Signal2<PG_MessageObject*, const SDL_SysWMEvent*, datatype> {}
+class SignalSysWM : public sigc::signal<bool, PG_MessageObject*, const SDL_SysWMEvent*> {}
 	;
-	template<class datatype = PG_Pointer>
-class SignalVideoResize : public PG_Signal2<PG_MessageObject*, const SDL_ResizeEvent*, datatype> {}
+class SignalVideoResize : public sigc::signal<bool, PG_MessageObject*, const SDL_ResizeEvent*> {}
 	;
-
-	template<class datatype = PG_Pointer>
-class SignalDelete : public PG_Signal1<const PG_MessageObject*, datatype> {}
+class SignalDelete : public sigc::signal<bool, const PG_MessageObject*> {}
 	;
 
 	/**
@@ -152,17 +143,17 @@ class SignalDelete : public PG_Signal1<const PG_MessageObject*, datatype> {}
 	*/
 	virtual bool ProcessEvent(const SDL_Event* event);
 
-	SignalActive<> sigActive;
-	SignalKeyDown<> sigKeyDown;
-	SignalKeyUp<> sigKeyUp;
-	SignalMouseMotion<> sigMouseMotion;
-	SignalMouseButtonDown<> sigMouseButtonDown;
-	SignalMouseButtonUp<> sigMouseButtonUp;
-	SignalSysWM<> sigSysWM;
-	SignalVideoResize<> sigVideoResize;
-	SignalQuit<> sigQuit;
-
-	SignalDelete<> sigDelete;
+	SignalActive sigActive;
+	SignalKeyDown sigKeyDown;
+	SignalKeyUp sigKeyUp;
+	SignalMouseMotion sigMouseMotion;
+	SignalMouseButtonDown sigMouseButtonDown;
+	SignalMouseButtonUp sigMouseButtonUp;
+	SignalSysWM sigSysWM;
+	SignalVideoResize sigVideoResize;
+	SignalQuit sigQuit;
+
+	SignalDelete sigDelete;
 protected:
 
 	/**
diff --git a/source/libs/paragui/include/pgmultilineedit.h b/source/libs/paragui/include/pgmultilineedit.h
index f50a38e..b50adfe 100644
--- a/source/libs/paragui/include/pgmultilineedit.h
+++ b/source/libs/paragui/include/pgmultilineedit.h
@@ -39,7 +39,7 @@ protected:
 
 	virtual void DeleteChar(Uint16 pos);
 
-	bool handleScroll(PG_ScrollBar* widget, long data);
+	bool handleScroll(long data);
 
 private:
 
diff --git a/source/libs/paragui/include/pgpopupmenu.h b/source/libs/paragui/include/pgpopupmenu.h
index 7c83f1e..8f16f08 100644
--- a/source/libs/paragui/include/pgpopupmenu.h
+++ b/source/libs/paragui/include/pgpopupmenu.h
@@ -34,11 +34,11 @@
 #define PG_POPUPMENU_H
 
 #include "pgthemewidget.h"
-#include "pgsignals.h"
 #include "pgstring.h"
 
 #include <string>
 #include <list>
+#include <sigc++/sigc++.h>
 #ifdef HASH_MAP_INC
 # include HASH_MAP_INC
 #else
@@ -96,13 +96,12 @@ class DECLSPEC MenuItem : public PG_Rect, public PG_MessageObject {
 		/**
 		Signal type declaration
 		**/
-		template<class datatype = PG_Pointer>
-	class SignalSelectMenuItem : public PG_Signal1<MenuItem*, datatype> {}
+	class SignalSelectMenuItem : public sigc::signal<bool, MenuItem*> {}
 		;
 
-		SignalSelectMenuItem<> sigSelectMenuItem;
+		SignalSelectMenuItem sigSelectMenuItem;
 
-		typedef SigC::Slot2<bool, MenuItem*, PG_Pointer> MenuItemSlot;
+		typedef sigc::slot<bool, MenuItem*, PG_Pointer> MenuItemSlot;
 
 	public: // methods
 		MenuItem(PG_PopupMenu *parent,
@@ -191,8 +190,7 @@ public: // methods
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalSelectMenuItem : public PG_Signal1<MenuItem*, datatype> {}
+class SignalSelectMenuItem : public sigc::signal<bool, MenuItem*> {}
 	;
 
 	PG_PopupMenu(PG_Widget *parent,
@@ -263,7 +261,7 @@ class SignalSelectMenuItem : public PG_Signal1<MenuItem*, datatype> {}
 	void openMenu(int x = -1, int y = -1);
 
 
-	SignalSelectMenuItem<> sigSelectMenuItem;
+	SignalSelectMenuItem sigSelectMenuItem;
 
 protected: // methods
 
diff --git a/source/libs/paragui/include/pgpropertyeditor_linefield.h b/source/libs/paragui/include/pgpropertyeditor_linefield.h
index 97aab9b..c879296 100644
--- a/source/libs/paragui/include/pgpropertyeditor_linefield.h
+++ b/source/libs/paragui/include/pgpropertyeditor_linefield.h
@@ -41,7 +41,7 @@
 	Abstract base class for various property editor fields .
 */
 
-class DECLSPEC PG_PropertyEditor_LineField : public PG_PropertyEditor::PG_PropertyEditorField, public SigC::Object {
+class DECLSPEC PG_PropertyEditor_LineField : public PG_PropertyEditor::PG_PropertyEditorField, public sigc::trackable {
 public:
 	void Focus() {
 		lineEdit->EditBegin();
@@ -53,7 +53,7 @@ protected:
 	PG_PropertyEditor_LineField ( PG_PropertyEditor* propertyEditor, const std::string& name ) {
 		PG_Rect r = propertyEditor->RegisterProperty( name, this );
 		lineEdit = new PG_LineEdit( propertyEditor, r, propertyEditor->GetStyleName( "LineFieldProperty" ) );
-		lineEdit->sigEditEnd.connect( SigC::slot( *this, &PG_PropertyEditor_LineField::EditEnd ));
+		lineEdit->sigEditEnd.connect( sigc::mem_fun( *this, &PG_PropertyEditor_LineField::EditEnd ));
 	}
 
 
diff --git a/source/libs/paragui/include/pgpropertyfield_button.h b/source/libs/paragui/include/pgpropertyfield_button.h
index 6d2f671..3688d5f 100644
--- a/source/libs/paragui/include/pgpropertyfield_button.h
+++ b/source/libs/paragui/include/pgpropertyfield_button.h
@@ -39,7 +39,7 @@
 	Button for a PG_PropertyEditor
 */
 
-class PG_PropertyField_Button : public PG_PropertyEditor::PG_PropertyEditorField, public SigC::Object  {
+class PG_PropertyField_Button : public PG_PropertyEditor::PG_PropertyEditorField, public sigc::trackable  {
 	PG_Button* button;
 	bool switchInverted;
 
@@ -49,7 +49,7 @@ class PG_PropertyField_Button : public PG_PropertyEditor::PG_PropertyEditorField
 	}
 
 public:
-	typedef PG_Signal1<PG_PropertyField_Button*> ButtonPropertySignal;
+	typedef sigc::signal<void, PG_PropertyField_Button*> ButtonPropertySignal;
    ButtonPropertySignal sigClick;
 
 	/** Creates a PG_PropertyField_Checkbox
@@ -62,7 +62,7 @@ public:
 		PG_Rect r = propertyEditor->RegisterProperty( name, this, height );
       button = new PG_Button( propertyEditor, PG_Rect( r.x + 2, r.y + 2, r.w - 4, r.h -4 ), PG_NULLSTR, -1, propertyEditor->GetStyleName("ButtonProperty") );
       button->SetText( buttonname );
-		button->sigClick.connect( SigC::slot(*this, &PG_PropertyField_Button::click));
+		button->sigClick.connect( sigc::hide( sigc::mem_fun(*this, &PG_PropertyField_Button::click)));
 	};
 
 	bool Valid() {
diff --git a/source/libs/paragui/include/pgpropertyfield_checkbox.h b/source/libs/paragui/include/pgpropertyfield_checkbox.h
index f9e8ea1..360fbb9 100644
--- a/source/libs/paragui/include/pgpropertyfield_checkbox.h
+++ b/source/libs/paragui/include/pgpropertyfield_checkbox.h
@@ -40,18 +40,18 @@
 */
 
 template<typename B>
-class PG_PropertyField_Checkbox : public PG_PropertyEditor::PG_PropertyEditorField, public SigC::Object  {
+class PG_PropertyField_Checkbox : public PG_PropertyEditor::PG_PropertyEditorField, public sigc::trackable  {
 	B* myProperty;
 	PG_CheckButton* checkbox;
 	bool switchInverted;
 
-	bool click( bool b) {
+	bool click( const PG_Widget* button, bool b) {
 		sigValueChanged(this,b);
 		return true;
 	}
 
 public:
-	typedef PG_Signal2<PG_PropertyField_Checkbox*, B> CheckboxPropertySignal;
+	typedef sigc::signal<void, PG_PropertyField_Checkbox*, B> CheckboxPropertySignal;
 	CheckboxPropertySignal sigValueChanged;
 	CheckboxPropertySignal sigValueApplied;
 
@@ -64,7 +64,7 @@ public:
 	PG_PropertyField_Checkbox( PG_PropertyEditor* propertyEditor, const std::string& name, B* b, bool inverted = false ) : myProperty( b ), switchInverted( inverted ) {
 		PG_Rect r = propertyEditor->RegisterProperty( name, this );
 		checkbox = new PG_CheckButton( propertyEditor, r, PG_NULLSTR, -1, propertyEditor->GetStyleName("BoolProperty") );
-		checkbox->sigClick.connect( SigC::slot(*this, &PG_PropertyField_Checkbox::click));
+		checkbox->sigClick.connect( sigc::mem_fun(*this, &PG_PropertyField_Checkbox<B>::click));
 		Reload();
 	};
 
@@ -77,7 +77,7 @@ public:
 	PG_PropertyField_Checkbox( PG_PropertyEditor* propertyEditor, const std::string& name, const B& b, bool inverted = false ) : myProperty( NULL ), switchInverted( inverted ) {
 		PG_Rect r = propertyEditor->RegisterProperty( name, this );
 		checkbox = new PG_CheckButton( propertyEditor, r, PG_NULLSTR, -1, propertyEditor->GetStyleName("BoolProperty") );
-		checkbox->sigClick.connect( SigC::slot(*this, &PG_PropertyField_Checkbox::click));
+		checkbox->sigClick.connect( sigc::mem_fun(*this, &PG_PropertyField_Checkbox::click));
 
 		if ( bool(b) ^ switchInverted )
 			checkbox->SetPressed();
diff --git a/source/libs/paragui/include/pgpropertyfield_dropdown.h b/source/libs/paragui/include/pgpropertyfield_dropdown.h
index c51e2c9..c4f4952 100644
--- a/source/libs/paragui/include/pgpropertyfield_dropdown.h
+++ b/source/libs/paragui/include/pgpropertyfield_dropdown.h
@@ -41,12 +41,12 @@
    from the dropdown widget.
  */
 template<typename StringType, typename iterator = char*>
-class PG_PropertyField_DropDown: public PG_PropertyEditor::PG_PropertyEditorField, public SigC::Object  {
+class PG_PropertyField_DropDown: public PG_PropertyEditor::PG_PropertyEditorField, public sigc::trackable  {
 private:
 	StringType* myProperty;
 	PG_DropDown* dropdown;
 
-	bool click() {
+	bool click( PG_ListBoxBaseItem* item ) {
 		StringType value = dropdown->GetText();
 		sigValueChanged(this,value);
 		return true;
@@ -56,11 +56,11 @@ private:
 		PG_Rect r = propertyEditor->RegisterProperty( name, this );
 		dropdown = new PG_DropDown( propertyEditor, r, -1, propertyEditor->GetStyleName("DropDownSelectorProperty") );
 		dropdown->SetEditable( false );
-		dropdown->sigSelectItem.connect( SigC::slot(*this, &PG_PropertyField_DropDown::click));
+		dropdown->sigSelectItem.connect( sigc::mem_fun(*this, &PG_PropertyField_DropDown::click));
 	}
 
 public:
-	typedef PG_Signal2<PG_PropertyField_DropDown*, StringType> DropDownPropertySignal;
+	typedef sigc::signal<bool, PG_PropertyField_DropDown*, StringType> DropDownPropertySignal;
 	DropDownPropertySignal sigValueChanged;
 	DropDownPropertySignal sigValueApplied;
 
diff --git a/source/libs/paragui/include/pgpropertyfield_intdropdown.h b/source/libs/paragui/include/pgpropertyfield_intdropdown.h
index 76a65c1..5a48a16 100644
--- a/source/libs/paragui/include/pgpropertyfield_intdropdown.h
+++ b/source/libs/paragui/include/pgpropertyfield_intdropdown.h
@@ -41,7 +41,7 @@
    from the dropdown widget.
  */
 template<typename IntType, typename iterator = char*>
-class PG_PropertyField_IntDropDown: public PG_PropertyEditor::PG_PropertyEditorField, public SigC::Object  {
+class PG_PropertyField_IntDropDown: public PG_PropertyEditor::PG_PropertyEditorField, public sigc::trackable  {
 private:
 	IntType* myProperty;
 	PG_DropDown* dropdown;
@@ -56,11 +56,11 @@ private:
 		PG_Rect r = propertyEditor->RegisterProperty( name, this );
 		dropdown = new PG_DropDown( propertyEditor, r, -1, propertyEditor->GetStyleName("DropDownSelectorProperty") );
 		dropdown->SetEditable( false );
-		dropdown->sigSelectItem.connect( SigC::slot(*this, &PG_PropertyField_IntDropDown::click));
+		dropdown->sigSelectItem.connect( sigc::hide( sigc::mem_fun(*this, &PG_PropertyField_IntDropDown::click)));
 	}
 
 public:
-	typedef PG_Signal2<PG_PropertyField_IntDropDown*, IntType> DropDownPropertySignal;
+	typedef sigc::signal<void, PG_PropertyField_IntDropDown*, IntType> DropDownPropertySignal;
 	DropDownPropertySignal sigValueChanged;
 	DropDownPropertySignal sigValueApplied;
 
diff --git a/source/libs/paragui/include/pgpropertyfield_integer.h b/source/libs/paragui/include/pgpropertyfield_integer.h
index af644a0..e8ec9c0 100644
--- a/source/libs/paragui/include/pgpropertyfield_integer.h
+++ b/source/libs/paragui/include/pgpropertyfield_integer.h
@@ -72,7 +72,7 @@ protected:
 
 public:
 
-	typedef PG_Signal2<PG_PropertyField_Integer*, IntegerType> IntegerPropertySignal;
+	typedef sigc::signal<void, PG_PropertyField_Integer*, IntegerType> IntegerPropertySignal;
 	IntegerPropertySignal sigValueChanged;
 	IntegerPropertySignal sigValueApplied;
 
diff --git a/source/libs/paragui/include/pgpropertyfield_string.h b/source/libs/paragui/include/pgpropertyfield_string.h
index cf03a8e..91e4b5a 100644
--- a/source/libs/paragui/include/pgpropertyfield_string.h
+++ b/source/libs/paragui/include/pgpropertyfield_string.h
@@ -49,7 +49,7 @@ class PG_PropertyField_String : public PG_PropertyEditor_LineField {
       }
 
    public:
-      typedef PG_Signal2<PG_PropertyField_String*, StringType> StringPropertySignal;
+      typedef sigc::signal<void, PG_PropertyField_String*, StringType> StringPropertySignal;
       StringPropertySignal sigValueChanged;
       StringPropertySignal sigValueApplied;
 
diff --git a/source/libs/paragui/include/pgradiobutton.h b/source/libs/paragui/include/pgradiobutton.h
index 0ae15bc..edffe9c 100644
--- a/source/libs/paragui/include/pgradiobutton.h
+++ b/source/libs/paragui/include/pgradiobutton.h
@@ -33,6 +33,7 @@
 #ifndef PG_RADIOBUTTON_H
 #define PG_RADIOBUTTON_H
 
+#include <sigc++/sigc++.h>
 #include "pgthemewidget.h"
 #include "pglabel.h"
 
@@ -59,8 +60,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalButtonClick : public PG_Signal2<PG_RadioButton*, datatype> {}
+class SignalButtonClick : public sigc::signal<bool, PG_RadioButton*, bool> {}
 	;
 
 	/** */
@@ -104,7 +104,7 @@ class SignalButtonClick : public PG_Signal2<PG_RadioButton*, datatype> {}
 		return my_groupNext;
 	}
 
-	SignalButtonClick<bool> sigClick;
+	SignalButtonClick sigClick;
 
 protected:
 
diff --git a/source/libs/paragui/include/pgrichedit.h b/source/libs/paragui/include/pgrichedit.h
index 50f3d78..00c4e69 100644
--- a/source/libs/paragui/include/pgrichedit.h
+++ b/source/libs/paragui/include/pgrichedit.h
@@ -173,7 +173,7 @@ protected:
 
 private:
 
-	bool handleScrollTrack();
+	bool handleScrollTrack(long pos);
 
 	enum { MARK_SPACE, MARK_NONBREAKABLE_SPACE, MARK_ENTER, MARK_TAB,
 	       MARK_TEXT_LEFT, MARK_TEXT_CENTER, MARK_TEXT_RIGHT, MARK_TEXT_BLOCK,
diff --git a/source/libs/paragui/include/pgscrollarea.h b/source/libs/paragui/include/pgscrollarea.h
index 317b363..b0c3c0c 100644
--- a/source/libs/paragui/include/pgscrollarea.h
+++ b/source/libs/paragui/include/pgscrollarea.h
@@ -33,6 +33,7 @@
 #ifndef PG_SCROLLAREA_H
 #define PG_SCROLLAREA_H
 
+#include <sigc++/sigc++.h>
 #include "pgwidget.h"
 #include "pgpoint.h"
 
@@ -48,9 +49,9 @@
 class DECLSPEC PG_ScrollArea : public PG_Widget {
 public:
 
-class SignalAreaChangedHeight : public PG_Signal2<PG_ScrollArea*, Uint16> {}
+class SignalAreaChangedHeight : public sigc::signal<bool, PG_ScrollArea*, Uint16> {}
 	;
-class SignalAreaChangedWidth : public PG_Signal2<PG_ScrollArea*, Uint16> {}
+class SignalAreaChangedWidth : public sigc::signal<bool, PG_ScrollArea*, Uint16> {}
 	;
 
 	/**
diff --git a/source/libs/paragui/include/pgscrollbar.h b/source/libs/paragui/include/pgscrollbar.h
index 744cd25..d1640ab 100644
--- a/source/libs/paragui/include/pgscrollbar.h
+++ b/source/libs/paragui/include/pgscrollbar.h
@@ -103,11 +103,9 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype>
-class SignalScrollPos : public PG_Signal2<PG_ScrollBar*, datatype> {}
+class SignalScrollPos : public sigc::signal<bool, long> {}
 	;
-	template<class datatype>
-class SignalScrollTrack : public PG_Signal2<PG_ScrollBar*, datatype> {}
+class SignalScrollTrack : public sigc::signal<bool, long> {}
 	;
 
 	/**  */
@@ -141,8 +139,8 @@ class SignalScrollTrack : public PG_Signal2<PG_ScrollBar*, datatype> {}
 	void SetPageSize(int ps);
 
    
-	SignalScrollPos<long> sigScrollPos;
-	SignalScrollTrack<long> sigScrollTrack;
+	SignalScrollPos sigScrollPos;
+	SignalScrollTrack sigScrollTrack;
 
 protected:
 
@@ -165,7 +163,7 @@ protected:
 
 	int scroll_max;
 
-	int scroll_current;
+	long scroll_current;
 
 	int my_linesize;
 
diff --git a/source/libs/paragui/include/pgscrollwidget.h b/source/libs/paragui/include/pgscrollwidget.h
index 07e111f..2013362 100644
--- a/source/libs/paragui/include/pgscrollwidget.h
+++ b/source/libs/paragui/include/pgscrollwidget.h
@@ -143,11 +143,11 @@ protected:
 
    bool eventMouseButtonDown(const SDL_MouseButtonEvent* button);
    
-	/**  */
-	bool handleScrollPos(PG_ScrollBar* widget, long data);
+	bool handleScrollPos_horiz(long data);
+	bool handleScrollPos_vert(long data);
 
-	/**  */
-	bool handleScrollTrack(PG_ScrollBar* widget, long data);
+	bool handleScrollTrack_horiz(long data);
+	bool handleScrollTrack_vert(long data);
 
 	bool handleAreaChangedHeight(PG_ScrollArea* area, Uint16 h);
 
diff --git a/source/libs/paragui/include/pgsigconvert.h b/source/libs/paragui/include/pgsigconvert.h
deleted file mode 100644
index 7397b51..0000000
--- a/source/libs/paragui/include/pgsigconvert.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
-	libSigCX -libSigC++ Extras 
- 
- 
-Distribution of library and components is under the LGPL as listed in the
-file COPYING.  Examples and tests are Public Domain.
- 
-Contact info:
-  Maintainer:   mailto: rottmann at users.sourceforge.net
-  Mailing List: mailto: libsigx-main at lists.sourceforge.net
-  Homepage:     http://libsigx.sourceforge.net
-  Download:     http://sourceforge.net/project/showfiles.php?group_id=58659
-*/
-
-#ifndef   SIGC_CONVERT_H
-#define   SIGC_CONVERT_H
-#include <sigc++/adaptor.h>
-#include "SDL.h"
-
-/*
-  SigC::convert
-  -------------
-  convert() alters a Slot by assigning a conversion function 
-  which can completely alter the parameter types of a slot. 
- 
-  Only convert functions for changing with same number of
-  arguments is compiled by default.
- 
-  Sample usage:
-    int my_string_to_char(Slot2<int,const char*> &d,const string &s)
-    int f(const char*);
-    string s=hello;
- 
- 
-    Slot1<int,const string &>  s2=convert(slot(&f),my_string_to_char);
-    s2(s);  
- 
-*/
-
-#ifdef SIGC_CXX_NAMESPACES
-namespace SigCX {
-#endif
-
-// (internal)
-struct AdaptorConvertSlotNode : public SigC::AdaptorSlotNode {
-	SigC::FuncPtr convert_func_;
-
-	AdaptorConvertSlotNode(SigC::FuncPtr proxy, const SigC::Node& s, SigC::FuncPtr dtor);
-
-	virtual ~AdaptorConvertSlotNode();
-};
-
-
-
-
-
-template <class R,class T>
-struct AdaptorConvertSlot0_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&);
-	static RType proxy(void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_);
-	}
-};
-
-template <class R,class T>
-SigC::Slot0<R>
-convert(const T& slot_, R (*convert_func)(T&)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot0_<R,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class T>
-struct AdaptorConvertSlot1_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1);
-	}
-};
-
-template <class R,class P1,class T>
-SigC::Slot1<R,P1>
-convert(const T& slot_, R (*convert_func)(T&,P1)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot1_<R,P1,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class P2,class T>
-struct AdaptorConvertSlot2_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1,P2);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,typename SigC::Trait<P2>::ref p2,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1,p2);
-	}
-};
-
-template <class R,class P1,class P2,class T>
-SigC::Slot2<R,P1,P2>
-convert(const T& slot_, R (*convert_func)(T&,P1,P2)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot2_<R,P1,P2,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class P2,class P3,class T>
-struct AdaptorConvertSlot3_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1,P2,P3);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,typename SigC::Trait<P2>::ref p2,typename SigC::Trait<P3>::ref p3,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1,p2,p3);
-	}
-};
-
-template <class R,class P1,class P2,class P3,class T>
-SigC::Slot3<R,P1,P2,P3>
-convert(const T& slot_, R (*convert_func)(T&,P1,P2,P3)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot3_<R,P1,P2,P3,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class P2,class P3,class P4,class T>
-struct AdaptorConvertSlot4_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1,P2,P3,P4);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,typename SigC::Trait<P2>::ref p2,typename SigC::Trait<P3>::ref p3,typename SigC::Trait<P4>::ref p4,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1,p2,p3,p4);
-	}
-};
-
-template <class R,class P1,class P2,class P3,class P4,class T>
-SigC::Slot4<R,P1,P2,P3,P4>
-convert(const T& slot_, R (*convert_func)(T&,P1,P2,P3,P4)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot4_<R,P1,P2,P3,P4,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class P2,class P3,class P4,class P5,class T>
-struct AdaptorConvertSlot5_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1,P2,P3,P4,P5);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,typename SigC::Trait<P2>::ref p2,typename SigC::Trait<P3>::ref p3,typename SigC::Trait<P4>::ref p4,typename SigC::Trait<P5>::ref p5,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1,p2,p3,p4,p5);
-	}
-};
-
-template <class R,class P1,class P2,class P3,class P4,class P5,class T>
-SigC::Slot5<R,P1,P2,P3,P4,P5>
-convert(const T& slot_, R (*convert_func)(T&,P1,P2,P3,P4,P5)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot5_<R,P1,P2,P3,P4,P5,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class T>
-struct AdaptorConvertSlot6_ {
-	typedef typename SigC::Trait<R>::type RType;
-	typedef R (*ConvertFunc)(T&,P1,P2,P3,P4,P5,P6);
-	static RType proxy(typename SigC::Trait<P1>::ref p1,typename SigC::Trait<P2>::ref p2,typename SigC::Trait<P3>::ref p3,typename SigC::Trait<P4>::ref p4,typename SigC::Trait<P5>::ref p5,typename SigC::Trait<P6>::ref p6,void *data) {
-		AdaptorConvertSlotNode& node=*(AdaptorConvertSlotNode*)(data);
-		T &slot_=(T&)(node.slot_);
-		return ((ConvertFunc)(node.convert_func_))
-		       (slot_,p1,p2,p3,p4,p5,p6);
-	}
-};
-
-template <class R,class P1,class P2,class P3,class P4,class P5,class P6,class T>
-SigC::Slot6<R,P1,P2,P3,P4,P5,P6>
-convert(const T& slot_, R (*convert_func)(T&,P1,P2,P3,P4,P5,P6)) {
-	return new AdaptorConvertSlotNode((SigC::FuncPtr)(&AdaptorConvertSlot6_<R,P1,P2,P3,P4,P5,P6,T>::proxy),
-	                                  slot_,
-	                                  (SigC::FuncPtr)(convert_func));
-}
-
-
-
-#ifdef SIGC_CXX_NAMESPACES
-}
-#endif
-
-
-
-#endif // SIGC_CONVERT_H
diff --git a/source/libs/paragui/include/pgsignals.h b/source/libs/paragui/include/pgsignals.h
deleted file mode 100644
index c361edb..0000000
--- a/source/libs/paragui/include/pgsignals.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-    ParaGUI - crossplatform widgetset
-    Copyright (C) 2000,2001,2002  Alexander Pipelka
- 
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
-    License as published by the Free Software Foundation; either
-    version 2 of the License, or (at your option) any later version.
- 
-    This library 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
-    Library General Public License for more details.
- 
-    You should have received a copy of the GNU Library General Public
-    License along with this library; if not, write to the Free
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- 
-    Alexander Pipelka
-    pipelka at teleweb.at
- 
-    Last Update:      $Author: mbickel $
-    Update Date:      $Date: 2009-04-18 13:48:39 $
-    Source File:      $Source: /home/martin/asc/v2/svntest/games/asc/source/libs/paragui/include/pgsignals.h,v $
-    CVS/RCS Revision: $Revision: 1.3 $
-    Status:           $State: Exp $
-*/
-
-/** \file pgsignals.h
-	Header file for the PG_Signal0, PG_Signal1 and PG_Signal2 classes.
-*/
-
-#ifndef PG_SIGNALS_H
-#define PG_SIGNALS_H
-
-#include <sigc++/sigc++.h>
-#include "pgsigconvert.h"
-
-
-typedef void* PG_Pointer;
-
-template<class datatype = PG_Pointer>
-class PG_Signal0 : public SigC::Signal0<bool> {
-public:
-
-	SigC::Connection connect(const SigC::Slot1<bool, datatype>& s, datatype data) {
-		return SigC::Signal0<bool>::connect(bind(s, data));
-	};
-
-};
-
-template<class P1, class datatype = PG_Pointer>
-class PG_Signal1 : public SigC::Signal1<bool, P1> {
-	static bool sig_convert0(SigC::Slot0<bool>& s, P1 p1) {
-		return s();
-	}
-
-public:
-
-	SigC::Connection connect(const SigC::Slot2<bool, P1, datatype>& s, datatype data) {
-		return SigC::Signal1<bool, P1>::connect(bind(s, data));
-	};
-
-	SigC::Connection connect(const SigC::Slot1<bool, datatype>& s, datatype data) {
-		return connect(bind(s, data));
-	}
-
-	SigC::Connection connect(const SigC::Slot1<bool, P1>& s) {
-		return SigC::Signal1<bool, P1>::connect(s);
-	}
-
-	SigC::Connection connect(const SigC::Slot0<bool>& s) {
-		return SigC::Signal1<bool, P1>::connect( SigCX::convert(s, sig_convert0));
-	}
-
-	PG_Signal1& operator=(const PG_Signal1&);
-};
-
-
-template<class P1, class P2, class datatype = PG_Pointer>
-class PG_Signal2 : public SigC::Signal2<bool, P1, P2> {
-
-	static bool sig_convert_p2( SigC::Slot1<bool, P2>& s, P1 p1, P2 p2) {
-		return s(p2);
-	}
-
-	static bool sig_convert_p1( SigC::Slot1<bool, P1>& s, P1 p1, P2 p2) {
-		return s(p1);
-	}
-
-	static bool sig_convert0( SigC::Slot0<bool>& s, P1 p1, P2 p2) {
-		return s();
-	}
-
-public:
-
-	SigC::Connection connect(const SigC::Slot3<bool, P1, P2, datatype>& s, datatype data) {
-		return SigC::Signal2<bool, P1, P2>::connect(bind(s, data));
-	}
-
-	SigC::Connection connect(const SigC::Slot2<bool, P1, datatype>& s, datatype data) {
-		return SigC::Signal2<bool, P1, P2>::connect(bind(s, data));
-	};
-
-	SigC::Connection connect(const SigC::Slot2<bool, P1, P2>& s) {
-		return SigC::Signal2<bool, P1, P2>::connect(s);
-	}
-
-	SigC::Connection connect(const SigC::Slot1<bool, P2>& s) {
-		return SigC::Signal2<bool, P1, P2>::connect( SigCX::convert(s, sig_convert_p2));
-	}
-
-	SigC::Connection connect(const SigC::Slot1<bool, P1>& s) {
-		return SigC::Signal2<bool, P1, P2>::connect( SigCX::convert(s, sig_convert_p2));
-	}
-
-	SigC::Connection connect(const SigC::Slot0<bool>& s) {
-		return SigC::Signal2<bool, P1, P2>::connect( SigCX::convert(s, sig_convert0));
-	}
-
-private:
-
-	PG_Signal2& operator=(const PG_Signal2&);
-
-};
-
-#endif // PG_SIGNALS_H
diff --git a/source/libs/paragui/include/pgslider.h b/source/libs/paragui/include/pgslider.h
index 592afed..4851445 100644
--- a/source/libs/paragui/include/pgslider.h
+++ b/source/libs/paragui/include/pgslider.h
@@ -56,12 +56,10 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype>
-class SignalSlide : public PG_Signal2<PG_ScrollBar*, datatype> {}
+class SignalSlide : public sigc::signal<bool, long> {}
 	;
 
-	template<class datatype>
-class SignalSlideEnd : public PG_Signal2<PG_ScrollBar*, datatype> {}
+class SignalSlideEnd : public sigc::signal<bool, long> {}
 	;
 
 	/**
@@ -81,9 +79,9 @@ class SignalSlideEnd : public PG_Signal2<PG_ScrollBar*, datatype> {}
 
 	void LoadThemeStyle(const std::string& widgettype);
 
-	SignalSlide<long> sigSlide;
+	SignalSlide sigSlide;
 
-	SignalSlideEnd<long> sigSlideEnd;
+	SignalSlideEnd sigSlideEnd;
 
 	void RecalcPositions();
 
diff --git a/source/libs/paragui/include/pgspinnerbox.h b/source/libs/paragui/include/pgspinnerbox.h
index 575ae9f..69b8053 100644
--- a/source/libs/paragui/include/pgspinnerbox.h
+++ b/source/libs/paragui/include/pgspinnerbox.h
@@ -64,8 +64,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype>
-class SignalChange : public PG_Signal2<PG_SpinnerBox*, datatype> {}
+class SignalChange : public sigc::signal<bool, PG_SpinnerBox*, int> {}
 	;
 
 	enum {
@@ -103,13 +102,13 @@ class SignalChange : public PG_Signal2<PG_SpinnerBox*, datatype> {}
 		return( m_sMask );
 	}
 
-	SignalChange<int> sigChange;
+	SignalChange sigChange;
 
 protected:
 
 	bool handleButtonClick(PG_Button* button);
 
-	bool handleEditEnd(PG_LineEdit* edit);
+	bool handleEditEnd();
 
 private:
 
diff --git a/source/libs/paragui/include/pgtimerobject.h b/source/libs/paragui/include/pgtimerobject.h
index dcac248..3ff14cd 100644
--- a/source/libs/paragui/include/pgtimerobject.h
+++ b/source/libs/paragui/include/pgtimerobject.h
@@ -34,8 +34,8 @@
 #define PG_TIMEROBJECT_H
 
 #include "paragui.h"
-#include "pgsignals.h"
 #include <map>
+#include <sigc++/sigc++.h>
 
 
 /**
@@ -55,8 +55,7 @@ public:
 	/**
 	Signal type declaration
 	**/
-	template<class datatype = PG_Pointer>
-class SignalTimer : public PG_Signal2<PG_TimerObject*, PG_TimerObject::ID, datatype> {}
+class SignalTimer : public sigc::signal<bool, PG_TimerObject*, PG_TimerObject::ID> {}
 	;
 
 	/**
@@ -102,7 +101,7 @@ class SignalTimer : public PG_Signal2<PG_TimerObject*, PG_TimerObject::ID, datat
 
 	virtual Uint32 eventTimer(Uint32 interval);
 
-	SignalTimer<> sigTimer;
+	SignalTimer sigTimer;
 
 private:
 
diff --git a/source/libs/paragui/include/pgtooltiphelp.h b/source/libs/paragui/include/pgtooltiphelp.h
index 856ea47..5d76ecf 100644
--- a/source/libs/paragui/include/pgtooltiphelp.h
+++ b/source/libs/paragui/include/pgtooltiphelp.h
@@ -56,7 +56,7 @@ class PG_LineEdit;
  
  @ToDo Query the cursor size and position the help so it doesn't overlap with large cursors
 */
-class DECLSPEC PG_ToolTipHelp: public SigC::Object {
+class DECLSPEC PG_ToolTipHelp: public sigc::trackable {
 private:
 
 class Ticker: public PG_TimerObject {
@@ -94,10 +94,10 @@ protected:
 
 	static PG_LineEdit* toolTipLabel;
 
-	bool onParentEnter( PG_Pointer dummy );
-	bool onParentLeave( PG_Pointer dummy );
+	bool onParentEnter( );
+	bool onParentLeave( );
 	bool onParentDelete( const PG_MessageObject* object );
-	bool onMouseMotion( const SDL_MouseMotionEvent *motion );
+	bool onMouseMotion( const PG_MessageObject* object, const SDL_MouseMotionEvent *motion );
 	bool onIdle();
 
 
diff --git a/source/libs/paragui/include/pgwidget.h b/source/libs/paragui/include/pgwidget.h
index acface3..4d6bd54 100644
--- a/source/libs/paragui/include/pgwidget.h
+++ b/source/libs/paragui/include/pgwidget.h
@@ -764,17 +764,15 @@ public:
 
 	void EnableReceiver(bool enable, bool bRecursive = false);
 
-	template<class datatype = PG_Pointer>
-class SignalMouseEnter : public PG_Signal0<datatype> {}
+class SignalMouseEnter : public sigc::signal<bool> {}
 	;
 
-	template<class datatype = PG_Pointer>
-class SignalMouseLeave : public PG_Signal0<datatype> {}
+class SignalMouseLeave : public sigc::signal<bool> {}
 	;
 
-	SignalMouseEnter<> sigMouseEnter;
+	SignalMouseEnter sigMouseEnter;
 
-	SignalMouseLeave<> sigMouseLeave;
+	SignalMouseLeave sigMouseLeave;
 
 	/**
 	  	change the parent of the widget.
@@ -918,6 +916,9 @@ private:
 
 	PG_Widget& operator=(const PG_Widget&);
 
+	bool propagateKeyDown( PG_MessageObject* object, const SDL_KeyboardEvent* event );
+
+
 	static int my_ObjectCounter;
 
 	static PG_RectList widgetList;
diff --git a/source/libs/paragui/include/pgwindow.h b/source/libs/paragui/include/pgwindow.h
index de865bd..0eada21 100644
--- a/source/libs/paragui/include/pgwindow.h
+++ b/source/libs/paragui/include/pgwindow.h
@@ -36,6 +36,7 @@
 #include "pgthemewidget.h"
 #include "pglabel.h"
 #include <string>
+#include <sigc++/sigc++.h>
 
 class PG_Button;
 
@@ -68,9 +69,9 @@ public:
 	/**
 	Signal type declaration
 	**/
-	typedef PG_Signal1<PG_Window*> SignalWindowClose;
-	typedef PG_Signal1<PG_Window*> SignalWindowMinimize;
-	typedef PG_Signal1<PG_Window*> SignalWindowRestore;
+	typedef sigc::signal<bool> SignalWindowClose;
+	typedef sigc::signal<bool> SignalWindowMinimize;
+	typedef sigc::signal<bool> SignalWindowRestore;
 
 	/**
 	Constructor for the PG_Window class
diff --git a/source/libs/paragui/src/Makefile.in b/source/libs/paragui/src/Makefile.in
index 7a303fa..f8e4a60 100644
--- a/source/libs/paragui/src/Makefile.in
+++ b/source/libs/paragui/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -329,6 +329,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/src/core/Makefile.am b/source/libs/paragui/src/core/Makefile.am
index 3f4433e..b022495 100644
--- a/source/libs/paragui/src/core/Makefile.am
+++ b/source/libs/paragui/src/core/Makefile.am
@@ -15,7 +15,6 @@ libpgcore_la_SOURCES = \
 	pgrectlist.cpp \
 	pgsurfacecache.cpp \
 	pgtimerobject.cpp \
-	pgsigconvert.cpp \
 	pgcolor.cpp \
 	pgsdleventsupplier.cpp \
 	pgsdlscreenupdater.cpp 
diff --git a/source/libs/paragui/src/core/Makefile.in b/source/libs/paragui/src/core/Makefile.in
index 5338e2b..6e47420 100644
--- a/source/libs/paragui/src/core/Makefile.in
+++ b/source/libs/paragui/src/core/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -99,9 +99,8 @@ libpgcore_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 am_libpgcore_la_OBJECTS = physfsrwops.lo missing.lo pgdatacontainer.lo \
 	pgapplication.lo pgcolors.lo pgfilearchive.lo pgfile.lo \
 	pglog.lo pgmain.lo pgmessageobject.lo pgnavigator.lo \
-	pgrectlist.lo pgsurfacecache.lo pgtimerobject.lo \
-	pgsigconvert.lo pgcolor.lo pgsdleventsupplier.lo \
-	pgsdlscreenupdater.lo
+	pgrectlist.lo pgsurfacecache.lo pgtimerobject.lo pgcolor.lo \
+	pgsdleventsupplier.lo pgsdlscreenupdater.lo
 libpgcore_la_OBJECTS = $(am_libpgcore_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
 am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
@@ -289,6 +288,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -371,7 +373,6 @@ libpgcore_la_SOURCES = \
 	pgrectlist.cpp \
 	pgsurfacecache.cpp \
 	pgtimerobject.cpp \
-	pgsigconvert.cpp \
 	pgcolor.cpp \
 	pgsdleventsupplier.cpp \
 	pgsdlscreenupdater.cpp 
@@ -458,7 +459,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgrectlist.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgsdleventsupplier.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgsdlscreenupdater.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgsigconvert.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgsurfacecache.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pgtimerobject.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/physfsrwops.Plo at am__quote@
diff --git a/source/libs/paragui/src/core/pgapplication.cpp b/source/libs/paragui/src/core/pgapplication.cpp
index 9350862..92fdcad 100644
--- a/source/libs/paragui/src/core/pgapplication.cpp
+++ b/source/libs/paragui/src/core/pgapplication.cpp
@@ -78,22 +78,33 @@ PG_EventSupplier* PG_Application::my_defaultEventSupplier = NULL;
 bool PG_Application::defaultUpdateOverlappingSiblings = true;
 PG_Char PG_Application::highlightingTag = 0;
 PG_ScreenUpdater* PG_Application::my_ScreenUpdater = NULL;
-
+PG_Application::ScreenInitialization PG_Application::screenInitialized = PG_Application::None;
 
 /**
 	new shutdown procedure (called at application termination
 */
 void PARAGUI_ShutDownCode() {
 
-	// shutdown SDL
-	SDL_Quit();
+    // If screen initialization fails and XError is shutting down the application, we observed that SDL_Quit could hang
+    // so we only do it after the screen has been successfully setup
+    if ( PG_Application::isScreenInitialized() == PG_Application::Finished )
+        SDL_Quit();
+    else if ( PG_Application::isScreenInitialized() == PG_Application::Trying ){
+        std::cerr << "If ASC fails to start up with graphics, try running \"asc -w\" to use windowed mode\n";
+        std::cerr << "You can specify the resolution too: asc -w -x 1024 -y 740 \n";
+    }
+}
+
+PG_Application::ScreenInitialization PG_Application::isScreenInitialized() {
+    return screenInitialized;
 }
 
+
 PG_SDLScreenUpdater defaultScreenUpdater;
 
 
 PG_Application::PG_Application()
-		: my_quitEventLoop(false), emergencyQuit(false), enableAppIdleCalls(false) {
+: my_quitEventLoop(false), emergencyQuit(false), enableAppIdleCalls(false) {
 
 	// set UTF8 encoding if UNICODE support is enabled
 	// we use the "C" locale because it's hard to get the current locale setting
@@ -170,9 +181,13 @@ bool PG_Application::InitScreen(int w, int h, int depth, Uint32 flags) {
 		}
 	}
 
+
+
 	//if(SDL_VideoModeOK(w, h, depth, flags) == 0)
 	//	return false;
 
+    screenInitialized = Trying;
+
 	/* Initialize the display */
 	PG_Application::screen = SDL_SetVideoMode(w, h, depth, flags);
 	if (PG_Application::screen == NULL) {
@@ -186,6 +201,8 @@ bool PG_Application::InitScreen(int w, int h, int depth, Uint32 flags) {
 
 	SetScreen(screen);
 
+	screenInitialized = Finished;
+
 	eventInit();
 
 	PG_LogConsole::SetMethod( PG_LogConsole::GetMethod() |PG_LOGMTH_CONSOLE);
@@ -1047,7 +1064,7 @@ void PG_Application::FlushEventQueue() {
 }
 
 void PG_Application::eventIdle() {
-	sigAppIdle(this);
+	sigAppIdle( this );
 	SDL_Delay(1);
 }
 
diff --git a/source/libs/paragui/src/core/pgsigconvert.cpp b/source/libs/paragui/src/core/pgsigconvert.cpp
deleted file mode 100644
index 675beb1..0000000
--- a/source/libs/paragui/src/core/pgsigconvert.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// -*- c++ -*-
-/*
-  Copyright 2000, Karl Einar Nelson
- 
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
- 
-  This library 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
-  Lesser General Public License for more details.
- 
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
-*/
-#include "pgsigconvert.h"
-
-#ifdef SIGC_CXX_NAMESPACES
-namespace SigCX {
-#endif
-
-AdaptorConvertSlotNode::~AdaptorConvertSlotNode() {}
-
-AdaptorConvertSlotNode::AdaptorConvertSlotNode(SigC::FuncPtr proxy,
-        const SigC::Node& s,
-        SigC::FuncPtr convert_func)
-		: AdaptorSlotNode(proxy,s), convert_func_(convert_func) {}
-
-#ifdef SIGC_CXX_NAMESPACES
-}
-#endif
-
-
-
diff --git a/source/libs/paragui/src/draw/Makefile.in b/source/libs/paragui/src/draw/Makefile.in
index 98239d9..6cada93 100644
--- a/source/libs/paragui/src/draw/Makefile.in
+++ b/source/libs/paragui/src/draw/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -284,6 +284,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/src/font/Makefile.in b/source/libs/paragui/src/font/Makefile.in
index 3d89da4..38f7083 100644
--- a/source/libs/paragui/src/font/Makefile.in
+++ b/source/libs/paragui/src/font/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/src/themes/Makefile.in b/source/libs/paragui/src/themes/Makefile.in
index bdaf6d6..4cee7a6 100644
--- a/source/libs/paragui/src/themes/Makefile.in
+++ b/source/libs/paragui/src/themes/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/src/themes/themeloader.cpp b/source/libs/paragui/src/themes/themeloader.cpp
index f58017c..eba04ce 100644
--- a/source/libs/paragui/src/themes/themeloader.cpp
+++ b/source/libs/paragui/src/themes/themeloader.cpp
@@ -480,7 +480,7 @@ PG_Theme* PG_Theme::Load(const std::string& xmltheme) {
 	delete file;
 	delete[] buff;
 
-	PG_LogMSG("theme '%s' loaded sucessfully", filename.c_str());
+	PG_LogMSG("theme '%s' loaded successfully", filename.c_str());
 
 	return info.theme;
 }
diff --git a/source/libs/paragui/src/widgets/Makefile.in b/source/libs/paragui/src/widgets/Makefile.in
index 66069c4..deff380 100644
--- a/source/libs/paragui/src/widgets/Makefile.in
+++ b/source/libs/paragui/src/widgets/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -310,6 +310,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/paragui/src/widgets/pgbutton.cpp b/source/libs/paragui/src/widgets/pgbutton.cpp
index bf829c0..d5d2635 100644
--- a/source/libs/paragui/src/widgets/pgbutton.cpp
+++ b/source/libs/paragui/src/widgets/pgbutton.cpp
@@ -35,7 +35,7 @@
 
 #include "propstrings_priv.h"
 
-PG_Button::SignalButtonClick<> PG_Button::sigGlobalClick;
+PG_Button::SignalButtonClick PG_Button::sigGlobalClick;
 
 class PG_ButtonStateData {
 public:
diff --git a/source/libs/paragui/src/widgets/pgcolorselector.cpp b/source/libs/paragui/src/widgets/pgcolorselector.cpp
index ee8c569..200ea5f 100644
--- a/source/libs/paragui/src/widgets/pgcolorselector.cpp
+++ b/source/libs/paragui/src/widgets/pgcolorselector.cpp
@@ -135,7 +135,7 @@ PG_ColorSelector::PG_ColorSelector(PG_Widget* parent, const PG_Rect&r, const std
 
 	my_colorslider->SetBackground((SDL_Surface*)NULL);
 	my_colorslider->SetSimpleBackground(false);
-	my_colorslider->sigSlide.connect(slot(*this, &PG_ColorSelector::handle_colorslide));
+	my_colorslider->sigSlide.connect(sigc::mem_fun(*this, &PG_ColorSelector::handle_colorslide));
 	
 	my_colorresult = new PG_ThemeWidget(this, PG_Rect(r.h+20,r.h/2,r.w - ((r.h+20)+5), r.h - (5+r.h/2)));
 	my_colorresult->SetSimpleBackground(true);
diff --git a/source/libs/paragui/src/widgets/pgdropdown.cpp b/source/libs/paragui/src/widgets/pgdropdown.cpp
index b937ee7..6037f83 100644
--- a/source/libs/paragui/src/widgets/pgdropdown.cpp
+++ b/source/libs/paragui/src/widgets/pgdropdown.cpp
@@ -27,6 +27,7 @@
 */
 
 #include <algorithm>
+#include <sigc++/sigc++.h>
 
 #include "pgdropdown.h"
 #include "pglog.h"
@@ -42,14 +43,14 @@ my_EditBox(NULL), my_DropButton(NULL), my_DropList(NULL) {
 	SetID(id);
 
 	my_EditBox = new PG_LineEdit(this, rect, style);
-	my_EditBox->sigEditBegin.connect(sigEditBegin.slot());
-	my_EditBox->sigEditEnd.connect(sigEditEnd.slot());
-	my_EditBox->sigEditReturn.connect(sigEditReturn.slot());
+	my_EditBox->sigEditBegin.connect( sigEditBegin.make_slot() );
+	my_EditBox->sigEditEnd.connect( sigEditEnd.make_slot() );
+	my_EditBox->sigEditReturn.connect( sigEditReturn.make_slot() );
 
 	PG_Rect rbutton(abs(r.my_width - r.my_height), 0, r.my_height, r.my_height);
 	my_DropButton = new PG_Button(this, rbutton, PG_NULLSTR, -1, style);
 	my_DropButton->SetID(IDDROPDOWN_BOX);
-	my_DropButton->sigClick.connect(slot(*this, &PG_DropDown::handleButtonClick));
+	my_DropButton->sigClick.connect( sigc::mem_fun(*this, &PG_DropDown::handleButtonClick));
 
 	PG_Rect rlist(r.my_xpos, r.my_ypos + r.my_height +1, r.my_width, r.my_height /* * 5 */);
 	my_DropList = new PG_ListBox(NULL, rlist, style);
@@ -57,8 +58,8 @@ my_EditBox(NULL), my_DropButton(NULL), my_DropList(NULL) {
 	my_DropList->SetShiftOnRemove(false, true);
 
 	//my_DropList->EnableScrollBar(false);
-	my_DropList->sigSelectItem.connect(slot(*this, &PG_DropDown::select_handler));
-	my_DropList->sigDelete.connect(slot(*this, &PG_DropDown::onDropListDeletion));
+	my_DropList->sigSelectItem.connect( sigc::mem_fun(*this, &PG_DropDown::select_handler));
+	my_DropList->sigDelete.connect(sigc::mem_fun(*this, &PG_DropDown::onDropListDeletion));
 
 	LoadThemeStyle(style);
 }
diff --git a/source/libs/paragui/src/widgets/pglineedit.cpp b/source/libs/paragui/src/widgets/pglineedit.cpp
index 3d243be..465c528 100644
--- a/source/libs/paragui/src/widgets/pglineedit.cpp
+++ b/source/libs/paragui/src/widgets/pglineedit.cpp
@@ -53,7 +53,7 @@ PG_LineEdit::PG_LineEdit(PG_Widget* parent, const PG_Rect& r, const std::string&
 	LoadThemeStyle(style);
 
    if ( cursorBlinkingTime > 0 )
-      PG_Application::GetApp()->sigAppIdle.connect( SigC::slot( *this, &PG_LineEdit::IdleBlinker ));
+      PG_Application::GetApp()->sigAppIdle.connect( sigc::hide( sigc::mem_fun( *this, &PG_LineEdit::IdleBlinker )));
 }
 
 PG_LineEdit::~PG_LineEdit() {}
@@ -171,7 +171,7 @@ void PG_LineEdit::EditBegin() {
 	my_isCursorVisible = true;
 	Update();
 
-	sigEditBegin(this);
+	sigEditBegin();
 	eventEditBegin(GetID(), this, 0,0);
 }
 
@@ -182,7 +182,7 @@ void PG_LineEdit::EditEnd() {
 	Update();
 	ReleaseInputFocus();
 
-	sigEditEnd(this);
+	sigEditEnd();
 	eventEditEnd(GetID(), this, 0,0);
 }
 
@@ -303,7 +303,7 @@ bool PG_LineEdit::eventKeyDown(const SDL_KeyboardEvent* key) {
 				return false;
 			}
 			EditEnd();
-			sigEditReturn(this);
+			sigEditReturn();
 			return true;
 
 		case SDLK_HOME:
@@ -431,14 +431,14 @@ void PG_LineEdit::InsertChar(const PG_Char& c) {
 		#endif*/
 		my_text.insert(my_cursorPosition, 1, c);
 		SetCursorPos(++my_cursorPosition);
-      sigEditUpdate(this);
+        sigEditUpdate();
 	}
 }
 
 /** */
 void PG_LineEdit::DeleteChar(Uint16 pos) {
 	my_text.erase(pos, 1);
-   sigEditUpdate(this);
+    sigEditUpdate();
 }
 
 /** */
diff --git a/source/libs/paragui/src/widgets/pgmenubar.cpp b/source/libs/paragui/src/widgets/pgmenubar.cpp
index 155d70f..ba91048 100644
--- a/source/libs/paragui/src/widgets/pgmenubar.cpp
+++ b/source/libs/paragui/src/widgets/pgmenubar.cpp
@@ -50,19 +50,19 @@ void PG_MenuBar::Add(const std::string& text, PG_PopupMenu* menu, Uint16 indent,
 	last->button->SetBehaviour( PG_Button::SIGNALONCLICK );
 	last->button->SetFontSize(GetFontSize());
 
-	last->button->sigClick.connect(slot(*this, &PG_MenuBar::handle_button), (PG_Pointer)last);
-	last->button->sigMouseLeave.connect(slot(*this, &PG_MenuBar::leaveButton), (PG_Pointer)last );
-	last->button->sigMouseEnter.connect(slot(*this, &PG_MenuBar::enterButton), (PG_Pointer)last );
-   last->button->activateHotkey( getHotkeyModifier() );
+	last->button->sigClick.connect(sigc::bind( sigc::mem_fun(*this, &PG_MenuBar::handle_button), (PG_Pointer)last));
+	last->button->sigMouseLeave.connect(sigc::bind(sigc::mem_fun(*this, &PG_MenuBar::leaveButton), (PG_Pointer)last ));
+	last->button->sigMouseEnter.connect(sigc::bind(sigc::mem_fun(*this, &PG_MenuBar::enterButton), (PG_Pointer)last ));
+    last->button->activateHotkey( getHotkeyModifier() );
 
 	last->popupmenu = menu;
 
 	ItemList.push_back(last);
 
-   menu->sigSelectMenuItem.connect( SigC::slot( *this, &PG_MenuBar::deactivateItem ));
+   menu->sigSelectMenuItem.connect( sigc::mem_fun( *this, &PG_MenuBar::deactivateItem ));
 }
 
-bool PG_MenuBar::deactivateItem()
+bool PG_MenuBar::deactivateItem(PG_PopupMenu::MenuItem* item)
 {
    my_active->Hide();
    my_active = NULL;
diff --git a/source/libs/paragui/src/widgets/pgmessagebox.cpp b/source/libs/paragui/src/widgets/pgmessagebox.cpp
index 7bfe613..efa0dba 100644
--- a/source/libs/paragui/src/widgets/pgmessagebox.cpp
+++ b/source/libs/paragui/src/widgets/pgmessagebox.cpp
@@ -37,11 +37,11 @@ PG_Window(parent, r, windowtitle, MODAL) {
 
 	my_btnok = new PG_Button(this, btn1, btn1text);
 	my_btnok->SetID(1);
-	my_btnok->sigClick.connect(slot(*this, &PG_MessageBox::handleButton));
+	my_btnok->sigClick.connect( sigc::mem_fun(*this, &PG_MessageBox::handleButton));
 
 	my_btncancel = new PG_Button(this, btn2, btn2text);
 	my_btncancel->SetID(2);
-	my_btncancel->sigClick.connect(slot(*this, &PG_MessageBox::handleButton));
+	my_btncancel->sigClick.connect(sigc::mem_fun(*this, &PG_MessageBox::handleButton));
 
 	Init(windowtext, textalign, style);
 }
@@ -51,7 +51,7 @@ PG_Window(parent, r, windowtitle, MODAL) {
 
 	my_btnok = new PG_Button(this, btn1, btn1text);
 	my_btnok->SetID(1);
-	my_btnok->sigClick.connect(slot(*this, &PG_MessageBox::handleButton));
+	my_btnok->sigClick.connect(sigc::mem_fun(*this, &PG_MessageBox::handleButton));
 	my_btncancel = NULL;
 
 	Init(windowtext, textalign, style);
diff --git a/source/libs/paragui/src/widgets/pgmultilineedit.cpp b/source/libs/paragui/src/widgets/pgmultilineedit.cpp
index 0853edc..d51d077 100644
--- a/source/libs/paragui/src/widgets/pgmultilineedit.cpp
+++ b/source/libs/paragui/src/widgets/pgmultilineedit.cpp
@@ -11,13 +11,13 @@ PG_MultiLineEdit::PG_MultiLineEdit(PG_Widget* parent, const PG_Rect& r, const st
 	my_isCursorAtEOL = false;
 	my_allowHiddenCursor = false;
 	my_firstLine = 0;
-	my_vscroll->sigScrollPos.connect(slot(*this, &PG_MultiLineEdit::handleScroll));
-	my_vscroll->sigScrollTrack.connect(slot(*this, &PG_MultiLineEdit::handleScroll));
+	my_vscroll->sigScrollPos.connect(sigc::mem_fun(*this, &PG_MultiLineEdit::handleScroll));
+	my_vscroll->sigScrollTrack.connect(sigc::mem_fun(*this, &PG_MultiLineEdit::handleScroll));
 	my_vscroll->Hide();
 	my_mark = -1;
 }
 
-bool PG_MultiLineEdit::handleScroll(PG_ScrollBar* widget, long data) {
+bool PG_MultiLineEdit::handleScroll(long data) {
 	SetVPosition(my_vscroll->GetPosition());
 	my_allowHiddenCursor = true;
 	return true;
diff --git a/source/libs/paragui/src/widgets/pgpopupmenu.cpp b/source/libs/paragui/src/widgets/pgpopupmenu.cpp
index cb7c0ee..095a4d4 100644
--- a/source/libs/paragui/src/widgets/pgpopupmenu.cpp
+++ b/source/libs/paragui/src/widgets/pgpopupmenu.cpp
@@ -300,7 +300,7 @@ PG_PopupMenu& PG_PopupMenu::addMenuItem(const std::string& caption,
 
 	MenuItem* item = new MenuItem(this, caption, ID, flags);
 	appendItem(item);
-	item->sigSelectMenuItem.connect(handler, data);
+	item->sigSelectMenuItem.connect(sigc::bind( handler, data));
 
 	return *this;
 }
@@ -906,7 +906,7 @@ bool PG_PopupMenu::SetMenuItemSlot(int id, MenuItem::MenuItemSlot slot, PG_Point
 
 		if(id==itid) {
 			item=*it;
-			item->sigSelectMenuItem.connect(slot, clientdata);
+			item->sigSelectMenuItem.connect( sigc::bind( slot, clientdata));
 			return true;
 		}
 		it++;
diff --git a/source/libs/paragui/src/widgets/pgradiobutton.cpp b/source/libs/paragui/src/widgets/pgradiobutton.cpp
index 8b85d8b..5bef0c4 100644
--- a/source/libs/paragui/src/widgets/pgradiobutton.cpp
+++ b/source/libs/paragui/src/widgets/pgradiobutton.cpp
@@ -55,7 +55,7 @@ PG_RadioButton::PG_RadioButton(PG_Widget* parent, const PG_Rect& r, const std::s
 	my_widgetButton = new PG_Button(this, rectButton);
 	my_widgetButton->SetToggle(true);
 	my_widgetButton->EnableReceiver(false);
-	my_widgetButton->sigClick.connect(slot(*this, &PG_RadioButton::handleButtonClick));
+	my_widgetButton->sigClick.connect( sigc::mem_fun(*this, &PG_RadioButton::handleButtonClick));
 
 	rectLabel.SetRect(rectButton.my_width, 0, r.my_width - rectButton.my_width, r.my_height);
 	my_widgetLabel = new PG_Label(this, rectLabel, text, style);
diff --git a/source/libs/paragui/src/widgets/pgrichedit.cpp b/source/libs/paragui/src/widgets/pgrichedit.cpp
index aa162f1..56465ff 100644
--- a/source/libs/paragui/src/widgets/pgrichedit.cpp
+++ b/source/libs/paragui/src/widgets/pgrichedit.cpp
@@ -53,10 +53,10 @@ PG_ScrollWidget(parent, r, style) {
 	my_AutoVerticalResize = autoResize;
 	my_AutoHorizontalResize = autoResize;
 
-	my_objVerticalScrollbar->sigScrollTrack.connect(slot(*this, &PG_RichEdit::handleScrollTrack));
-	my_objVerticalScrollbar->sigScrollPos.connect(slot(*this, &PG_RichEdit::handleScrollTrack));
-	my_objHorizontalScrollbar->sigScrollTrack.connect(slot(*this, &PG_RichEdit::handleScrollTrack));
-	my_objHorizontalScrollbar->sigScrollPos.connect(slot(*this, &PG_RichEdit::handleScrollTrack));
+	my_objVerticalScrollbar->sigScrollTrack.connect(sigc::mem_fun(*this, &PG_RichEdit::handleScrollTrack));
+	my_objVerticalScrollbar->sigScrollPos.connect(sigc::mem_fun(*this, &PG_RichEdit::handleScrollTrack));
+	my_objHorizontalScrollbar->sigScrollTrack.connect(sigc::mem_fun(*this, &PG_RichEdit::handleScrollTrack));
+	my_objHorizontalScrollbar->sigScrollPos.connect(sigc::mem_fun(*this, &PG_RichEdit::handleScrollTrack));
 }
 
 void PG_RichEdit::SetAlignment(Uint8 align) {
@@ -671,7 +671,7 @@ void PG_RichEdit::SetTabSize(Uint16 tabSize) {
 	my_TabSize = tabSize;
 }
 
-bool PG_RichEdit::handleScrollTrack() {
+bool PG_RichEdit::handleScrollTrack(long pos) {
 	my_scrollarea->Update();
 	return true;
 }
diff --git a/source/libs/paragui/src/widgets/pgscrollbar.cpp b/source/libs/paragui/src/widgets/pgscrollbar.cpp
index ea4f50f..d5725ee 100644
--- a/source/libs/paragui/src/widgets/pgscrollbar.cpp
+++ b/source/libs/paragui/src/widgets/pgscrollbar.cpp
@@ -48,15 +48,15 @@ PG_ScrollBar::PG_ScrollBar(PG_Widget* parent, const PG_Rect& r, ScrollDirection
 
 	scrollbutton[0] = new PG_Button(this);
 	scrollbutton[0]->SetID((direction == VERTICAL) ? IDSCROLLBAR_UP : IDSCROLLBAR_LEFT);
-	scrollbutton[0]->sigClick.connect(slot(*this, &PG_ScrollBar::handleButtonClick));
+	scrollbutton[0]->sigClick.connect(sigc::mem_fun(*this, &PG_ScrollBar::handleButtonClick));
 
 	scrollbutton[1] = new PG_Button(this);
 	scrollbutton[1]->SetID((direction == VERTICAL) ? IDSCROLLBAR_DOWN : IDSCROLLBAR_RIGHT);
-	scrollbutton[1]->sigClick.connect(slot(*this, &PG_ScrollBar::handleButtonClick));
+	scrollbutton[1]->sigClick.connect(sigc::mem_fun(*this, &PG_ScrollBar::handleButtonClick));
 
 	dragbutton = new ScrollButton(this);
 	dragbutton->SetID(IDSCROLLBAR_DRAG);
-	dragbutton->sigClick.connect(slot(*this, &PG_ScrollBar::handleButtonClick));
+	dragbutton->sigClick.connect(sigc::mem_fun(*this, &PG_ScrollBar::handleButtonClick));
 
 	if(style != PG_PropStr::Scrollbar) {
 		LoadThemeStyle(PG_PropStr::Scrollbar);
@@ -241,7 +241,7 @@ bool PG_ScrollBar::eventMouseButtonUp(const SDL_MouseButtonEvent* button) {
 				}
 			}
 
-			sigScrollPos(this, scroll_current);
+			sigScrollPos(scroll_current);
 			return true;
 
 		case 4:
@@ -250,12 +250,12 @@ bool PG_ScrollBar::eventMouseButtonUp(const SDL_MouseButtonEvent* button) {
 			} else {
 				SetPosition(scroll_current - my_linesize);
 			}
-			sigScrollPos(this, scroll_current);
+			sigScrollPos(scroll_current);
 			return true;
 
 		case 5:
 			SetPosition(scroll_current + my_linesize);
-			sigScrollPos(this, scroll_current);
+			sigScrollPos(scroll_current);
 			return true;
 	}
 
@@ -321,7 +321,7 @@ bool PG_ScrollBar::ScrollButton::eventMouseMotion(const SDL_MouseMotionEvent* mo
 		int pos = GetPosFromPoint(p);
 		if(GetParent()->scroll_current != pos || my_tickMode) {
 			GetParent()->scroll_current = pos;
-			GetParent()->sigScrollTrack(GetParent(), pos);
+			GetParent()->sigScrollTrack(pos);
 		}
 
 	}
@@ -380,7 +380,7 @@ bool PG_ScrollBar::handleButtonClick(PG_Button* button) {
 			return false;
 		}
 		SetPosition(scroll_current - my_linesize);
-		sigScrollPos(this, scroll_current);
+		sigScrollPos(scroll_current);
 		return true;
 	}
 
@@ -389,7 +389,7 @@ bool PG_ScrollBar::handleButtonClick(PG_Button* button) {
 			return false;
 		}
 		SetPosition(scroll_current + my_linesize);
-		sigScrollPos(this, scroll_current);
+		sigScrollPos(scroll_current);
 		return true;
 
 	}
@@ -413,7 +413,7 @@ bool PG_ScrollBar::ScrollButton::eventMouseButtonUp(const SDL_MouseButtonEvent*
 	PG_Button::eventMouseButtonUp(button);
 
 	//GetParent()->SetPosition(pos);
-	GetParent()->sigScrollPos(GetParent(), pos);
+	GetParent()->sigScrollPos(pos);
 
 	return true;
 }
diff --git a/source/libs/paragui/src/widgets/pgscrollwidget.cpp b/source/libs/paragui/src/widgets/pgscrollwidget.cpp
index a8f5d19..736d6d2 100644
--- a/source/libs/paragui/src/widgets/pgscrollwidget.cpp
+++ b/source/libs/paragui/src/widgets/pgscrollwidget.cpp
@@ -55,22 +55,22 @@ PG_ScrollWidget::PG_ScrollWidget(PG_Widget* parent, const PG_Rect& r, const std:
 	my_objVerticalScrollbar->SetRange(0,0);
 	my_widthScrollbar = my_objVerticalScrollbar->Width();
 	my_objVerticalScrollbar->Hide();
-	my_objVerticalScrollbar->sigScrollPos.connect(slot(*this, &PG_ScrollWidget::handleScrollPos));
-	my_objVerticalScrollbar->sigScrollTrack.connect(slot(*this, &PG_ScrollWidget::handleScrollTrack));
+	my_objVerticalScrollbar->sigScrollPos.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleScrollPos_vert));
+	my_objVerticalScrollbar->sigScrollTrack.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleScrollTrack_vert));
 
 	my_objHorizontalScrollbar = new PG_ScrollBar(this, PG_Rect(0,0,r.w, my_heightHorizontalScrollbar), PG_ScrollBar::HORIZONTAL, IDWIDGETLIST_HSCROLL, style);
 	my_objHorizontalScrollbar->SetRange(0,0);
 	my_heightHorizontalScrollbar = my_objHorizontalScrollbar->Height();
 	my_objHorizontalScrollbar->Hide();
-	my_objHorizontalScrollbar->sigScrollPos.connect(slot(*this, &PG_ScrollWidget::handleScrollPos));
-	my_objHorizontalScrollbar->sigScrollTrack.connect(slot(*this, &PG_ScrollWidget::handleScrollTrack));
+	my_objHorizontalScrollbar->sigScrollPos.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleScrollPos_horiz));
+	my_objHorizontalScrollbar->sigScrollTrack.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleScrollTrack_horiz));
 
 	my_scrollarea = new PG_ScrollArea(this);
 	RecalcPositions(false,false);
-	my_scrollarea->sigAreaChangedHeight.connect(slot(*this, &PG_ScrollWidget::handleAreaChangedHeight));
-	my_scrollarea->sigAreaChangedHeight.connect(sigAreaChangedHeight.slot());
-	my_scrollarea->sigAreaChangedWidth.connect(slot(*this, &PG_ScrollWidget::handleAreaChangedWidth));
-	my_scrollarea->sigAreaChangedWidth.connect(sigAreaChangedWidth.slot());
+	my_scrollarea->sigAreaChangedHeight.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleAreaChangedHeight));
+	my_scrollarea->sigAreaChangedHeight.connect(sigAreaChangedHeight.make_slot());
+	my_scrollarea->sigAreaChangedWidth.connect(sigc::mem_fun(*this, &PG_ScrollWidget::handleAreaChangedWidth));
+	my_scrollarea->sigAreaChangedWidth.connect(sigAreaChangedWidth.make_slot());
 	my_scrollarea->SetShiftOnRemove(false, false);
 }
 
@@ -241,31 +241,22 @@ bool PG_ScrollWidget::eventMouseButtonDown(const SDL_MouseButtonEvent* button)
 }
 
 
-bool PG_ScrollWidget::handleScrollPos(PG_ScrollBar* widget, long data) {
-	if(widget == my_objVerticalScrollbar) {
-		my_scrollarea->ScrollTo(my_scrollarea->GetScrollPosX(), data);
-		return true;
-	}
-
-	if(widget == my_objHorizontalScrollbar) {
-		my_scrollarea->ScrollTo(data, my_scrollarea->GetScrollPosY());
-		return true;
-	}
-
+bool PG_ScrollWidget::handleScrollPos_vert(long data) {
+	my_scrollarea->ScrollTo(my_scrollarea->GetScrollPosX(), data);
 	return true;
 }
 
-bool PG_ScrollWidget::handleScrollTrack(PG_ScrollBar* widget, long data) {
-	if(widget == my_objVerticalScrollbar) {
-		my_scrollarea->ScrollTo(my_scrollarea->GetScrollPosX(), data);
-		return true;
-	}
-
-	if(widget == my_objHorizontalScrollbar) {
-		my_scrollarea->ScrollTo(data, my_scrollarea->GetScrollPosY());
-		return true;
-	}
+bool PG_ScrollWidget::handleScrollPos_horiz(long data) {
+	my_scrollarea->ScrollTo(data, my_scrollarea->GetScrollPosY());
+	return true;
+}
 
+bool PG_ScrollWidget::handleScrollTrack_vert(long data) {
+	my_scrollarea->ScrollTo(my_scrollarea->GetScrollPosX(), data);
+	return true;
+}
+bool PG_ScrollWidget::handleScrollTrack_horiz(long data) {
+	my_scrollarea->ScrollTo(data, my_scrollarea->GetScrollPosY());
 	return true;
 }
 
diff --git a/source/libs/paragui/src/widgets/pgslider.cpp b/source/libs/paragui/src/widgets/pgslider.cpp
index 45d7832..56a0a28 100644
--- a/source/libs/paragui/src/widgets/pgslider.cpp
+++ b/source/libs/paragui/src/widgets/pgslider.cpp
@@ -38,8 +38,8 @@ PG_Slider::PG_Slider(PG_Widget* parent, const PG_Rect& r, ScrollDirection direct
 	scrollbutton[1] = NULL;
 
 	// connect signals
-	sigScrollPos.connect(sigSlideEnd.slot());
-	sigScrollTrack.connect(sigSlide.slot());
+	sigScrollPos.connect(sigSlideEnd.make_slot());
+	sigScrollTrack.connect(sigSlide.make_slot());
 
 	LoadThemeStyle(style);
 	SetPosition(scroll_min);
@@ -162,7 +162,7 @@ bool PG_Slider::eventMouseButtonUp(const SDL_MouseButtonEvent* button) {
 			break;
 	}
 
-	sigSlideEnd(this, scroll_current);
+	sigSlideEnd(scroll_current);
 
 	return true;
 }
diff --git a/source/libs/paragui/src/widgets/pgspinnerbox.cpp b/source/libs/paragui/src/widgets/pgspinnerbox.cpp
index f754fe5..04415cc 100644
--- a/source/libs/paragui/src/widgets/pgspinnerbox.cpp
+++ b/source/libs/paragui/src/widgets/pgspinnerbox.cpp
@@ -51,16 +51,16 @@ PG_SpinnerBox::PG_SpinnerBox(PG_Widget *parent, const PG_Rect& r, const std::str
 	down_rect.SetRect( box_rect.my_width, my_height - (my_height/2), (my_height/2), (my_height/2));
 
 	m_pEditBox = new PG_MaskEdit(this, box_rect, style);
-	m_pEditBox->sigEditEnd.connect(slot(*this, &PG_SpinnerBox::handleEditEnd));
+	m_pEditBox->sigEditEnd.connect(sigc::mem_fun(*this, &PG_SpinnerBox::handleEditEnd));
 
 	m_pButtonUp = new PG_Button(this, up_rect);
 	m_pButtonUp->SetID(IDSPINNERBOX_UP);
-	m_pButtonUp->sigClick.connect(slot(*this, &PG_SpinnerBox::handleButtonClick));
+	m_pButtonUp->sigClick.connect(sigc::mem_fun(*this, &PG_SpinnerBox::handleButtonClick));
 	m_pButtonUp->LoadThemeStyle(style, "ButtonUp");
 
 	m_pButtonDown = new PG_Button( this, down_rect);
 	m_pButtonDown->SetID(IDSPINNERBOX_DOWN);
-	m_pButtonDown->sigClick.connect(slot(*this, &PG_SpinnerBox::handleButtonClick));
+	m_pButtonDown->sigClick.connect(sigc::mem_fun(*this, &PG_SpinnerBox::handleButtonClick));
 	m_pButtonDown->LoadThemeStyle(style, "ButtonDown");
 
 	m_iMinValue = 0;
@@ -118,7 +118,7 @@ void PG_SpinnerBox::AdjustSize() {
 	Show();
 }
 
-bool PG_SpinnerBox::handleEditEnd(PG_LineEdit* edit) {
+bool PG_SpinnerBox::handleEditEnd() {
 	const std::string& text = m_pEditBox->GetText();
 	m_iValue = (!text.empty()) ? atoi(text.c_str()) : 0;
 
diff --git a/source/libs/paragui/src/widgets/pgtooltiphelp.cpp b/source/libs/paragui/src/widgets/pgtooltiphelp.cpp
index eeffe53..05e41ff 100644
--- a/source/libs/paragui/src/widgets/pgtooltiphelp.cpp
+++ b/source/libs/paragui/src/widgets/pgtooltiphelp.cpp
@@ -48,13 +48,13 @@ PG_ToolTipHelp :: PG_ToolTipHelp( PG_Widget* parent, const std::string& text, in
 
         tooltips[parent] = this;
         
-	parent->sigMouseEnter.connect( SigC::slot( *this, &PG_ToolTipHelp::onParentEnter ), parent );
-	parent->sigMouseLeave.connect( SigC::slot( *this, &PG_ToolTipHelp::onParentLeave ), parent );
-	parent->sigMouseMotion.connect( SigC::slot( *this, &PG_ToolTipHelp::onMouseMotion ));
-	PG_Application::GetApp()->sigAppIdle.connect( SigC::slot( *this, &PG_ToolTipHelp::onIdle ));
+	parent->sigMouseEnter.connect( sigc::mem_fun( *this, &PG_ToolTipHelp::onParentEnter ) );
+	parent->sigMouseLeave.connect( sigc::mem_fun( *this, &PG_ToolTipHelp::onParentLeave ) );
+	parent->sigMouseMotion.connect( sigc::mem_fun( *this, &PG_ToolTipHelp::onMouseMotion ));
+	PG_Application::GetApp()->sigAppIdle.connect( sigc::hide( sigc::mem_fun( *this, &PG_ToolTipHelp::onIdle )));
 	PG_Application::GetApp()->EnableAppIdleCalls();
 
-	parent->sigDelete.connect( SigC::slot( *this, &PG_ToolTipHelp::onParentDelete ));
+	parent->sigDelete.connect( sigc::mem_fun( *this, &PG_ToolTipHelp::onParentDelete ));
 
 	SetText( text );
 }
@@ -64,7 +64,7 @@ void PG_ToolTipHelp :: SetText( const std::string& text ) {
 	my_text = text;
 }
 
-bool PG_ToolTipHelp :: onIdle(  ) {
+bool PG_ToolTipHelp :: onIdle() {
 	if ( !ticker )
 		return false;
 
@@ -89,7 +89,7 @@ bool PG_ToolTipHelp :: onIdle(  ) {
 }
 
 
-bool PG_ToolTipHelp :: onParentEnter( void* dummy ) {
+bool PG_ToolTipHelp :: onParentEnter( ) {
 	if ( !ticker )
 		ticker = new Ticker(100);
 
@@ -99,7 +99,7 @@ bool PG_ToolTipHelp :: onParentEnter( void* dummy ) {
 	return true;
 }
 
-bool PG_ToolTipHelp :: onParentLeave( void* dummy ) {
+bool PG_ToolTipHelp :: onParentLeave( ) {
 	// if the ToolTipLabel is beneath the mouse cursor, we'll receive a onParentLeave notification that we'll ignore
 	if ( toolTipLabel && toolTipLabel->IsMouseInside() )
 		return false;
@@ -118,7 +118,7 @@ bool PG_ToolTipHelp :: onParentDelete( const PG_MessageObject* object ) {
 	return true;
 }
 
-bool PG_ToolTipHelp :: onMouseMotion( const SDL_MouseMotionEvent *motion ) {
+bool PG_ToolTipHelp :: onMouseMotion( const PG_MessageObject* object, const SDL_MouseMotionEvent *motion ) {
 	if ( ticker )
 		lastTick = ticker->getTicker();
 
@@ -159,7 +159,7 @@ void PG_ToolTipHelp :: ShowHelp( const PG_Point& pos ) {
 
 	toolTipLabel->MoveWidget( r, false );
 	toolTipLabel->Show();
-	toolTipLabel->sigMouseMotion.connect( SigC::slot( *this, &PG_ToolTipHelp::onMouseMotion ));
+	toolTipLabel->sigMouseMotion.connect( sigc::mem_fun( *this, &PG_ToolTipHelp::onMouseMotion ));
 }
 
 void PG_ToolTipHelp :: HideHelp( ) {
diff --git a/source/libs/paragui/src/widgets/pgwidget.cpp b/source/libs/paragui/src/widgets/pgwidget.cpp
index e87230d..0e257d0 100644
--- a/source/libs/paragui/src/widgets/pgwidget.cpp
+++ b/source/libs/paragui/src/widgets/pgwidget.cpp
@@ -1938,7 +1938,11 @@ void PG_Widget::activateHotkey( int keymodifier )
    // I don't like the way keypresses are NOT propagated to child in non-modal operation mode,
    // but changing that would be a major change to Paraguis event handling
    // So as a workaround we just register at the global signal 
-   PG_Application::GetApp()->sigKeyDown.connect( SigC::slot( *this, &PG_Widget::eventKeyDown ));
+   PG_Application::GetApp()->sigKeyDown.connect(  sigc::mem_fun( *this, &PG_Widget::propagateKeyDown ));
+}
+
+bool PG_Widget::propagateKeyDown( PG_MessageObject* object, const SDL_KeyboardEvent* event ) {
+	return eventKeyDown( event );
 }
 
 int PG_Widget::getHotkeyModifier()
diff --git a/source/libs/paragui/src/widgets/pgwindow.cpp b/source/libs/paragui/src/widgets/pgwindow.cpp
index 34c2ac0..235c4cf 100644
--- a/source/libs/paragui/src/widgets/pgwindow.cpp
+++ b/source/libs/paragui/src/widgets/pgwindow.cpp
@@ -47,11 +47,11 @@ my_showCloseButton((flags & PG_Window::SHOW_CLOSE) != 0), my_showMinimizeButton(
 
 	my_buttonClose = new PG_Button(my_titlebar);
 	my_buttonClose->SetID(IDWINDOW_CLOSE);
-	my_buttonClose->sigClick.connect(slot(*this, &PG_Window::handleButtonClick));
+	my_buttonClose->sigClick.connect(sigc::mem_fun(*this, &PG_Window::handleButtonClick));
 
 	my_buttonMinimize = new PG_Button(my_titlebar);
 	my_buttonMinimize->SetID(IDWINDOW_MINIMIZE);
-	my_buttonMinimize->sigClick.connect(slot(*this, &PG_Window::handleButtonClick));
+	my_buttonMinimize->sigClick.connect(sigc::mem_fun(*this, &PG_Window::handleButtonClick));
 
 	LoadThemeStyle(style);
 
@@ -248,13 +248,13 @@ bool PG_Window::handleButtonClick(PG_Button* button) {
 			// close window
 		case IDWINDOW_CLOSE:
 			Hide();
-			sigClose(this);
+			sigClose();
 			break;
 
 			// minimize window
 		case IDWINDOW_MINIMIZE:
 			Hide();
-			sigMinimize(this);
+			sigMinimize();
 			break;
 	}
 
diff --git a/source/libs/paragui/src/ystring/Makefile.in b/source/libs/paragui/src/ystring/Makefile.in
index 6cc74de..b011e13 100644
--- a/source/libs/paragui/src/ystring/Makefile.in
+++ b/source/libs/paragui/src/ystring/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/revel/Makefile.in b/source/libs/revel/Makefile.in
index 4dd90fb..f5ecfc6 100644
--- a/source/libs/revel/Makefile.in
+++ b/source/libs/revel/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -301,6 +301,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -436,14 +439,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
diff --git a/source/libs/sdl_sound/Makefile.in b/source/libs/sdl_sound/Makefile.in
index 9c2ddb1..0976177 100644
--- a/source/libs/sdl_sound/Makefile.in
+++ b/source/libs/sdl_sound/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -283,6 +283,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -420,14 +423,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
diff --git a/source/libs/sdlmm/Makefile.in b/source/libs/sdlmm/Makefile.in
index 56eb9bc..be0acea 100644
--- a/source/libs/sdlmm/Makefile.in
+++ b/source/libs/sdlmm/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/sdlmm/src/Makefile.in b/source/libs/sdlmm/src/Makefile.in
index c3d136b..ce11085 100644
--- a/source/libs/sdlmm/src/Makefile.in
+++ b/source/libs/sdlmm/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -285,6 +285,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/libs/triangul/Makefile.in b/source/libs/triangul/Makefile.in
index 325163f..e677c75 100644
--- a/source/libs/triangul/Makefile.in
+++ b/source/libs/triangul/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -418,14 +421,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
diff --git a/source/loadbi3.cpp b/source/loadbi3.cpp
index 3d4f8e1..4eaac27 100644
--- a/source/loadbi3.cpp
+++ b/source/loadbi3.cpp
@@ -923,7 +923,7 @@ void        tloadBImap ::   ReadACTNPart(void)
          xlt[0] = Line[X];
          for ( int b = 0; b < translationTable->objecttranslate.size(); b++ )
              if ( translationTable->objecttranslate[b].BIpic == Line[X] ) {
-                for ( int c = 1; c < 5; c++ )
+                for ( int c = 0; c < 4; c++ )
                    if ( translationTable->objecttranslate[b].objects[c] != -1 )
                       xlt[xl++] = translationTable->objecttranslate[b].objects[c];
                 trrID = translationTable->objecttranslate[b].terrainID;
@@ -1521,8 +1521,8 @@ void tloadBImap :: LoadTXTFile ( char* filename )
             } else {
                // repeat
                Uint8 d0,d1;
-	       d0=inbuf[inptr]; inptr++;
-	       d1=inbuf[inptr]; inptr++;
+               d0=inbuf[inptr]; inptr++;
+               d1=inbuf[inptr]; inptr++;
                int blklen=(d0&0xf)+3;
                int blkofs=((d0&0xf0)<<4)+d1;
                for (int j=0; (j<blklen)&&(outptr<txtsize); j++)
@@ -1537,6 +1537,7 @@ void tloadBImap :: LoadTXTFile ( char* filename )
       // The file is uncompressed.
       if ( fread(txtbuffer, txtsize, 1, fp) != 1 )
          throw treadafterend( filename );
+
    }
 
     txtbuffer[txtsize]=0;
@@ -1613,8 +1614,9 @@ void tloadBImap :: LoadFromFile( const char* path, const char* AFileName, Terrai
        UnPackDF(AktDFNum);
        */
 
-       if ( GetStr ( 1, 24 ) )
-          actmap->maptitle = GetStr ( 1, 24 );
+       char* str = GetStr ( 1, 24 );
+       if ( str )
+          actmap->maptitle = str;
        else
           actmap->maptitle.erase();
 
diff --git a/source/loaders.cpp b/source/loaders.cpp
index 6f3ae41..9f5fc22 100644
--- a/source/loaders.cpp
+++ b/source/loaders.cpp
@@ -684,6 +684,8 @@ void tspfldloaders::readfields ( void )
          if (b1 & csm_vehicle ) {
             fld2->vehicle = Vehicle::newFromStream ( spfld, *stream );
             fld2->vehicle->setnewposition ( l%spfld->xsize, l/spfld->xsize );
+            if ( fld2->vehicle->getOwner() == 8 ) // neutral units are not allowed, it was a bug that they could be placed on some maps
+                delete fld2->vehicle;
          }
 
          if (b1 & csm_building ) {
@@ -855,7 +857,7 @@ void   tspfldloaders::chainitems ( GameMap* actmap )
 /*     Set Player Existencies                                */
 /**************************************************************/
 
-SigC::Signal1<void,GameMap*> tspfldloaders::mapLoaded;
+sigc::signal<void,GameMap*> tspfldloaders::mapLoaded;
 
 
 tspfldloaders::tspfldloaders ( void )
diff --git a/source/loaders.h b/source/loaders.h
index f08a853..cff5ea2 100644
--- a/source/loaders.h
+++ b/source/loaders.h
@@ -70,7 +70,7 @@ class  tspfldloaders {
            tnstream*        stream;
            GameMap*     spfld;
 
-           static SigC::Signal1<void,GameMap*> mapLoaded; 
+           static sigc::signal<void,GameMap*> mapLoaded; 
 
            void            readoldevents     ( void );
 
diff --git a/source/loggingoutput.cpp b/source/loggingoutput.cpp
index 83fd49b..f8a2f31 100644
--- a/source/loggingoutput.cpp
+++ b/source/loggingoutput.cpp
@@ -33,7 +33,7 @@ ASCString LoggingOutputHandler::getFilename( const ASCString& path )
 LoggingOutputHandler::LoggingOutputHandler( const ASCString& path )
    : filename( getFilename( path )), logfile( filename.c_str() )
 {
-   MessagingHub::Instance().logMessage.connect( SigC::slot( *this, &LoggingOutputHandler::messageLogger ));
+   MessagingHub::Instance().logMessage.connect( sigc::mem_fun( *this, &LoggingOutputHandler::messageLogger ));
 }
 
 
diff --git a/source/loggingoutput.h b/source/loggingoutput.h
index 56ed437..bd771a7 100644
--- a/source/loggingoutput.h
+++ b/source/loggingoutput.h
@@ -16,7 +16,7 @@
 #include "ascstring.h"
 #include <fstream>
 
- class LoggingOutputHandler : public SigC::Object {
+ class LoggingOutputHandler : public sigc::trackable {
        ASCString filename;
        std::ofstream logfile;
        void messageLogger( const ASCString& msg, int level );
diff --git a/source/lua/Makefile.in b/source/lua/Makefile.in
index 630ff94..e603c39 100644
--- a/source/lua/Makefile.in
+++ b/source/lua/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -290,6 +290,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/lua/common.cpp b/source/lua/common.cpp
index a969865..561bdbe 100644
--- a/source/lua/common.cpp
+++ b/source/lua/common.cpp
@@ -87,8 +87,8 @@ const TerrainType* getTerrainType( int id )
          propertyEditor = new ASC_PropertyEditor( this, PG_Rect( 10, GetTitlebarHeight()+10, Width() - 20, Height() - GetTitlebarHeight() - 60 ), "PropertyEditor", 70 );
          
          StandardButtonDirection( Horizontal );
-         AddStandardButton("OK")->sigClick.connect( SigC::slot( *this, &PropertyDialog::ok ));
-         AddStandardButton("Cancel")->sigClick.connect( SigC::slot( *this, &PropertyDialog::cancel ));
+         AddStandardButton("OK")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PropertyDialog::ok )));
+         AddStandardButton("Cancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &PropertyDialog::cancel )));
       }
          
       
diff --git a/source/mainscreenwidget.cpp b/source/mainscreenwidget.cpp
index 6890d01..2df5ea4 100644
--- a/source/mainscreenwidget.cpp
+++ b/source/mainscreenwidget.cpp
@@ -101,18 +101,18 @@ void MainScreenWidget::setup( bool messageLine, const PG_Rect& mapView )
    displayLogMessage ( 5, "done\nMainScreenWidget completed\n");
    dataLoaderTicker();
 
-   repaintDisplay.connect ( SigC::bind( SigC::slot( *this, &MainScreenWidget::Update ), true ));
+   repaintDisplay.connect ( sigc::bind( sigc::mem_fun( *this, &MainScreenWidget::Update ), true ));
    
    buildBackgroundImage( messageLine );
    dataLoaderTicker();
 
-   PG_Application::GetApp()->sigAppIdle.connect( SigC::slot( *this, &MainScreenWidget::idleHandler ));
+   PG_Application::GetApp()->sigAppIdle.connect( sigc::hide( sigc::mem_fun( *this, &MainScreenWidget::idleHandler )));
 
-   mapChanged.connect( SigC::slot( OverviewMapHolder::clearmap ));
+   mapChanged.connect( sigc::ptr_fun( &OverviewMapHolder::clearmap ));
    dataLoaderTicker();
    
-   MessagingHub::Instance().statusInformation.connect( SigC::slot( *this, &MainScreenWidget::displayMessage ));
-   MessagingHub::Instance().messageWindowFactory.connect( SigC::slot( *this, &MainScreenWidget::createStatusWindow ));
+   MessagingHub::Instance().statusInformation.connect( sigc::mem_fun( *this, &MainScreenWidget::displayMessage ));
+   MessagingHub::Instance().messageWindowFactory.connect( sigc::mem_fun( *this, &MainScreenWidget::createStatusWindow ));
 }
 
 
@@ -130,7 +130,7 @@ void MainScreenWidget :: toggleMapLayer( const ASCString& name )
 }
 
 
-bool MainScreenWidget :: idleHandler( PG_MessageObject* msgObj )
+bool MainScreenWidget :: idleHandler( )
 {
    if ( ticker > lastMessageTime + 500 ) {
       displayMessage( "" );
diff --git a/source/mainscreenwidget.h b/source/mainscreenwidget.h
index a6865c6..4b0e57e 100644
--- a/source/mainscreenwidget.h
+++ b/source/mainscreenwidget.h
@@ -92,7 +92,7 @@ public:
     }; 
     
 
-    SigC::Signal1<void,int> lockOptionsChanged;
+    sigc::signal<void,int> lockOptionsChanged;
     
     
 protected:
@@ -106,7 +106,7 @@ protected:
     
     void setup( bool messageLine, const PG_Rect& mapView );
     
-    bool idleHandler( PG_MessageObject* msgObj );
+    bool idleHandler();
 
     void mouseScrollChecker();
 
diff --git a/source/mapdisplay.cpp b/source/mapdisplay.cpp
index 74db1e8..6a8897c 100644
--- a/source/mapdisplay.cpp
+++ b/source/mapdisplay.cpp
@@ -64,8 +64,8 @@ MapRenderer::Icons MapRenderer::icons;
 bool tempsvisible = true;
 
 
-SigC::Signal0<void> lockMapdisplay;
-SigC::Signal0<void> unlockMapdisplay;
+sigc::signal<void> lockMapdisplay;
+sigc::signal<void> unlockMapdisplay;
 
 
 class ContainerInfoLayer : public MapLayer {
@@ -625,9 +625,9 @@ MapDisplayPG::MapDisplayPG ( MainScreenWidget *parent, const PG_Rect r )
    
    setNewZoom( CGameOptions::Instance()->mapzoom );
 
-   repaintMap.connect( SigC::slot( *this, &MapDisplayPG::updateWidget ));
+   repaintMap.connect( sigc::mem_fun( *this, &MapDisplayPG::updateWidget ));
 
-   PG_Application::GetApp()->sigKeyDown.connect( SigC::slot( *this, &MapDisplayPG::keyboardHandler ));
+   PG_Application::GetApp()->sigKeyDown.connect( sigc::mem_fun( *this, &MapDisplayPG::keyboardHandler ));
 
    SetName( "THEMapDisplay");
 
@@ -638,7 +638,7 @@ MapDisplayPG::MapDisplayPG ( MainScreenWidget *parent, const PG_Rect r )
       s.assignDefaultPalette();
    }
    
-   MapRenderer::additionalItemDisplayHook.connect( SigC::slot( *this, &MapDisplayPG::displayAddons ));
+   MapRenderer::additionalItemDisplayHook.connect( sigc::mem_fun( *this, &MapDisplayPG::displayAddons ));
    
    upperLeftSourceBlitCorner = SPoint( getFieldPosX(0,0), getFieldPosY(0,0));
 
@@ -653,8 +653,8 @@ MapDisplayPG::MapDisplayPG ( MainScreenWidget *parent, const PG_Rect r )
    addMapLayer( new UnitInfoLayer()     , "unitinfo" );
    addMapLayer( new UnitTrainingLayer() , "unittraining" );
 
-   parent->lockOptionsChanged.connect( SigC::slot( *this, &MapDisplayPG::lockOptionsChanged ));
-   GameMap::sigMapDeletion.connect( SigC::slot( *this, &MapDisplayPG::sigMapDeleted ));
+   parent->lockOptionsChanged.connect( sigc::mem_fun( *this, &MapDisplayPG::lockOptionsChanged ));
+   GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &MapDisplayPG::sigMapDeleted ));
 }
 
 
@@ -1652,7 +1652,7 @@ void MapDisplayPG::moveCursor( int dir, int step )
 }
 
 
-bool MapDisplayPG::keyboardHandler( const SDL_KeyboardEvent* keyEvent)
+bool MapDisplayPG::keyboardHandler( PG_MessageObject* o, const SDL_KeyboardEvent* keyEvent)
 {
    if ( !keyEvent || !actmap )
       return false;
diff --git a/source/mapdisplay.h b/source/mapdisplay.h
index a82c9d3..54d2b1d 100644
--- a/source/mapdisplay.h
+++ b/source/mapdisplay.h
@@ -100,7 +100,7 @@ class MapRenderer {
       
       int bitmappedHeight2pass( int height );
       
-      SigC::Signal2<void,Surface&,int> additionalItemDisplayHook;
+      sigc::signal<void,Surface&,int> additionalItemDisplayHook;
       
       void addMapLayer( MapLayer* mapLayer ) { layerRenderer.push_back( mapLayer ); };
      
@@ -190,7 +190,7 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
       void changeZoom( int delta) { setNewZoom( getZoom() + delta); };
       void setNewZoom( int zoom );
       int getZoom() const { return zoom; };
-      SigC::Signal1<void, int> newZoom;
+      sigc::signal<void, int> newZoom;
       
       MapCoordinate screenPos2mapPos( const SPoint& pos );
       MapCoordinate widgetPos2mapPos( const SPoint& pos );
@@ -255,10 +255,10 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
 
       bool eventKeyDown(const SDL_KeyboardEvent* key)
       {
-         return keyboardHandler( key );
+         return keyboardHandler( NULL, key );
       };
 
-      bool keyboardHandler( const SDL_KeyboardEvent* keyEvent);
+      bool keyboardHandler( PG_MessageObject* o, const SDL_KeyboardEvent* keyEvent);
       
       bool disableKeyboardCursorMovement;
      
@@ -295,7 +295,7 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
       void activateMapLayer( const ASCString& name, bool active );
       void toggleMapLayer( const ASCString& name );
       bool layerActive( const ASCString& name );
-      SigC::Signal2<void, bool, const ASCString&> layerChanged;
+      sigc::signal<void, bool, const ASCString&> layerChanged;
       void getActiveLayers( vector<ASCString>& list );
 
 
@@ -311,7 +311,7 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
            \param int  the button that was pressed
            \param int  the priority of the signal
       */
-      SigC::Signal5<bool,const MapCoordinate&, const SPoint&, bool, int, int> mouseButtonOnField;
+      sigc::signal<bool,const MapCoordinate&, const SPoint&, bool, int, int> mouseButtonOnField;
 
       /** Signal that is fired when the mouse is dragged onto a new field with mouse buttons pressed.
            \param MapCoordinate the Coordinate of the field that was clicked
@@ -319,7 +319,7 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
            \param bool true if the cursor had been repositioned
            \param int  the priority of the signal
        */
-      SigC::Signal4<bool,const MapCoordinate&, const SPoint&, bool, int> mouseDraggedToField;
+      sigc::signal<bool,const MapCoordinate&, const SPoint&, bool, int> mouseDraggedToField;
       
       
       struct Cursor {
@@ -361,8 +361,8 @@ class MapDisplayPG: public PG_Widget, protected MapRenderer {
            
 };
 
-extern SigC::Signal0<void> lockMapdisplay;
-extern SigC::Signal0<void> unlockMapdisplay;
+extern sigc::signal<void> lockMapdisplay;
+extern sigc::signal<void> unlockMapdisplay;
 
 
 typedef MapDisplayPG::LockDisplay tlockdispspfld;
diff --git a/source/maped-mainscreen.cpp b/source/maped-mainscreen.cpp
index cb1846f..ba27e44 100644
--- a/source/maped-mainscreen.cpp
+++ b/source/maped-mainscreen.cpp
@@ -89,7 +89,7 @@ void Menu::addfield( const char* name )
    currentMenu = new PG_PopupMenu( NULL, -1, -1, "" );
    categories.push_back ( currentMenu );
    Add ( name, currentMenu );
-   currentMenu->sigSelectMenuItem.connect( SigC::slot( *this, &Menu::execAction ));
+   currentMenu->sigSelectMenuItem.connect( sigc::mem_fun( *this, &Menu::execAction ));
 
 }
 
@@ -133,8 +133,8 @@ void Menu::setup()
    addbutton ( "Resi~z~e map\tR",             act_resizemap );
    addbutton ( "set global uniform ~w~eather\tctrl-W", act_setactweatherglobal );
    // addbutton ( "configure weather generator", act_setactnewweather );
-   addbutton ( "~C~reate regional ressources", act_createresources );
-   addbutton ( "Create global ressources\tctrl+F", act_createresources2 );
+   addbutton ( "~C~reate regional resources", act_createresources );
+   addbutton ( "Create global resources\tctrl+F", act_createresources2 );
    addbutton ( "Clear all mineral resources", act_clearresources );
    currentMenu->addSeparator();
    addbutton ( "~S~et turn number",        act_setTurnNumber );
@@ -399,9 +399,9 @@ Maped_MainScreenWidget::Maped_MainScreenWidget( PG_Application& application )
 {
 
    setup( false, PG_Rect(15,30,Width() - 200, Height() - 73) );
-   mapDisplay->mouseButtonOnField.connect( SigC::slot( mousePressedOnField ));
-   mapDisplay->mouseButtonOnField.connect( SigC::slot( *this, &Maped_MainScreenWidget::clickOnMap ));
-   mapDisplay->mouseDraggedToField.connect( SigC::slot( mouseDraggedToField ));
+   mapDisplay->mouseButtonOnField.connect( sigc::ptr_fun( &mousePressedOnField ));
+   mapDisplay->mouseButtonOnField.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::clickOnMap ));
+   mapDisplay->mouseDraggedToField.connect( sigc::ptr_fun( &mouseDraggedToField ));
 
    
 
@@ -411,46 +411,46 @@ Maped_MainScreenWidget::Maped_MainScreenWidget( PG_Application& application )
    menu = new Menu(this, PG_Rect(15,0,Width()-200,20));
 
    
-   PG_Application::GetApp()->sigKeyDown.connect( SigC::slot( *this, &Maped_MainScreenWidget::eventKeyDown ));
+   PG_Application::GetApp()->sigKeyDown.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::eventKeyDown ));
    
    int xpos = Width() - 150;
    int w = 140;
    int ypos = 180;
 
    PG_Button* buttonC = new PG_Button( this, PG_Rect( xpos, ypos, w, 20), "Clear Selection" );
-   buttonC->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::clearSelection ));
+   buttonC->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::clearSelection )));
    ypos += 25;
 
    
    PG_Button* button = new PG_Button( this, PG_Rect( xpos, ypos, w, 20), "Select Vehicle" );
-   button->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectVehicle ));
+   button->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectVehicle )));
    ypos += 25;
    
    PG_Button* button2 = new PG_Button( this, PG_Rect( xpos, ypos, w, 20), "Select Building" );
-   button2->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectBuilding ));
+   button2->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectBuilding )));
    ypos += 25;
 
    PG_Button* button3 = new PG_Button( this, PG_Rect( xpos, ypos, w - 50, 20), "Sel. Object" );
-   button3->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectObject ));
+   button3->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectObject )));
 
    PG_Button* button3b = new PG_Button( this, PG_Rect( xpos+ w - 45, ypos, 45, 20), "List" );
-   button3b->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectObjectList ));
+   button3b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectObjectList )));
    ypos += 25;
 
 
    PG_Button* button4 = new PG_Button( this, PG_Rect( xpos, ypos, w - 50, 20), "Sel. Terrain" );
-   button4->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectTerrain ));
+   button4->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectTerrain )));
 
    PG_Button* button4b = new PG_Button( this, PG_Rect( xpos + w - 45, ypos, 45, 20), "List" );
-   button4b->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectTerrainList ));
+   button4b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectTerrainList )));
    ypos += 25;
 
    PG_Button* button5 = new PG_Button( this, PG_Rect( xpos, ypos, w, 20), "Select Mine" );
-   button5->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectMine ));
+   button5->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectMine )));
    ypos += 25;
     
    PG_Button* button6 = new PG_Button( this, PG_Rect( xpos, ypos, w, 20), "Lua Brush" );
-   button6->sigClick.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectLuaBrush ));
+   button6->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectLuaBrush )));
    ypos += 25;
    
    
@@ -459,7 +459,7 @@ Maped_MainScreenWidget::Maped_MainScreenWidget( PG_Application& application )
    brushSelector->AddItem("1");
    brushSelector->AddItem("3");
    brushSelector->AddItem("5");
-   brushSelector->selectionSignal.connect( SigC::slot( *this, &Maped_MainScreenWidget::brushChanged ));
+   brushSelector->selectionSignal.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::brushChanged ));
    ypos += 25;
    
   
@@ -468,17 +468,17 @@ Maped_MainScreenWidget::Maped_MainScreenWidget( PG_Application& application )
       weatherSelector->AddItem( cwettertypen[i] );
     ypos += 25;  
             
-   weatherSelector->selectionSignal.connect( SigC::slot( selection, &SelectionHolder::setWeather ) );
-//   weatherSelector->selectionSignal.connect( SigC::slot( *currentSelectionWidget, &SelectionItemWidget::Update ));
+   weatherSelector->selectionSignal.connect( sigc::mem_fun( selection, &SelectionHolder::setWeather ) );
+//   weatherSelector->selectionSignal.connect( sigc::mem_fun( *currentSelectionWidget, &SelectionItemWidget::Update ));
    
 
    playerSelector = new DropDownSelector( this, PG_Rect( xpos, ypos, w, 20));
    for ( int i = 0; i < 9; ++i )
       playerSelector->AddItem( "Player " + ASCString::toString(i) );
-   playerSelector->selectionSignal.connect( SigC::slot( selection, &SelectionHolder::setPlayer ) );
+   playerSelector->selectionSignal.connect( sigc::mem_fun( selection, &SelectionHolder::setPlayer ) );
    ypos += 25;
 
-   selection.playerChanged.connect( SigC::slot( *this, &Maped_MainScreenWidget::playerChanged ));
+   selection.playerChanged.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::playerChanged ));
 
    
    currentSelectionWidget = new SelectionItemWidget( this, PG_Rect( Width() - BuildingItem::Width() - 10, ypos, BuildingItem::Width(), BuildingItem::Height() ) );
@@ -489,8 +489,8 @@ Maped_MainScreenWidget::Maped_MainScreenWidget( PG_Application& application )
    selectionName2 = new PG_Label( this, PG_Rect( xpos, ypos, currentSelectionWidget->Width(), 20 ));
    ypos += 25;
    
-   selection.selectionChanged.connect( SigC::slot( *currentSelectionWidget, &SelectionItemWidget::set ));
-   selection.selectionChanged.connect( SigC::slot( *this, &Maped_MainScreenWidget::selectionChanged ));
+   selection.selectionChanged.connect( sigc::mem_fun( *currentSelectionWidget, &SelectionItemWidget::set ));
+   selection.selectionChanged.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::selectionChanged ));
 
    spawnOverviewMapPanel( "Mapeditor_OverviewMap" );
 
@@ -549,8 +549,8 @@ void Maped_MainScreenWidget::setupStatusBar()
    coordinateDisplay = new PG_Label ( this, PG_Rect( x, y, 80, height ) );
    coordinateDisplay->SetFontSize(11);
    
-   updateFieldInfo.connect( SigC::slot( *this, &Maped_MainScreenWidget::updateStatusBar ));
-   cursorMoved.connect( SigC::slot( *this, &Maped_MainScreenWidget::updateStatusBar ));
+   updateFieldInfo.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::updateStatusBar ));
+   cursorMoved.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::updateStatusBar ));
 }
 
 void Maped_MainScreenWidget::updateStatusBar()
@@ -620,7 +620,7 @@ bool Maped_MainScreenWidget::clickOnMap( const MapCoordinate& field, const SPoin
             contextMenu->addMenuItem( (*i)->getText( field ), (*i)->getActionID() );
          }
 
-      contextMenu->sigSelectMenuItem.connect( SigC::slot( *this, &Maped_MainScreenWidget::runContextAction   ));
+      contextMenu->sigSelectMenuItem.connect( sigc::mem_fun( *this, &Maped_MainScreenWidget::runContextAction   ));
       
       contextMenu->Show();
       return true;
@@ -647,7 +647,7 @@ bool Maped_MainScreenWidget::runContextAction  (PG_PopupMenu::MenuItem* menuItem
 #endif
 
 
-bool Maped_MainScreenWidget::eventKeyUp(const SDL_KeyboardEvent* key)
+bool Maped_MainScreenWidget::eventKeyUp(const PG_MessageObject* o, const SDL_KeyboardEvent* key)
 {
    if ( key->keysym.sym ==  SDLK_RCTRL || key->keysym.sym == SDLK_LCTRL ) {
       execaction_ev( act_releaseControlPanel );
@@ -684,7 +684,7 @@ void helperFunction()
 }
 
 
-bool Maped_MainScreenWidget::eventKeyDown(const SDL_KeyboardEvent* key)
+bool Maped_MainScreenWidget::eventKeyDown(const PG_MessageObject* o, const SDL_KeyboardEvent* key)
 {
    int mod = SDL_GetModState() & ~(KMOD_NUM | KMOD_CAPS | KMOD_MODE);
 
@@ -946,7 +946,7 @@ void showSelectionWindow( PG_Widget* parent, PG_WindowPointer &selectionWindow,
    if ( !selectionWindow ) {
       ItemSelectorWindow* sw = new MapItemSelectionWindow( parent, PG_Rect( parent->Width()-300, 100, 280, parent->Height()-150), "select item", new MapItemTypeWidgetFactory< MapItemTypeWidget<ItemType> >(itemRepository) );
 
-      filtersChangedSignal.connect( SigC::slot( *sw, &ItemSelectorWindow::reLoad ));
+      filtersChangedSignal.connect( sigc::mem_fun( *sw, &ItemSelectorWindow::reLoad ));
       selectionWindow = sw;
    }
    
diff --git a/source/maped-mainscreen.h b/source/maped-mainscreen.h
index adf964c..851b3c1 100644
--- a/source/maped-mainscreen.h
+++ b/source/maped-mainscreen.h
@@ -115,8 +115,8 @@ protected:
     
     void brushChanged( int i );
     void selectionChanged( const Placeable* item ); 
-    bool eventKeyUp(const SDL_KeyboardEvent* key);
-    bool eventKeyDown(const SDL_KeyboardEvent* key);
+    bool eventKeyUp(const PG_MessageObject* o, const SDL_KeyboardEvent* key);
+    bool eventKeyDown(const PG_MessageObject* o, const SDL_KeyboardEvent* key);
     void setupStatusBar();
     
     void playerChanged( int player );
diff --git a/source/messagedlg.cpp b/source/messagedlg.cpp
index 1c1d399..f44d97d 100644
--- a/source/messagedlg.cpp
+++ b/source/messagedlg.cpp
@@ -156,12 +156,12 @@ NewMessage :: NewMessage ( GameMap* gamemap, Message* msg, bool reminder ) : ASC
       editor->SetText( message->text );
    editor->SetInputFocus();
     
-   AddStandardButton("OK")->sigClick.connect( SigC::slot( *this, &NewMessage::ok ));
-   AddStandardButton("Cancel")->sigClick.connect( SigC::slot( *this, &NewMessage::cancel ));
+   AddStandardButton("OK")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMessage::ok )));
+   AddStandardButton("Cancel")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMessage::cancel )));
    AddStandardButton("");
-   AddStandardButton("Coordinates")->sigClick.connect( SigC::slot( *this, &NewMessage::insertCoordinates ));
+   AddStandardButton("Coordinates")->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMessage::insertCoordinates )));
    PG_Button* coord = AddStandardButton("Cursor Coord");
-   coord->sigClick.connect( SigC::slot( *this, &NewMessage::insertCursorCoordinates ));
+   coord->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &NewMessage::insertCursorCoordinates )));
    new PG_ToolTipHelp ( coord, "ctrl-r");
   
 }
@@ -210,13 +210,13 @@ class IngameMessageViewer : public ASC_PG_Dialog {
          /* if ( !buttonText.empty() ) { */
          if ( msg.reminder ) {
             PG_Button* b = new PG_Button( this, PG_Rect( Width() - 70, Height() - 40, 60, 30), "Done" );
-            b->sigClick.connect( SigC::slot( *this, &IngameMessageViewer::ok) );
+            b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &IngameMessageViewer::ok)) );
             
             PG_Button* b2 = new PG_Button( this, PG_Rect( Width() - 140, Height() - 40, 60, 30), "Keep" );
-            b2->sigClick.connect( SigC::slot( *this, &IngameMessageViewer::keep) );
+            b2->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &IngameMessageViewer::keep)) );
          } else {
             PG_Button* b = new PG_Button( this, PG_Rect( Width() - 110, Height() - 40, 100, 30), "OK" );
-            b->sigClick.connect( SigC::slot( *this, &IngameMessageViewer::ok) );
+            b->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &IngameMessageViewer::ok)) );
          }
             footerHeight = 50;
          /* } else
@@ -434,7 +434,7 @@ class MessageListItemFactory: public SelectionItemFactory  {
       void itemMarked( const SelectionWidget* widget );
       void itemSelected( const SelectionWidget* widget, bool mouse );
 
-      SigC::Signal1<void, Message* > messageSelected;
+      sigc::signal<void, Message* > messageSelected;
 };
 
 
@@ -537,7 +537,7 @@ void MessageSelectionWindow::messageSelected(  Message* msg )
          PG_Rect r ( my_xpos + Width(), my_ypos, min( PG_Application::GetScreenWidth()/2, 500), Height() );
          viewer = new IngameMessageViewer( "Message", *msg, r );
          viewer->Show();
-         viewer->sigDelete.connect( SigC::slot( *this, &MessageSelectionWindow::viewerDeleted ));
+         viewer->sigDelete.connect( sigc::mem_fun( *this, &MessageSelectionWindow::viewerDeleted ));
       } else 
          viewer->SetMessage( *msg );
    }
@@ -549,10 +549,10 @@ MessageSelectionWindow::MessageSelectionWindow( PG_Widget *parent, const PG_Rect
 {
   
    MessageListItemFactory* factory = new MessageListItemFactory( messages, gamemap );
-   factory->messageSelected.connect ( SigC::slot( *this, &MessageSelectionWindow::messageSelected ));
+   factory->messageSelected.connect ( sigc::mem_fun( *this, &MessageSelectionWindow::messageSelected ));
 
    ItemSelectorWidget* isw = new ItemSelectorWidget( this, PG_Rect(10, GetTitlebarHeight(), r.Width() - 10, r.Height() - GetTitlebarHeight()), factory );
-   isw->sigQuitModal.connect( SigC::slot( *this, &ItemSelectorWindow::QuitModal));
+   isw->sigQuitModal.connect( sigc::mem_fun( *this, &ItemSelectorWindow::QuitModal));
 };
 
 
diff --git a/source/misc.cpp b/source/misc.cpp
index 5c0c780..3dcc74c 100644
--- a/source/misc.cpp
+++ b/source/misc.cpp
@@ -136,7 +136,6 @@ int  crc32buf(const void *vbuf, int len)
 {
       const char* buf = (const char*) vbuf;
 
-      unsigned int crc;
       unsigned int oldcrc32;
 
       oldcrc32 = 0xFFFFFFFF;
@@ -146,8 +145,7 @@ int  crc32buf(const void *vbuf, int len)
             oldcrc32 = UPDC32(*buf, oldcrc32);
       }
 
-      return crc = oldcrc32 = ~oldcrc32;
-
+      return ~oldcrc32;
 }
 
 
diff --git a/source/network/Makefile.in b/source/network/Makefile.in
index ea1272a..a8d301e 100644
--- a/source/network/Makefile.in
+++ b/source/network/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/network/pbem-server.cpp b/source/network/pbem-server.cpp
index 9d50cbe..ad15503 100644
--- a/source/network/pbem-server.cpp
+++ b/source/network/pbem-server.cpp
@@ -81,7 +81,7 @@ class AuthenticationDialog : public ASC_PG_Dialog {
          (new PG_PropertyField_String<ASCString>( propertyEditor , "Default Password", &password ))->SetPassHidden('*');
          
          PG_Button* ok = new PG_Button( this, PG_Rect( Width() - 100, Height() - 40, 90, 30), "OK" );
-         ok->sigClick.connect( SigC::slot( *this, &AuthenticationDialog::ok ));
+         ok->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &AuthenticationDialog::ok )));
       }
       
       const ASCString& getName() { return name; };
diff --git a/source/newfont.cpp b/source/newfont.cpp
index a69e46f..c31ab8c 100644
--- a/source/newfont.cpp
+++ b/source/newfont.cpp
@@ -117,8 +117,10 @@ pfont        loadfont( tnstream* stream )
 
    font1->id[47] = 0;
 
-   if ( strncmp(font1->id,fontid, 46) )
+   if ( strncmp(font1->id,fontid, 46) ) {
+      delete font1;
       return (NULL);
+   }
 
    font1->useems = false;
    font1->palette = NULL;
diff --git a/source/oldlzw.cpp b/source/oldlzw.cpp
index 5d6b292..5533707 100644
--- a/source/oldlzw.cpp
+++ b/source/oldlzw.cpp
@@ -37,7 +37,7 @@ tlzwstreamcompression  :: tlzwstreamcompression ( void )
     initread = 0;
     initwrite = 0;
     DecodeBufferSize = 0;    
-    DecodeBuffer = NULL;
+    decodeBuffer = NULL;
     rdictionary = NULL;
     readcnt = 0;
     wdictionary = NULL;
@@ -290,19 +290,22 @@ void tlzwstreamcompression  :: LZWOut ( CodeType code )
                    
     while ( code >= PRESET_CODE_MAX )
     {
-        DecodeBuffer[ count++ ] = rdictionary[ code ].c;
+        decodeBuffer[ count++ ] = rdictionary[ code ].c;
         if ( count == DecodeBufferSize )
         {
-            DecodeBuffer = (unsigned char *) realloc ( DecodeBuffer, DecodeBufferSize + 1000 );
+            unsigned char* newBuffer = (unsigned char *) realloc ( decodeBuffer, DecodeBufferSize + 1000 );
 
-            if ( ! DecodeBuffer )
+            if ( ! newBuffer ) {
+                free ( decodeBuffer );
                 throw OutOfMemoryError ( DecodeBufferSize + 1000 );
-            else      
+            } else {
+                decodeBuffer = newBuffer;
                 DecodeBufferSize += 1000;
+            }
         }
         code = rdictionary[ code ].parent;
     }
-    DecodeBuffer[ count++ ] = code;
+    decodeBuffer[ count++ ] = code;
     return ( count );
 }
 
@@ -372,8 +375,8 @@ int tlzwstreamcompression  :: readdata ( void* buf, int size, bool excpt  )
           if (!DecodeBufferSize)
           {
               DecodeBufferSize = 1000;
-              DecodeBuffer =  (unsigned char * ) new char [ DecodeBufferSize ];
-              if ( DecodeBuffer == NULL )
+              decodeBuffer =  (unsigned char * ) new char [ DecodeBufferSize ];
+              if ( decodeBuffer == NULL )
                   throw OutOfMemoryError ( DecodeBufferSize );
           }
       
@@ -414,7 +417,7 @@ int tlzwstreamcompression  :: readdata ( void* buf, int size, bool excpt  )
                   /* Make last char same as first. Can use either */
                   /* inchar or the DecodeBuffer[count-1] */
       
-                  DecodeBuffer[ 0 ] = inchar;
+                  decodeBuffer[ 0 ] = inchar;
               }
               else
                   count = LZWLoadBuffer ( 0, incode );
@@ -422,13 +425,13 @@ int tlzwstreamcompression  :: readdata ( void* buf, int size, bool excpt  )
               if ( count == 0 )
                  throw ASCexception();
                              
-              inchar = DecodeBuffer[ count - 1 ];
+              inchar = decodeBuffer[ count - 1 ];
               while ( count )
               {
                  if ( pos < size )
-                    buf2 [pos++] = DecodeBuffer[--count];
+                    buf2 [pos++] = decodeBuffer[--count];
                  else 
-                    tempbuf.push ( DecodeBuffer[--count] );
+                    tempbuf.push ( decodeBuffer[--count] );
               }
       
               /* now, update the rdictionary */
@@ -464,8 +467,6 @@ int tlzwstreamcompression  :: readdata ( void* buf, int size, bool excpt  )
 
  tlzwstreamcompression  :: ~tlzwstreamcompression ( )
 {
-   if ( mode == writing )
-      close();
 
     if ( rdictionary ) {
        delete[] rdictionary;
@@ -476,9 +477,9 @@ int tlzwstreamcompression  :: readdata ( void* buf, int size, bool excpt  )
        wdictionary = NULL;
     }
 
-    if ( DecodeBuffer ) {
-       delete[] DecodeBuffer;
-       DecodeBuffer = NULL;
+    if ( decodeBuffer ) {
+       delete[] decodeBuffer;
+       decodeBuffer = NULL;
     }
 
 }
diff --git a/source/overviewmappanel.cpp b/source/overviewmappanel.cpp
index eb439fc..361ad54 100644
--- a/source/overviewmappanel.cpp
+++ b/source/overviewmappanel.cpp
@@ -30,19 +30,19 @@ OverviewMapPanel::OverviewMapPanel( PG_Widget *parent, const PG_Rect &r, MapDisp
 {
    SpecialDisplayWidget* sdw = dynamic_cast<SpecialDisplayWidget*>( FindChild( "overviewmap", true ) );
    if ( sdw ) {
-      sdw->display.connect( SigC::slot( *this, &OverviewMapPanel::painter ));
-      sdw->sigMouseMotion.connect( SigC::slot( *this, &OverviewMapPanel::mouseMotion ));
-      sdw->sigMouseButtonDown.connect( SigC::slot( *this, &OverviewMapPanel::mouseButtonDown ));
+      sdw->display.connect( sigc::mem_fun( *this, &OverviewMapPanel::painter ));
+      sdw->sigMouseMotion.connect( sigc::mem_fun( *this, &OverviewMapPanel::mouseMotion ));
+      sdw->sigMouseButtonDown.connect( sigc::mem_fun( *this, &OverviewMapPanel::mouseButtonDown ));
    }
    
    ovmap = sdw;
    assert( ovmap );
       
-   OverviewMapHolder::generationComplete.connect ( SigC::slot( *this, &OverviewMapPanel::redraw ));
-   viewChanged.connect ( SigC::slot( *this, &OverviewMapPanel::redraw ));
+   OverviewMapHolder::generationComplete.connect ( sigc::mem_fun( *this, &OverviewMapPanel::redraw ));
+   viewChanged.connect ( sigc::mem_fun( *this, &OverviewMapPanel::redraw ));
 
-   lockMapdisplay.connect( SigC::slot( *this, &OverviewMapPanel::lockPanel ));
-   unlockMapdisplay.connect( SigC::slot( *this, &OverviewMapPanel::unlockPanel ));
+   lockMapdisplay.connect( sigc::mem_fun( *this, &OverviewMapPanel::lockPanel ));
+   unlockMapdisplay.connect( sigc::mem_fun( *this, &OverviewMapPanel::unlockPanel ));
    
 
 }
@@ -131,7 +131,7 @@ bool OverviewMapPanel::mouseClick ( SPoint pos )
 }
 
 
-bool OverviewMapPanel::mouseButtonDown ( const SDL_MouseButtonEvent *button)
+bool OverviewMapPanel::mouseButtonDown ( PG_MessageObject* o, const SDL_MouseButtonEvent *button)
 {
    if ( ovmap->IsMouseInside() )
       if ( button->type == SDL_MOUSEBUTTONDOWN && button->button == 1 ) {
@@ -142,7 +142,7 @@ bool OverviewMapPanel::mouseButtonDown ( const SDL_MouseButtonEvent *button)
    return false;
 }
 
-bool OverviewMapPanel::mouseMotion  (  const SDL_MouseMotionEvent *motion)
+bool OverviewMapPanel::mouseMotion  ( PG_MessageObject* o,  const SDL_MouseMotionEvent *motion)
 {
    if ( ovmap->IsMouseInside() )
       if ( motion->type == SDL_MOUSEMOTION && (motion->state & 1 ) ) {
diff --git a/source/overviewmappanel.h b/source/overviewmappanel.h
index 6e9c992..a32f094 100644
--- a/source/overviewmappanel.h
+++ b/source/overviewmappanel.h
@@ -39,8 +39,8 @@ class OverviewMapPanel : public LayoutablePanel {
      protected:
         void painter ( const PG_Rect &src, const ASCString& name, const PG_Rect &dst);
         void redraw() { Redraw(true); };
-        bool mouseButtonDown ( const SDL_MouseButtonEvent *button);
-        bool mouseMotion (  const SDL_MouseMotionEvent *motion);
+        bool mouseButtonDown ( PG_MessageObject* o, const SDL_MouseButtonEvent *button);
+        bool mouseMotion ( PG_MessageObject* o, const SDL_MouseMotionEvent *motion);
         bool mouseClick ( SPoint pos );
 
    private:
diff --git a/source/packagerepository.cpp b/source/packagerepository.cpp
index e87e63e..3024fff 100644
--- a/source/packagerepository.cpp
+++ b/source/packagerepository.cpp
@@ -59,7 +59,7 @@ void PackageRepository :: write ( tnstream& stream )
    writePointerContainer( packageRepository, stream );
 }
 
-SigC::Signal0<void> PackageRepository::packgeDescriptionLoaded;
+sigc::signal<void> PackageRepository::packgeDescriptionLoaded;
 
 void PackageRepository :: postChecks() 
 {
diff --git a/source/packagerepository.h b/source/packagerepository.h
index cfa7ea3..97539ad 100644
--- a/source/packagerepository.h
+++ b/source/packagerepository.h
@@ -36,7 +36,7 @@ class PackageRepository : public TextFileDataLoader, public deallocating_vector<
       virtual void postChecks();
       ASCString getTypeName() { return "package"; };
       
-      static SigC::Signal0<void> packgeDescriptionLoaded;
+      static sigc::signal<void> packgeDescriptionLoaded;
       
       void checkPackageDependency( const Package* pack, const PackageData* packageData = NULL );
       
diff --git a/source/paradialog.cpp b/source/paradialog.cpp
index 920238a..06ce758 100644
--- a/source/paradialog.cpp
+++ b/source/paradialog.cpp
@@ -18,6 +18,7 @@
 
 #include "global.h"
 
+#include <boost/algorithm/string.hpp>
 #include <SDL_image.h>
 #include <signal.h>
 
@@ -152,8 +153,7 @@ ASC_PG_App :: ASC_PG_App ( const ASCString& themeName )  : fullScreen(false), bi
    this->themeName = themeName;
    EnableSymlinks(true);
    EnableAppIdleCalls();
-   sigAppIdle.connect(  idleEvent ); // I don't get a direct connection to work
-   // sigAppIdle.connect( SigC::slot( &idler ));
+   sigAppIdle.connect( sigc::hide( idleEvent.make_slot() ));
    int i = 0;
    bool themeFound = false;
    ASCString path;
@@ -194,7 +194,7 @@ ASC_PG_App :: ASC_PG_App ( const ASCString& themeName )  : fullScreen(false), bi
 bool ASC_PG_App :: queueWidgetForDeletion( PG_Widget* widget )
 {
    deletionQueue.push_back( widget );
-   widget->sigDelete.connect( SigC::slot( *this, &ASC_PG_App::removeFromDeletionQueue ));
+   widget->sigDelete.connect( sigc::mem_fun( *this, &ASC_PG_App::removeFromDeletionQueue ));
    return true;
 }
 
@@ -297,10 +297,11 @@ ASC_PG_App& getPGApplication()
 }
 
 
+static const int progressHeight = 15;
      
-StartupScreen::StartupScreen( const ASCString& filename, SigC::Signal0<void>& ticker ) : infoLabel(NULL), versionLabel(NULL), background(NULL), progressBar(NULL), fullscreenImage(NULL)
+StartupScreen::StartupScreen( const ASCString& filename, sigc::signal<void>& ticker ) : versionLabel(NULL), background(NULL), progressBar(NULL), fullscreenImage(NULL)
 {
-   MessagingHub::Instance().statusInformation.connect( SigC::slot( *this, &StartupScreen::disp ));
+   MessagingHub::Instance().statusInformation.connect( sigc::mem_fun( *this, &StartupScreen::disp ));
    
    tnfilestream s ( filename, tnstream::reading );
 
@@ -349,13 +350,9 @@ StartupScreen::StartupScreen( const ASCString& filename, SigC::Signal0<void>& ti
       image->SetBackground ( fullscreenImage.getBaseSurface(), PG_Draw::STRETCH );
    }
 
-   int progressHeight = 15;
    SDL_Surface* screen = PG_Application::GetApp()->GetScreen();
    progressBar = new AutoProgressBar( ticker, background, PG_Rect( 0, screen->h - progressHeight, screen->w, progressHeight ) );
 
-   infoLabel = new PG_Label( background, PG_Rect( screen->w/2, screen->h - progressHeight - 25, screen->w/2 - 10, 20 ));
-   infoLabel->SetAlignment( PG_Label::RIGHT );
-
    if ( MessagingHub::Instance().getVerbosity() > 0 ) {
       versionLabel = new PG_Label( background, PG_Rect( 10, screen->h - progressHeight - 25, screen->w/2, 20 ));
       versionLabel->SetAlignment( PG_Label::LEFT );
@@ -365,9 +362,33 @@ StartupScreen::StartupScreen( const ASCString& filename, SigC::Signal0<void>& ti
    background->Show();
 }
 
+/*!
+ * line is counting bottom up! 0 is the lower most line!
+ */
+void StartupScreen::dispLine( const ASCString& s, int line ) {
+   SDL_Surface* screen = PG_Application::GetApp()->GetScreen();
+   while ( infoLabels.size() <= line ) {
+       int y = screen->h - progressHeight - 25 * ( 1 + infoLabels.size());
+       if ( y < 0 )
+           return;
+
+       PG_Label* l = new PG_Label( background, PG_Rect( screen->w/2, y, screen->w/2 - 10, 20 ));
+       l->SetAlignment( PG_Label::RIGHT );
+       l->SetVisible(true);
+       infoLabels.push_back( l );
+   }
+   infoLabels[line]->SetText(s);
+}
+
 void StartupScreen::disp( const ASCString& s )
 {
-   infoLabel->SetText( s );
+   vector<ASCString> strs;
+   boost::split(strs, s, boost::is_any_of("\n"));
+
+   for ( int i = 0; i < strs.size(); ++i)
+       dispLine(strs[i], strs.size() -1 - i);
+   for ( int i = strs.size(); i < infoLabels.size(); ++i )
+       dispLine("", i );
 }
 
          
@@ -389,10 +410,10 @@ bool ASC_PG_App:: InitScreen ( int w, int h, int depth, Uint32 flags )
 
       fullScreen = flags & SDL_FULLSCREEN;
       
-      MessagingHub::Instance().error.connect( SigC::bind( SigC::slot( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::Error ));
-      MessagingHub::Instance().fatalError.connect( SigC::bind( SigC::slot( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::FatalError ));
-      MessagingHub::Instance().warning.connect(SigC::bind( SigC::slot( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::Warning ));
-      MessagingHub::Instance().infoMessage.connect( SigC::bind( SigC::slot( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::InfoMessage ));
+      MessagingHub::Instance().error.connect( sigc::bind( sigc::mem_fun( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::Error ));
+      MessagingHub::Instance().fatalError.connect( sigc::bind( sigc::mem_fun( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::FatalError ));
+      MessagingHub::Instance().warning.connect(sigc::bind( sigc::mem_fun( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::Warning ));
+      MessagingHub::Instance().infoMessage.connect( sigc::bind( sigc::mem_fun( *this, &ASC_PG_App:: messageDialog ), MessagingHubBase::InfoMessage ));
    }
 
    return result;
@@ -516,6 +537,11 @@ bool ASC_PG_Dialog::eventKeyDown(const SDL_KeyboardEvent *key){
 
 
 
+bool ASC_PG_Dialog::quitModalLoopW(PG_Button* button, int value )
+{
+   return quitModalLoop( value );
+}
+
 bool ASC_PG_Dialog::quitModalLoop(int value )
 {
    SetModalStatus( value );
@@ -632,7 +658,7 @@ class   NewStringChooser : public ASC_PG_Dialog {
    int button;
    int item;
    
-   bool buttonpressed( int i )
+   bool buttonpressed( PG_Widget* w, int i )
    {
       button = i;
       QuitModal();
@@ -654,7 +680,7 @@ class   NewStringChooser : public ASC_PG_Dialog {
       {
          listbox = new PG_ListBox( this, PG_Rect( 10, 30, Width()-140, Height() - 40) );
          listbox->SetMultiSelect( false );
-         listbox->sigSelectItem.connect( SigC::slot( *this, &NewStringChooser::itemSelected ));
+         listbox->sigSelectItem.connect( sigc::mem_fun( *this, &NewStringChooser::itemSelected ));
 
          int counter = 0;
          for ( vector<ASCString>::const_iterator i = _strings.begin(); i != _strings.end(); ++i ) {
@@ -666,7 +692,7 @@ class   NewStringChooser : public ASC_PG_Dialog {
 
          counter = 0;
          for ( vector<ASCString>::const_iterator i = _buttons.begin(); i != _buttons.end(); ++i ) {
-            AddStandardButton(*i)->sigClick.connect( SigC::bind( SigC::slot( *this, & NewStringChooser::buttonpressed ),counter ));
+            AddStandardButton(*i)->sigClick.connect( sigc::bind( sigc::mem_fun( *this, & NewStringChooser::buttonpressed ),counter ));
             ++counter;
          }
       }
@@ -701,7 +727,7 @@ class MultiLineEditorDialog  : public ASC_PG_Dialog {
       {
          editor = new PG_MultiLineEdit( this, PG_Rect( 10, 40, Width() - 20, Height() - 80 ) );
          editor->SetText( textToEdit );
-         AddStandardButton( "OK" )->sigClick.connect( SigC::bind( SigC::slot( *this, &MultiLineEditorDialog::quitModalLoop ), 1 ));
+         AddStandardButton( "OK" )->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &MultiLineEditorDialog::quitModalLoopW ), 1 ));
       }
 
       ASCString GetEditedText() { return editor->GetText(); };
@@ -763,7 +789,7 @@ class StringEditor  : public ASC_PG_Dialog {
       {
          editor = new PG_LineEdit( this, PG_Rect( 10, 40, Width() - 20, 25 ) );
          editor->SetText( textToEdit );
-         AddStandardButton( "OK" )->sigClick.connect( SigC::bind( SigC::slot( *this, &StringEditor::quitModalLoop ), 1 ));
+         AddStandardButton( "OK" )->sigClick.connect( sigc::bind( sigc::mem_fun( *this, &StringEditor::quitModalLoopW ), 1 ));
       }
 
       ASCString GetEditedText() { return editor->GetText(); };
diff --git a/source/paradialog.h b/source/paradialog.h
index ca9556b..7150e09 100644
--- a/source/paradialog.h
+++ b/source/paradialog.h
@@ -22,6 +22,7 @@
 #ifndef paradialogH
  #define paradialogH
 
+#include <vector>
 #include "global.h"
 
 #include <sigc++/sigc++.h>
@@ -53,15 +54,16 @@
 
 class AutoProgressBar;
 
-class StartupScreen: public SigC::Object {
-       PG_Label* infoLabel;
+class StartupScreen: public sigc::trackable {
+       vector<PG_Label*> infoLabels;
        PG_Label* versionLabel;
        PG_ThemeWidget* background;
        AutoProgressBar* progressBar; 
        Surface fullscreenImage;
-        void disp( const ASCString& s );
+       void disp( const ASCString& s );
+       void dispLine( const ASCString& s, int line );
      public:
-         StartupScreen( const ASCString& filename, SigC::Signal0<void>& ticker );        
+         StartupScreen( const ASCString& filename, sigc::signal<void>& ticker );        
          ~StartupScreen();
 };
 
@@ -106,7 +108,7 @@ class StartupScreen: public SigC::Object {
 
        void SetNewScreenSurface( SDL_Surface* surface );
        
-       // SigC::Signal0<void> sigQuit;
+       // sigc::signal<void> sigQuit;
       // PG_Theme* LoadTheme(const char* xmltheme, bool asDefault = true, const char* searchpath = NULL );
  };
 
@@ -128,7 +130,8 @@ class ASC_PG_Dialog : public PG_Window {
    protected:
       PG_MessageObject* caller;
       virtual bool closeWindow();
-      bool quitModalLoop(int value ); 
+      bool quitModalLoopW(PG_Button* button, int value );
+      bool quitModalLoop(int value );
       virtual bool eventKeyDown(const SDL_KeyboardEvent *key);
     public:
        ASC_PG_Dialog ( PG_Widget *parent, const PG_Rect &r, const ASCString& windowtext, WindowFlags flags=DEFAULT, const ASCString& style="Window", int heightTitlebar=25);
@@ -174,7 +177,7 @@ class ColoredBar : public PG_ThemeWidget {
 class SpecialDisplayWidget : public PG_Widget {
    public:
 
-      typedef SigC::Signal3<void,const PG_Rect&, const ASCString&, const PG_Rect&> DisplayHook;
+      typedef sigc::signal<void,const PG_Rect&, const ASCString&, const PG_Rect&> DisplayHook;
       
       DisplayHook display;
       
diff --git a/source/player.cpp b/source/player.cpp
index 1482862..f748f29 100644
--- a/source/player.cpp
+++ b/source/player.cpp
@@ -204,9 +204,9 @@ void Player :: setParentMap( GameMap* map, int pos )
 {
    parentMap = map;
    player = pos;
-   parentMap->sigPlayerTurnBegins.connect( SigC::slot( *this, &Player::turnBegins ));   
-   parentMap->sigPlayerUserInteractionBegins.connect( SigC::slot( *this, &Player::userInteractionBegins ));   
-   parentMap->sigPlayerTurnEnds.connect( SigC::slot( *this, &Player::turnEnds ));   
+   parentMap->sigPlayerTurnBegins.connect( sigc::mem_fun( *this, &Player::turnBegins ));   
+   parentMap->sigPlayerUserInteractionBegins.connect( sigc::mem_fun( *this, &Player::userInteractionBegins ));   
+   parentMap->sigPlayerTurnEnds.connect( sigc::mem_fun( *this, &Player::turnEnds ));   
 }
 
 
diff --git a/source/player.h b/source/player.h
index a6937cc..00c41c9 100644
--- a/source/player.h
+++ b/source/player.h
@@ -53,7 +53,7 @@ enum DiplomaticStates { WAR, TRUCE, PEACE, PEACE_SV, ALLIANCE };
 extern const char* diplomaticStateNames[diplomaticStateNum+1];
 
 
-class DiplomaticStateVector : public SigC::Object {
+class DiplomaticStateVector : public sigc::trackable {
 
       friend class AllianceSetupWidget;
       friend class ChangeDiplomaticState;
@@ -95,7 +95,7 @@ class GameMap;
 
 
 //! the different players in ASC. There may be 8 players (0..7) and neutral units (8)
-class Player : public SigC::Object {
+class Player : public sigc::trackable {
       int player;
       GameMap* parentMap;
       
diff --git a/source/prehistoricevents.cpp b/source/prehistoricevents.cpp
index e25b041..e97bcf5 100644
--- a/source/prehistoricevents.cpp
+++ b/source/prehistoricevents.cpp
@@ -432,7 +432,7 @@ PrehistoricEventStructure::LargeTriggerData :: ~LargeTriggerData ( )
 
 PrehistoricEventStructure :: PrehistoricEventStructure()
 {
-   a.action= 255;
+   a.action= 127;
    a.saveas = 0;
    a.num = 0;
    player = 0;
diff --git a/source/reactionfire.cpp b/source/reactionfire.cpp
index 01f6fdc..d8995e1 100644
--- a/source/reactionfire.cpp
+++ b/source/reactionfire.cpp
@@ -249,7 +249,7 @@ int tsearchreactionfireingunits :: attack( Vehicle* attacker, Vehicle* target, c
                      }
                   }
 
-                  tunitattacksunit battle ( attacker, target, 0, atw->num[num], true );
+                  tunitattacksunit battle ( attacker, target, false, atw->num[num], true );
                   // int nwid = target->networkid;
 
                   if ( context.display && visibility)
@@ -288,12 +288,16 @@ int  tsearchreactionfireingunits :: checkfield ( const MapCoordinate3D& pos, Veh
          while ( ul  &&  !result ) {
             punitlist next = ul->next;
             
-            int r = attack( ul->eht, vehicle, context );
-            if ( r > 0 )
-               ++attacks;
-            
-            if ( r > 1 )
-               result = 1;
+            if ( ul->eht ) { // the unit
+                int nwid = ul->eht->networkid;
+                int r = attack( ul->eht, vehicle, context );
+                ul->eht = gamemap->getUnit(nwid); // could have been destroyed and be null now
+                if ( r > 0 )
+                   ++attacks;
+
+                if ( r > 1 )
+                   result = 1;
+            }
             
             ul = next;
          } /* endwhile */
diff --git a/source/replay.cpp b/source/replay.cpp
index 1e7182a..c5d89c4 100644
--- a/source/replay.cpp
+++ b/source/replay.cpp
@@ -151,10 +151,10 @@ class ReplayRecorderWatcherGlobal {
 } replayRecorderWatcherGlobal;
 
 
- class ReplayRecorder : public SigC::Object {
+ class ReplayRecorder : public sigc::trackable {
    
    VideoRecorder* rec;
-   SigC::Connection connection;
+   sigc::connection connection;
    bool movieModeStorage;
    ASCString lastFilename;
    
@@ -177,7 +177,7 @@ class ReplayRecorderWatcherGlobal {
          }
          
          if ( !connection.connected() )
-            connection = postScreenUpdate.connect( SigC::slot( *this, &ReplayRecorder::screenUpdate ));
+            connection = postScreenUpdate.connect( sigc::mem_fun( *this, &ReplayRecorder::screenUpdate ));
       }
       
       void pause()
@@ -638,7 +638,7 @@ void viewOwnReplay( Player& player )
 }
 
 
-void checkforreplay ( void )
+void checkforreplay ( )
 {
    if ( !actmap->replayinfo )
       return;
@@ -2284,5 +2284,5 @@ void trunreplay :: firstinit ( void )
 
 void hookReplayToSystem()
 {
-   ActionContainer::commitCommand.connect( SigC::slot( &logActionToReplay ));
+   ActionContainer::commitCommand.connect( sigc::ptr_fun( &logActionToReplay ));
 }
diff --git a/source/resourcenet.cpp b/source/resourcenet.cpp
index a675706..22a5974 100644
--- a/source/resourcenet.cpp
+++ b/source/resourcenet.cpp
@@ -29,7 +29,7 @@
 #include "dialog.h"
 #include "cannedmessages.h"
 
-SigC::Signal0<void> tributeTransferred;
+sigc::signal<void> tributeTransferred;
 
 void MapNetwork :: searchfield ( int x, int y, int dir )
 {
diff --git a/source/resourcenet.h b/source/resourcenet.h
index 76df9a9..be2a32d 100644
--- a/source/resourcenet.h
+++ b/source/resourcenet.h
@@ -170,7 +170,7 @@ class GetResourceUsage : public ResourceChangeNet {
 
 extern void transfer_all_outstanding_tribute( Player& player );
 
-extern SigC::Signal0<void> tributeTransferred;
+extern sigc::signal<void> tributeTransferred;
 
 extern bool compareMapResources( GameMap* currentMap, GameMap* replaymap, int player, ASCString* log );
 
diff --git a/source/resourceplacementdialog.cpp b/source/resourceplacementdialog.cpp
index dc08539..0b5a2d0 100644
--- a/source/resourceplacementdialog.cpp
+++ b/source/resourceplacementdialog.cpp
@@ -86,7 +86,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
 
   int xFuelOffSetValue = xFuelWidgetPos + fuelOffSetLabel->Width();
   fuelOffSetValue = new PG_LineEdit(this, PG_Rect(xFuelOffSetValue, yFuelOffSetLabelPos, 40, hFuelWidget));
-  fuelOffSetValue->SetText(int2String(ResourcePlacement::MAXFUELVALUE));
+  fuelOffSetValue->SetText(ASCString::toString(ResourcePlacement::MAXFUELVALUE));
   fuelOffSetValue->SetValidKeys("1234567890");
   fuelOffSetValue->SetEditable(false);
 
@@ -94,7 +94,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   fuelOffSetSlider = new PG_Slider(this, PG_Rect(xFuelWidgetPos, yFuelOffSetSliderPos, xsize - (xFuelWidgetPos + leftIndent) , hFuelWidget), PG_ScrollBar::HORIZONTAL);
   fuelOffSetSlider->SetRange(ResourcePlacement::MINFUELVALUE, ResourcePlacement::MAXFUELVALUE);
   fuelOffSetSlider->SetPosition(atoi(fuelOffSetValue->GetText()));
-  fuelOffSetSlider->sigSlide.connect(slot(*this, &ResourcePlacementDialog::scrollTrackEventFuel));
+  fuelOffSetSlider->sigSlide.connect(sigc::mem_fun(*this, &ResourcePlacementDialog::scrollTrackEventFuel));
 
 
   //MaterialOffSet
@@ -104,7 +104,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
 
   int xMaterialOffSetValue = xFuelWidgetPos + materialOffSetLabel->Width();
   materialOffSetValue = new PG_LineEdit(this, PG_Rect(xMaterialOffSetValue, yMaterialOffSetLabelPos, 40, hFuelWidget));
-  materialOffSetValue->SetText(int2String(ResourcePlacement::MAXMATERIALVALUE));
+  materialOffSetValue->SetText(ASCString::toString(ResourcePlacement::MAXMATERIALVALUE));
   materialOffSetValue->SetValidKeys("1234567890");
   materialOffSetValue->SetEditable(false);
 
@@ -112,7 +112,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   materialOffSetSlider = new PG_Slider(this, PG_Rect(xFuelWidgetPos, yMaterialOffSetSliderPos, xsize - (xFuelWidgetPos + leftIndent) , hFuelWidget), PG_ScrollBar::HORIZONTAL);
   materialOffSetSlider->SetRange(ResourcePlacement::MINMATERIALVALUE, ResourcePlacement::MAXMATERIALVALUE);
   materialOffSetSlider->SetPosition(atoi(materialOffSetValue->GetText()));
-  materialOffSetSlider->sigSlide.connect(slot(*this, &ResourcePlacementDialog::scrollTrackEventMaterial));
+  materialOffSetSlider->sigSlide.connect(sigc::mem_fun(*this, &ResourcePlacementDialog::scrollTrackEventMaterial));
 
   //FuelFreeRatio
   int yFuelFreeRatioLabelPos = yMaterialOffSetSliderPos + hFuelWidget + yOffSet;
@@ -121,7 +121,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   
   int xFuelFreeRatioValue = xFuelWidgetPos + fuelFreeRatioLabel->Width();
   fuelFreeRatioValue = new PG_LineEdit(this, PG_Rect(xFuelFreeRatioValue, yFuelFreeRatioLabelPos, 40, hFuelWidget));
-  fuelFreeRatioValue->SetText(int2String(0));
+  fuelFreeRatioValue->SetText(ASCString::toString(0));
   fuelFreeRatioValue->SetValidKeys("1234567890");
   fuelFreeRatioValue->SetEditable(false);
   
@@ -129,7 +129,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   fuelFreeRatioSlider = new PG_Slider(this, PG_Rect(xFuelWidgetPos, yFuelFreeRatioSliderPos, xsize - (xFuelWidgetPos + leftIndent) , hFuelWidget), PG_ScrollBar::HORIZONTAL);
   fuelFreeRatioSlider->SetRange(0, 100);
   fuelFreeRatioSlider->SetPosition(atoi(fuelFreeRatioValue->GetText()));
-  fuelFreeRatioSlider->sigSlide.connect(slot(*this, &ResourcePlacementDialog::scrollTrackEventFuelFreeRatio));
+  fuelFreeRatioSlider->sigSlide.connect(sigc::mem_fun(*this, &ResourcePlacementDialog::scrollTrackEventFuelFreeRatio));
   
   //MaterialFreeRatio
   int yMaterialFreeRatioLabelPos = yFuelFreeRatioSliderPos + hFuelWidget ;
@@ -138,7 +138,7 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   
   int xMaterialFreeRatioValue = xFuelWidgetPos + materialFreeRatioLabel->Width();
   materialFreeRatioValue = new PG_LineEdit(this, PG_Rect(xMaterialFreeRatioValue, yMaterialFreeRatioLabelPos, 40, hFuelWidget));
-  materialFreeRatioValue->SetText(int2String(0));
+  materialFreeRatioValue->SetText(ASCString::toString(0));
   materialFreeRatioValue->SetValidKeys("1234567890");
   materialFreeRatioValue->SetEditable(false);
   
@@ -146,14 +146,14 @@ ResourcePlacementDialog::ResourcePlacementDialog( ) :
   materialFreeRatioSlider = new PG_Slider(this, PG_Rect(xFuelWidgetPos, yMaterialFreeRatioSliderPos, xsize - (xFuelWidgetPos + leftIndent) , hFuelWidget), PG_ScrollBar::HORIZONTAL);
   materialFreeRatioSlider->SetRange(0, 100);
   materialFreeRatioSlider->SetPosition(atoi(materialFreeRatioValue->GetText()));
-  materialFreeRatioSlider->sigSlide.connect(slot(*this, &ResourcePlacementDialog::scrollTrackEventMaterialFreeRatio));
+  materialFreeRatioSlider->sigSlide.connect(sigc::mem_fun(*this, &ResourcePlacementDialog::scrollTrackEventMaterialFreeRatio));
   
   //Buttons OK and Cancel
 
-  (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &ResourcePlacementDialog::buttonEvent ));
-  (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &ResourcePlacementDialog::closeWindow ));
+  (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect( sigc::mem_fun( *this, &ResourcePlacementDialog::buttonEvent ));
+  (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &ResourcePlacementDialog::closeWindow )));
 
-  sigClose.connect( SigC::slot( *this, &ResourcePlacementDialog::closeWindow ));
+  sigClose.connect( sigc::mem_fun( *this, &ResourcePlacementDialog::closeWindow ));
 }
 
 
@@ -183,26 +183,24 @@ bool ResourcePlacementDialog::buttonEvent( PG_Button* button ) {
 
 
 bool ResourcePlacementDialog::scrollTrackEventMaterial(long data) {
-  materialOffSetValue->SetText( int2String(data));
+  materialOffSetValue->SetText( ASCString::toString( (int) data));
   return true;
 }
 
 bool ResourcePlacementDialog::scrollTrackEventFuel(long data) {
-  stringstream s;
-  s << data;
-  fuelOffSetValue->SetText( s.str().c_str());
+  fuelOffSetValue->SetText( ASCString::toString( (int) data ));
   return true;
 }
 
 
 bool ResourcePlacementDialog::scrollTrackEventMaterialFreeRatio(long data){
-   materialFreeRatioValue->SetText( int2String(data));
+   materialFreeRatioValue->SetText( ASCString::toString((int)data));
   return true;
 }
 
 
 bool ResourcePlacementDialog::scrollTrackEventFuelFreeRatio(long data){
-  fuelFreeRatioValue->SetText(int2String(data));
+  fuelFreeRatioValue->SetText(ASCString::toString((int)data));
   return true;
 }
 
diff --git a/source/resourceplacementdialog.h b/source/resourceplacementdialog.h
index dce4a69..57c1697 100644
--- a/source/resourceplacementdialog.h
+++ b/source/resourceplacementdialog.h
@@ -33,11 +33,6 @@ protected:
   static const int ysize;
   static const int xOffSet;
   static const int yOffSet;
-  static const char* int2String(int i) {
-    stringstream s;
-    s << i;
-    return s.str().c_str();
-  }
 
   static const int leftIndent;
 
diff --git a/source/sdl/Makefile.in b/source/sdl/Makefile.in
index 054a6cf..ad6260d 100644
--- a/source/sdl/Makefile.in
+++ b/source/sdl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -285,6 +285,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/sdl/events.cpp b/source/sdl/events.cpp
index 64ea6f5..f49f5ec 100644
--- a/source/sdl/events.cpp
+++ b/source/sdl/events.cpp
@@ -389,7 +389,7 @@ int processEvents ( )
 bool syncGraphics = true;
 
 
-SigC::Signal1<void,const SDL_Surface*> postScreenUpdate;
+sigc::signal<void,const SDL_Surface*> postScreenUpdate;
 
 void queueOperation( GraphicsQueueOperation* gqo, bool wait, bool forceAsync )
 {
diff --git a/source/sdl/graphicsqueue.h b/source/sdl/graphicsqueue.h
index 5129466..2e24f8d 100644
--- a/source/sdl/graphicsqueue.h
+++ b/source/sdl/graphicsqueue.h
@@ -69,6 +69,6 @@ class GraphicsQueueOperation {
 
  extern void queueOperation( GraphicsQueueOperation* gqo, bool wait = false, bool forceAsync = false );
 
- extern SigC::Signal1<void,const SDL_Surface*> postScreenUpdate;
+ extern sigc::signal<void,const SDL_Surface*> postScreenUpdate;
 
 #endif
diff --git a/source/sdl/sdl.vcproj b/source/sdl/sdl.vcproj
index 106d946..11f83c4 100644
--- a/source/sdl/sdl.vcproj
+++ b/source/sdl/sdl.vcproj
@@ -22,7 +22,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories=""$(SDL)/include";../../../libs/getopt;../.;../../../libs/jpeg;../../../libs/bzlib;"$(Libsigcpp)""
+				AdditionalIncludeDirectories=""$(SDL)/include";../../../libs/getopt;../.;../../../libs/jpeg;../../../libs/bzlib;"$(libsigcpp2)""
 				PreprocessorDefinitions="WIN32,_DEBUG,_LIB,_WIN32_,_MSC_VER,_NOASM_,WIN32_LEAN_AND_MEAN,_SDL_,XMD_H"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -78,7 +78,7 @@
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="TRUE"
 				OptimizeForProcessor="2"
-				AdditionalIncludeDirectories=""$(SDL)/include";../../../libs/getopt;../.;../../../libs/jpeg;../../../libs/bzlib;"$(Libsigcpp)""
+				AdditionalIncludeDirectories=""$(SDL)/include";../../../libs/getopt;../.;../../../libs/jpeg;../../../libs/bzlib;"$(libsigcpp2)""
 				PreprocessorDefinitions="WIN32,NDEBUG,_LIB;_WIN32_,_MSC_VER,_NOASM_,WIN32_LEAN_AND_MEAN,_SDL_,XMD_H"
 				StringPooling="TRUE"
 				RuntimeLibrary="2"
diff --git a/source/sg.cpp b/source/sg.cpp
index d7c53dc..06a3cda 100644
--- a/source/sg.cpp
+++ b/source/sg.cpp
@@ -43,7 +43,7 @@
    available. They are not modified during runtime in any way and are referenced
    by the indiividual instances of Vehicle and Building. 
    The Vehicletype has information that are shared  by all vehicles of this 'type', like speed, 
-   weapon systems, accessable terrain etc, while the vehicle stores things like remaining movement for this
+   weapon systems, accessible terrain etc, while the vehicle stores things like remaining movement for this
    turn, ammo, fuel and cargo.
    
    The primary contents of a GameMap are its fields ( #tfield ). Each field has again a pointer 
@@ -176,6 +176,7 @@
 #include "dialogs/taskmanager.h"
 #include "autotraining.h"
 #include "spfst-legacy.h"
+#include "dialogs/eventinfo.h"
 
 #include "lua/luarunner.h"
 #include "lua/luastate.h"
@@ -286,20 +287,20 @@ void hookGuiToMap( GameMap* map )
 {
    if ( !map->getGuiHooked() ) {
 
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &viewcomp ) );
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( repaintMap.slot() ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &viewcomp ) );
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( repaintMap.make_slot() ));
       
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &positionCursor ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( SigC::slot( &checkforreplay )));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &checkForNewResearch ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &viewunreadmessages ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &checkJournal ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &checkUsedASCVersions ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( updateFieldInfo.slot() ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &positionCursor ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( sigc::ptr_fun( &checkforreplay )));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &checkForNewResearch ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &viewunreadmessages ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &checkJournal ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &checkUsedASCVersions ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( updateFieldInfo.make_slot() ));
 
-      map->sigPlayerUserInteractionEnds.connect( SigC::slot( &runPendingTasks ));
+      map->sigPlayerUserInteractionEnds.connect( sigc::ptr_fun( &runPendingTasks ));
 
-      map->sigPlayerTurnHasEnded.connect( SigC::slot( viewOwnReplay));
+      map->sigPlayerTurnHasEnded.connect( sigc::ptr_fun( &viewOwnReplay));
       map->guiHooked();
    }
 }
@@ -1274,6 +1275,9 @@ void executeUserAction ( tuseractions action )
       case ua_createUnitCostList: createUnitCostList();
          break;
          
+      case ua_eventInfo: viewEventInfo( actmap );
+         break;
+
       default:
     	 break;
       };
@@ -1344,7 +1348,7 @@ void loadLegacyFonts()
 
 
 
-class GameThreadParams: public SigC::Object
+class GameThreadParams: public sigc::trackable
 {
    private:
       bool exit() { exitMainloop = true; return true; };
@@ -1354,7 +1358,7 @@ class GameThreadParams: public SigC::Object
       bool exitMainloop;
       GameThreadParams( ASC_PG_App& app ) : application ( app ), exitMainloop(false) 
       {
-         app.sigQuit.connect( SigC::slot( *this, &GameThreadParams::exit ));
+         app.sigQuit.connect( sigc::hide( sigc::mem_fun( *this, &GameThreadParams::exit )));
       };
 };
 
@@ -1367,9 +1371,9 @@ void checkGameEvents( GameMap* map,const Command& command )
 
 int gamethread ( void* data )
 {
-   GameMap::sigMapDeletion.connect( SigC::slot( &resetActions ));
-   GameMap::sigMapDeletion.connect( SigC::slot( &resetActmap ));
-   GameMap::sigPlayerTurnEndsStatic.connect( SigC::slot( automaticTrainig ));
+   GameMap::sigMapDeletion.connect( sigc::ptr_fun( &resetActions ));
+   GameMap::sigMapDeletion.connect( sigc::ptr_fun( &resetActmap ));
+   GameMap::sigPlayerTurnEndsStatic.connect( sigc::ptr_fun( &automaticTrainig ));
    
    TaskContainer::registerHooks();
    
@@ -1387,6 +1391,8 @@ int gamethread ( void* data )
       loadLegacyFonts();
       loaddata();
       
+      suppressMapTriggerExecution = false;
+
       mtl = loadStartupMap( gtp->filename.c_str() );
    }
    catch ( const ParsingError & err ) {
@@ -1420,9 +1426,7 @@ int gamethread ( void* data )
 
 
 //   ActionContainer::postActionExecution.connect( SigC::slot( &checkGameEvents ));
-            
-   suppressMapTriggerExecution = false;
-   
+
    static ShowNewTechnology showNewTechs;
    setResearchPresenter( &showNewTechs );
 
@@ -1524,9 +1528,9 @@ static void __runResearch( Player& player ){
 
 void deployMapPlayingHooks ( GameMap* map )
 {
-   map->sigPlayerTurnBegins.connect( SigC::slot( initReplayLogging ));
-   map->sigPlayerTurnBegins.connect( SigC::slot( transfer_all_outstanding_tribute ));   
-   map->sigPlayerTurnBegins.connect( SigC::slot( __runResearch ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &initReplayLogging ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &transfer_all_outstanding_tribute ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &__runResearch ));
 }
 
 
@@ -1539,12 +1543,12 @@ void deployMapPlayingHooks ( GameMap* map )
 #include "clparser/asc.cpp"
 
 
-class ResourceLogger: public SigC::Object {
+class ResourceLogger: public sigc::trackable {
       ofstream s;
    public:
       ResourceLogger() {
          s.open("resource-log", ios_base::out | ios_base::trunc );
-         MessagingHub::Instance().logCategorizedMessage.connect( SigC::slot( *this, &ResourceLogger::message ));
+         MessagingHub::Instance().logCategorizedMessage.connect( sigc::mem_fun( *this, &ResourceLogger::message ));
          MessagingHub::Instance().setLoggingCategory("ResourceWork", true);
       };
 
@@ -1666,7 +1670,7 @@ int main(int argc, char *argv[] )
 
    MessagingHub::Instance().setVerbosity( cl->r() );
    StdIoErrorHandler stdIoErrorHandler(false);
-   MessagingHub::Instance().exitHandler.connect( SigC::bind( SigC::slot( exit_asc ), -1 ));
+   MessagingHub::Instance().exitHandler.connect( sigc::bind( &exit_asc, -1 ));
 
    // ResourceLogger rl;
 
@@ -1698,15 +1702,15 @@ int main(int argc, char *argv[] )
    soundSystem.setEffectVolume ( CGameOptions::Instance()->sound.soundVolume );
 
    
-   tspfldloaders::mapLoaded.connect( SigC::slot( deployMapPlayingHooks ));
+   tspfldloaders::mapLoaded.connect( sigc::ptr_fun( &deployMapPlayingHooks ));
 
    PG_FileArchive archive( argv[0] );
 
    ASC_PG_App app ( "asc2_dlg" );
 
-   app.sigAppIdle.connect ( SigC::slot( mainloopidle ));
+   app.sigAppIdle.connect ( sigc::ptr_fun( &mainloopidle ));
 
-   cursorMoved.connect( updateFieldInfo );
+   cursorMoved.connect( updateFieldInfo.make_slot() );
 
    
    ScreenResolutionSetup screenResolutionSetup ( *cl );
diff --git a/source/sg.h b/source/sg.h
index 8330905..c25aa9e 100644
--- a/source/sg.h
+++ b/source/sg.h
@@ -46,7 +46,7 @@ enum tuseractions { ua_repainthard,     ua_repaint, ua_help, ua_mainmenu, ua_mnt
                     ua_showTechAdapter, ua_showUnitEndurance, ua_getMemoryFootprint, ua_viewlayerhelp, ua_showCargoLayer, ua_showMiningPower, ua_emailOptions, ua_createReminder, ua_undo, ua_redo,
                     ua_writeLuaCommands, ua_runLuaCommands, ua_recompteview, ua_unitGuideDialog, ua_turnUnitLeft, ua_turnUnitRight,
                     ua_chooseTechnology, ua_actionManager, ua_viewReactionfireOverlay, ua_unitAiOptions, ua_showUsedPackages, ua_runOpenTasks, ua_taskManager, ua_viewUnitinfoOverlay, ua_viewUnitexperienceOverlay,
-                    ua_createUnitCostList };
+                    ua_createUnitCostList, ua_eventInfo };
 
 extern void executeUserAction ( tuseractions action );
 
diff --git a/source/sgstream.cpp b/source/sgstream.cpp
index dbe5d8b..06f460c 100644
--- a/source/sgstream.cpp
+++ b/source/sgstream.cpp
@@ -400,7 +400,7 @@ int readgameoptions ( const ASCString& filename )
      if ( !filename.empty() ) {
         CGameOptions::Instance()->setChanged();
         if ( writegameoptions( filename ))
-           displayLogMessage ( 6, "A config file has been sucessfully written to " + filename + " ");
+           displayLogMessage ( 6, "A config file has been successfully written to " + filename + " ");
         else {
            warningMessage("Unable to write file " + filename );
            displayLogMessage ( 6, "Failed to write config file to " + filename + " ");
diff --git a/source/simplestream.cpp b/source/simplestream.cpp
index a2936d6..096ca24 100644
--- a/source/simplestream.cpp
+++ b/source/simplestream.cpp
@@ -268,10 +268,7 @@ tn_file_buf_stream::~tn_file_buf_stream()
    if (_mode == writing)
       writebuffer();
 
-   int res = fclose( fp );
-   if ( res != 0 ) 
-      throw  tfileerror ( getDeviceName() + " : " + strerror(errno));
-      
+   fclose( fp );
    _mode = uninitialized;
 
 }
diff --git a/source/spfst.cpp b/source/spfst.cpp
index 5068972..97f6261 100644
--- a/source/spfst.cpp
+++ b/source/spfst.cpp
@@ -42,16 +42,16 @@
 
 #include "spfst-legacy.h"
 
-SigC::Signal0<void> repaintMap;
-SigC::Signal0<void> repaintDisplay;
-SigC::Signal0<void> updateFieldInfo;
-SigC::Signal0<void> cursorMoved;
-SigC::Signal1<void,ContainerBase*> showContainerInfo;
-SigC::Signal1<void,VehicleType*> showVehicleTypeInfo;
-SigC::Signal0<void> viewChanged;
-SigC::Signal1<void,GameMap*> mapChanged;
-SigC::Signal0<bool> idleEvent;
-SigC::Signal1<void, const Context&> fieldCrossed;
+sigc::signal<void> repaintMap;
+sigc::signal<void> repaintDisplay;
+sigc::signal<void> updateFieldInfo;
+sigc::signal<void> cursorMoved;
+sigc::signal<void,ContainerBase*> showContainerInfo;
+sigc::signal<void,VehicleType*> showVehicleTypeInfo;
+sigc::signal<void> viewChanged;
+sigc::signal<void,GameMap*> mapChanged;
+sigc::signal<bool> idleEvent;
+sigc::signal<void, const Context&> fieldCrossed;
 
 
 
diff --git a/source/spfst.h b/source/spfst.h
index a122451..985827f 100644
--- a/source/spfst.h
+++ b/source/spfst.h
@@ -164,18 +164,18 @@ extern int getheightdelta ( const ContainerBase* c1, const ContainerBase* c2 );
 //! }@
 
 
-extern SigC::Signal0<void> repaintMap;
-extern SigC::Signal0<void> repaintDisplay;
-extern SigC::Signal0<void> updateFieldInfo;
-extern SigC::Signal0<void> cursorMoved;
+extern sigc::signal<void> repaintMap;
+extern sigc::signal<void> repaintDisplay;
+extern sigc::signal<void> updateFieldInfo;
+extern sigc::signal<void> cursorMoved;
 
 //! the view of the player onto the map changed, for example because he scrolled the map
-extern SigC::Signal0<void> viewChanged;
-extern SigC::Signal1<void,GameMap*> mapChanged;
-extern SigC::Signal1<void,ContainerBase*> showContainerInfo;
-extern SigC::Signal1<void,VehicleType*> showVehicleTypeInfo;
-extern SigC::Signal0<bool> idleEvent;
-extern SigC::Signal1<void, const Context&> fieldCrossed;
+extern sigc::signal<void> viewChanged;
+extern sigc::signal<void,GameMap*> mapChanged;
+extern sigc::signal<void,ContainerBase*> showContainerInfo;
+extern sigc::signal<void,VehicleType*> showVehicleTypeInfo;
+extern sigc::signal<bool> idleEvent;
+extern sigc::signal<void, const Context&> fieldCrossed;
 
 extern void displaymap();
 
diff --git a/source/stdio-errorhandler.cpp b/source/stdio-errorhandler.cpp
index c6b4370..b1edcf4 100644
--- a/source/stdio-errorhandler.cpp
+++ b/source/stdio-errorhandler.cpp
@@ -31,14 +31,14 @@ void StdIoErrorHandler::messageLogger( const ASCString& msg, int level )
 
 StdIoErrorHandler::StdIoErrorHandler( bool quitOnFatalError )
 {
-   MessagingHub::Instance().warning.connect( SigC::slot( *this, &StdIoErrorHandler::printStderr ));
-   MessagingHub::Instance().error.connect( SigC::slot( *this, &StdIoErrorHandler::printStderr ));
-   MessagingHub::Instance().fatalError.connect( SigC::slot( *this, &StdIoErrorHandler::printStderr ));
-   MessagingHub::Instance().infoMessage.connect( SigC::slot( *this, &StdIoErrorHandler::printStdout ));
-   MessagingHub::Instance().logMessage.connect( SigC::slot( *this, &StdIoErrorHandler::messageLogger ));
+   MessagingHub::Instance().warning.connect( sigc::mem_fun( *this, &StdIoErrorHandler::printStderr ));
+   MessagingHub::Instance().error.connect( sigc::mem_fun( *this, &StdIoErrorHandler::printStderr ));
+   MessagingHub::Instance().fatalError.connect( sigc::mem_fun( *this, &StdIoErrorHandler::printStderr ));
+   MessagingHub::Instance().infoMessage.connect( sigc::mem_fun( *this, &StdIoErrorHandler::printStdout ));
+   MessagingHub::Instance().logMessage.connect( sigc::mem_fun( *this, &StdIoErrorHandler::messageLogger ));
 
    if ( quitOnFatalError )
-      MessagingHub::Instance().exitHandler.connect( SigC::bind( SigC::slot( exit ), -1 ));
+      MessagingHub::Instance().exitHandler.connect( sigc::bind( &exit , -1 ));
 
 }
 
diff --git a/source/stdio-errorhandler.h b/source/stdio-errorhandler.h
index b3feeef..aa093bf 100644
--- a/source/stdio-errorhandler.h
+++ b/source/stdio-errorhandler.h
@@ -16,7 +16,7 @@
 #include "ascstring.h"
 
 
- class StdIoErrorHandler : public SigC::Object {
+ class StdIoErrorHandler : public sigc::trackable {
        void printStdout( const ASCString& msg );
        void printStderr( const ASCString& msg );
        void messageLogger( const ASCString& msg, int level );
diff --git a/source/strtmesg.cpp b/source/strtmesg.cpp
index 27eb133..a7c0189 100644
--- a/source/strtmesg.cpp
+++ b/source/strtmesg.cpp
@@ -21,7 +21,7 @@
 
 // These strings should be the same as the release tags in CVS !
 // don't alter the format of this string, as quite a lot of tools evaluate it!
-const char* asc_release="ASC2.6.0.0";
+const char* asc_release="ASC2.6.1.0";
 
 #include <stdio.h>
 #include "strtmesg.h"
diff --git a/source/tasks/Makefile.in b/source/tasks/Makefile.in
index 8f29708..d12dc78 100644
--- a/source/tasks/Makefile.in
+++ b/source/tasks/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -286,6 +286,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/tasks/taskcontainer.cpp b/source/tasks/taskcontainer.cpp
index eecc52d..8e0df9f 100644
--- a/source/tasks/taskcontainer.cpp
+++ b/source/tasks/taskcontainer.cpp
@@ -34,8 +34,8 @@ TaskContainer::TaskContainer( GameMap* gamemap )
 {
    this->gamemap = gamemap;
    
-   gamemap->sigPlayerTurnHasEnded.connect( SigC::slot( *this, &TaskContainer::endTurn ));
-   gamemap->sigPlayerTurnBegins.connect( SigC::slot( *this, &TaskContainer::startTurn ));
+   gamemap->sigPlayerTurnHasEnded.connect( sigc::mem_fun( *this, &TaskContainer::endTurn ));
+   gamemap->sigPlayerTurnBegins.connect( sigc::mem_fun( *this, &TaskContainer::startTurn ));
 }            
 
 TaskContainer::~TaskContainer()
@@ -51,8 +51,8 @@ void TaskContainer::hook( GameMap& gamemap )
 
 void TaskContainer::registerHooks()
 {
-   GameMap::sigMapCreation.connect( SigC::slot( &TaskContainer::hook ));
-   ActionContainer::commitCommand.connect( SigC::slot( &TaskContainer::getCommand ));
+   GameMap::sigMapCreation.connect( sigc::ptr_fun( &TaskContainer::hook ));
+   ActionContainer::commitCommand.connect( sigc::ptr_fun( &TaskContainer::getCommand ));
    
 }
 
diff --git a/source/tasks/taskcontainer.h b/source/tasks/taskcontainer.h
index 200c960..c1bf1c0 100644
--- a/source/tasks/taskcontainer.h
+++ b/source/tasks/taskcontainer.h
@@ -29,7 +29,7 @@ class tnstream;
 class Command;
 class MemoryStreamStorage;
 
-class TaskContainer : public AbstractTaskContainer, public SigC::Object {
+class TaskContainer : public AbstractTaskContainer, public sigc::trackable {
       GameMap* gamemap;
       static void hook( GameMap& gamemap );
       static void getCommand( GameMap* gamemap, Command& command );
diff --git a/source/tasks/taskhibernatingcontainer.cpp b/source/tasks/taskhibernatingcontainer.cpp
index 1dbe2ac..72aff67 100644
--- a/source/tasks/taskhibernatingcontainer.cpp
+++ b/source/tasks/taskhibernatingcontainer.cpp
@@ -25,7 +25,7 @@
 
 void TaskHibernatingContainer::registerHooks()
 {
-   GameMap::sigMapCreation.connect( SigC::slot( &TaskHibernatingContainer::hook ));
+   GameMap::sigMapCreation.connect( sigc::ptr_fun( &TaskHibernatingContainer::hook ));
 }
 
 void TaskHibernatingContainer::hook( GameMap& gamemap )
diff --git a/source/tools/Makefile.in b/source/tools/Makefile.in
index 9cebc23..bdef9d9 100644
--- a/source/tools/Makefile.in
+++ b/source/tools/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -295,6 +295,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/tools/infopage.cpp b/source/tools/infopage.cpp
index afe4691..39f8634 100644
--- a/source/tools/infopage.cpp
+++ b/source/tools/infopage.cpp
@@ -506,7 +506,7 @@ void BuildingCargoPage::buildContent() {
         type = addTREntryln(type, cmovemalitypes[h]);
       }
     }
-    addTREntry("Building accessable to", type);
+    addTREntry("Building accessible to", type);
     endTable();
     if ( !cbt.entranceSystems.empty() ) {
       addHeadline("Entrance System", 4);
@@ -734,7 +734,7 @@ void UnitCargoPage::buildContent() {
         type = addTREntryln(type, cmovemalitypes[h]);
       }
     }
-    addTREntry("Unit accessable for", type);
+    addTREntry("Unit accessible for", type);
     endTable();
     if ( !cbt.entranceSystems.empty() ) {
       addHeadline("Entrance System", 4);
diff --git a/source/tools/infopage.h b/source/tools/infopage.h
index d9547c7..8f225f3 100644
--- a/source/tools/infopage.h
+++ b/source/tools/infopage.h
@@ -478,8 +478,8 @@ public:
 };
 
 /**
- at brief  Representation of one the building information page containing the information which ressources
-        the building can provide. Research points are treated as one ressource a building can provide
+ at brief  Representation of one the building information page containing the information which resources
+        the building can provide. Research points are treated as one resource a building can provide
 *@author Kevin Hirschmann
 */
 class BuildingResourcePage: public BuildingInfoPage {
diff --git a/source/tools/lib/Makefile.in b/source/tools/lib/Makefile.in
index fc1364d..068df8e 100644
--- a/source/tools/lib/Makefile.in
+++ b/source/tools/lib/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/tools/linux/Makefile.in b/source/tools/linux/Makefile.in
index 83b850e..46b280a 100644
--- a/source/tools/linux/Makefile.in
+++ b/source/tools/linux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -328,6 +328,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/tools/win/demount.vcproj b/source/tools/win/demount.vcproj
index e1f2dbd..7d43498 100644
--- a/source/tools/win/demount.vcproj
+++ b/source/tools/win/demount.vcproj
@@ -62,11 +62,11 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib sigc-1.2.debug.lib SDLmain.lib"
+				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib sigc-vc90-d-2_0.lib SDLmain.lib"
 				ShowProgress="0"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)\bin\demount.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\""
+				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/demount.pdb"
@@ -149,7 +149,7 @@
 				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib sigc-1.2.lib SDLmain.lib"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)\bin\demount.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\""
+				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/demount.pdb"
diff --git a/source/tools/win/makegfx.vcproj b/source/tools/win/makegfx.vcproj
index 64663c4..ae87ef0 100644
--- a/source/tools/win/makegfx.vcproj
+++ b/source/tools/win/makegfx.vcproj
@@ -42,7 +42,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories=""$(SDL)/include";../..;../../tools;../../libs/getopt;"$(libsigcpp)";"$(SDL_image).static""
+				AdditionalIncludeDirectories=""$(SDL)/include";../..;../../tools;../../libs/getopt;"$(libsigcpp2)";"$(SDL_image).static""
 				PreprocessorDefinitions="WIN32;_DEBUG;HEXAGON;_WIN32_;converter;minimalIO;_NOASM_;_SDL_"
 				MinimalRebuild="false"
 				BasicRuntimeChecks="3"
@@ -67,7 +67,7 @@
 				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib libpng13d.lib sigc-1.2.debug.lib"
 				OutputFile="$(OutDir)/bin/makegfx.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(SDL_mixer)/VisualC/$(ConfigurationName)";"$(SDL_image).static/VisualC/$(ConfigurationName)/";"../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(p [...]
+				AdditionalLibraryDirectories=""$(SDL_mixer)/VisualC/$(ConfigurationName)";"$(SDL_image).static/VisualC/$(ConfigurationName)/";"../../$(ConfigurationName)/lib";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$( [...]
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/makegfx.pdb"
 				RandomizedBaseAddress="1"
@@ -125,7 +125,7 @@
 				InlineFunctionExpansion="1"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories=""$(SDL)/include";../..;../../tools;../../libs/getopt;"$(libsigcpp)";"$(SDL_image).static""
+				AdditionalIncludeDirectories=""$(SDL)/include";../..;../../tools;../../libs/getopt;"$(libsigcpp2)";"$(SDL_image).static""
 				PreprocessorDefinitions="WIN32;NDEBUG;HEXAGON;_WIN32_;converter;minimalIO;_NOASM_;_SDL_"
 				StringPooling="false"
 				MinimalRebuild="false"
@@ -151,7 +151,7 @@
 				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib libpng13.lib sigc-1.2.lib"
 				OutputFile="$(OutDir)/bin/makegfx.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(SDL_mixer)/VisualC/$(ConfigurationName)";"$(SDL_image).static/VisualC/$(ConfigurationName)/";"../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(p [...]
+				AdditionalLibraryDirectories=""$(SDL_mixer)/VisualC/$(ConfigurationName)";"$(SDL_image).static/VisualC/$(ConfigurationName)/";"../../$(ConfigurationName)/lib";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$( [...]
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/makegfx.pdb"
 				OptimizeReferences="2"
diff --git a/source/tools/win/mount.vcproj b/source/tools/win/mount.vcproj
index e5d4237..0262d2e 100644
--- a/source/tools/win/mount.vcproj
+++ b/source/tools/win/mount.vcproj
@@ -70,7 +70,7 @@
 				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib sigc-1.2.debug.lib SDLmain.lib"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)\bin\mount.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/Debug";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/""
+				AdditionalLibraryDirectories=""$(SDL)/VisualC/SDL/Debug";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/mount.pdb"
@@ -155,7 +155,7 @@
 				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib sigc-1.2.lib SDLmain.lib"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)\bin/mount.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"$(SDL)/VisualC/SDL/Release";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/""
+				AdditionalLibraryDirectories=""$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"$(SDL)/VisualC/SDL/Release";"$(OutDir)/lib";"../../$(ConfigurationName)/lib/""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/mount.pdb"
diff --git a/source/tools/win/tools.vcproj b/source/tools/win/tools.vcproj
index f52afc1..620e735 100644
--- a/source/tools/win/tools.vcproj
+++ b/source/tools/win/tools.vcproj
@@ -43,7 +43,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories=""$(SDL_image)";"$(Libsigcpp)";../../libs/SDLmm/src;../../../source;"$(SDL)/include";../../sdl;../../libs/getopt;../../win32/msvc;"../../libs/loki-0.1.6/include";../../libs/bzlib"
+				AdditionalIncludeDirectories=""$(SDL_image)";"$(libsigcpp2)";../../libs/SDLmm/src;../../../source;"$(SDL)/include";../../sdl;../../libs/getopt;../../win32/msvc;"../../libs/loki-0.1.6/include";../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;_DEBUG;HEXAGON;_WIN32_;converter;_NOASM_;_SDL_"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -112,7 +112,7 @@
 				InlineFunctionExpansion="1"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories=""$(SDL_image)";"$(Libsigcpp)";../../libs/SDLmm/src;../../../source;"$(SDL)/include";../../sdl;../../libs/getopt;../../win32/msvc;"../../libs/loki-0.1.6/include";../../libs/bzlib"
+				AdditionalIncludeDirectories=""$(SDL_image)";"$(libsigcpp2)";../../libs/SDLmm/src;../../../source;"$(SDL)/include";../../sdl;../../libs/getopt;../../win32/msvc;"../../libs/loki-0.1.6/include";../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;NDEBUG;HEXAGON;_WIN32_;converter;_NOASM_;_SDL_"
 				StringPooling="true"
 				MinimalRebuild="false"
@@ -326,6 +326,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\unitcostcalculator-standard.cpp"
+				>
+			</File>
+			<File
 				RelativePath="..\..\vehicletype.cpp"
 				>
 			</File>
diff --git a/source/tools/win/weaponguide.vcproj b/source/tools/win/weaponguide.vcproj
index 32f69e1..1f110ca 100644
--- a/source/tools/win/weaponguide.vcproj
+++ b/source/tools/win/weaponguide.vcproj
@@ -43,7 +43,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="../..;../../tools;../../libs/getopt;"$(libsigcpp)";"../../libs/loki-0.1.6/include""
+				AdditionalIncludeDirectories="../..;../../tools;../../libs/getopt;"$(libsigcpp2)";"../../libs/loki-0.1.6/include""
 				PreprocessorDefinitions="WIN32;_DEBUG;HEXAGON;_WIN32_;converter;_SDL_"
 				MinimalRebuild="false"
 				BasicRuntimeChecks="3"
@@ -65,10 +65,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/FORCE:MULTIPLE"
-				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib triangulate.lib SDLmain.lib sigc-1.2.debug.lib libpng13d.lib"
+				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib triangulate.lib SDLmain.lib sigc-vc90-d-2_0.lib libpng13d.lib"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)/bin/weaponguide.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""../../$(ConfigurationName)/lib";"../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
+				AdditionalLibraryDirectories=""../../$(ConfigurationName)/lib";"../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				AdditionalManifestDependencies=""
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/weaponguide.pdb"
@@ -127,8 +127,8 @@
 				InlineFunctionExpansion="1"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="true"
-				AdditionalIncludeDirectories="../..;../../tools;../../libs/getopt;"$(libsigcpp)";"../../libs/loki-0.1.6/include""
-				PreprocessorDefinitions="WIN32;NDEBUG;HEXAGON;_WIN32_;converter;minimalIO;_MSC_VER;_SDL_"
+				AdditionalIncludeDirectories="../..;../../tools;../../libs/getopt;"$(libsigcpp2)";"../../libs/loki-0.1.6/include""
+				PreprocessorDefinitions="WIN32;NDEBUG;HEXAGON;_WIN32_;converter;minimalIO;_SDL_"
 				StringPooling="false"
 				MinimalRebuild="false"
 				RuntimeLibrary="2"
@@ -150,10 +150,10 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/FORCE:MULTIPLE"
-				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib triangulate.lib SDLmain.lib sigc-1.2.lib libpng13.lib"
+				AdditionalDependencies="sdl.lib libbzip2.lib tools.lib SDLmm.lib SDL_image.lib triangulate.lib SDLmain.lib sigc-vc90-2_0.lib libpng13.lib"
 				OutputFile="$(SolutionDir)\$(ConfigurationName)/bin/weaponguide.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""../../$(ConfigurationName)/lib";"../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
+				AdditionalLibraryDirectories=""../../$(ConfigurationName)/lib";"../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp2)\MSVC_Net2003\$(ConfigurationName)\";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				AdditionalManifestDependencies=""
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/weaponguide.pdb"
diff --git a/source/unittests/Makefile.in b/source/unittests/Makefile.in
index 149f14a..605e2f1 100644
--- a/source/unittests/Makefile.in
+++ b/source/unittests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -287,6 +287,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/unittests/main.cpp b/source/unittests/main.cpp
index c8e3c91..a7f3247 100644
--- a/source/unittests/main.cpp
+++ b/source/unittests/main.cpp
@@ -54,16 +54,16 @@ void hookGuiToMap( GameMap* map )
 {
    if ( !map->getGuiHooked() ) {
 
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &viewcomp ) );
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( repaintMap.slot() ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &viewcomp ) );
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( repaintMap.make_slot() ));
       
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( SigC::slot( &checkforreplay )));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &viewunreadmessages ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &checkJournal ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::slot( &checkUsedASCVersions ));
-      map->sigPlayerUserInteractionBegins.connect( SigC::hide<Player&>( updateFieldInfo.slot() ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( sigc::ptr_fun( &checkforreplay )));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &viewunreadmessages ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &checkJournal ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::ptr_fun( &checkUsedASCVersions ));
+      map->sigPlayerUserInteractionBegins.connect( sigc::hide( updateFieldInfo.make_slot() ));
 
-      map->sigPlayerTurnHasEnded.connect( SigC::slot( viewOwnReplay));
+      map->sigPlayerTurnHasEnded.connect( sigc::ptr_fun( &viewOwnReplay));
       map->guiHooked();
    }
 }
@@ -137,7 +137,7 @@ int runTester ( )
    }
 #endif
 
-   GameMap::sigPlayerTurnEndsStatic.connect( SigC::slot( automaticTrainig ));
+   GameMap::sigPlayerTurnEndsStatic.connect( sigc::ptr_fun( &automaticTrainig ));
    //ActionContainer::postActionExecution.connect( SigC::slot( &checkGameEvents ));
 
    suppressMapTriggerExecution = false;
@@ -155,9 +155,9 @@ static void __runResearch( Player& player ){
 
 void deployMapPlayingHooks ( GameMap* map )
 {
-   map->sigPlayerTurnBegins.connect( SigC::slot( initReplayLogging ));
-   map->sigPlayerTurnBegins.connect( SigC::slot( transfer_all_outstanding_tribute ));   
-   map->sigPlayerTurnBegins.connect( SigC::slot( __runResearch ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &initReplayLogging ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &transfer_all_outstanding_tribute ));
+   map->sigPlayerTurnBegins.connect( sigc::ptr_fun( &__runResearch ));
 }
 
 
@@ -193,7 +193,7 @@ int main(int argc, char *argv[] )
 
    MessagingHub::Instance().setVerbosity( cl->r() );
    StdIoErrorHandler stdIoErrorHandler(false);
-   MessagingHub::Instance().exitHandler.connect( SigC::bind( SigC::slot( exit_asc ), -1 ));
+   MessagingHub::Instance().exitHandler.connect( sigc::bind( &exit_asc, -1 ));
 
 #ifdef WIN32
    Win32IoErrorHandler* win32ErrorDialogGenerator = new Win32IoErrorHandler;
@@ -204,7 +204,7 @@ int main(int argc, char *argv[] )
 
    SoundSystem soundSystem ( true, true, true );
 
-   tspfldloaders::mapLoaded.connect( SigC::slot( deployMapPlayingHooks ));
+   tspfldloaders::mapLoaded.connect( sigc::ptr_fun( &deployMapPlayingHooks ));
    TaskContainer::registerHooks();
    
    PG_FileArchive archive( argv[0] );
diff --git a/source/unittests/movementtest.cpp b/source/unittests/movementtest.cpp
index 97a4278..81a6b2a 100644
--- a/source/unittests/movementtest.cpp
+++ b/source/unittests/movementtest.cpp
@@ -420,6 +420,31 @@ void testPathFinding()
    }
 }
 
+void testPathFinding2()
+{
+   auto_ptr<GameMap> game ( startMap("unittest-pathfinding.map"));
+
+   {
+       Vehicle* sub = game->getField(3,4)->vehicle;
+       assertOrThrow( sub );
+
+       assertOrThrow( game->getgameparameter(cgp_movefrominvalidfields) == 1);
+
+       {
+           AStar3D ast( game.get(), sub, false, sub->getMovement());
+           ast.findAllAccessibleFields( );
+           assertOrThrow( ast.visited.size() == 121 );
+       }
+
+       game->setgameparameter(cgp_movefrominvalidfields,0);
+       {
+           AStar3D ast( game.get(), sub, false, sub->getMovement());
+           ast.findAllAccessibleFields( );
+           assertOrThrow( ast.visited.size() == 1 );
+           assertOrThrow ( ast.visited.find( MapCoordinate3D(3,4,4)) != NULL );
+       }
+   }
+}
 
 
 void testMovement() 
@@ -433,4 +458,5 @@ void testMovement()
    testHeightChangeAI();
    testHeightChangeGUI();
    testPathFinding();
+   testPathFinding2();
 }
diff --git a/source/unittests/repairtest.cpp b/source/unittests/repairtest.cpp
index 85fd5c6..26e010b 100644
--- a/source/unittests/repairtest.cpp
+++ b/source/unittests/repairtest.cpp
@@ -18,11 +18,11 @@
 /* NextTurnStrategy_Abort will delete the map if the game cannot be continued.
  * To avoid double deallocation, we must intercept the event and release the auto_ptr
  */
-class MapHolder : public SigC::Object {
+class MapHolder : public sigc::trackable {
 		auto_ptr<GameMap> game;
 	public:
 		MapHolder( GameMap* gamemap ) : game( gamemap ){
-			   GameMap::sigMapDeletion.connect( SigC::slot( *this, &MapHolder::reset ));
+			   GameMap::sigMapDeletion.connect( sigc::mem_fun( *this, &MapHolder::reset ));
 		}
 
 		GameMap* get() {
diff --git a/source/unix/Makefile.in b/source/unix/Makefile.in
index 5f5c359..af9d6cf 100644
--- a/source/unix/Makefile.in
+++ b/source/unix/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -292,6 +292,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/unix/asc/Makefile.in b/source/unix/asc/Makefile.in
index be69dbc..23101df 100644
--- a/source/unix/asc/Makefile.in
+++ b/source/unix/asc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -364,6 +364,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/unix/mapeditor/Makefile.in b/source/unix/mapeditor/Makefile.in
index 9ea51b1..3af43f9 100644
--- a/source/unix/mapeditor/Makefile.in
+++ b/source/unix/mapeditor/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -343,6 +343,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/unix/pbpedit/Makefile.in b/source/unix/pbpedit/Makefile.in
index e781be8..5f54635 100644
--- a/source/unix/pbpedit/Makefile.in
+++ b/source/unix/pbpedit/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -344,6 +344,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/util/Makefile.in b/source/util/Makefile.in
index 85aae3b..85971ba 100644
--- a/source/util/Makefile.in
+++ b/source/util/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/util/messaginghub.h b/source/util/messaginghub.h
index 48acb06..6d53c25 100644
--- a/source/util/messaginghub.h
+++ b/source/util/messaginghub.h
@@ -75,28 +75,28 @@
        enum MessageType { FatalError, Error, Warning, InfoMessage, StatusInfo, LogMessage };
        
        //! displays an error message and aborts the game
-       SigC::Signal1<void, const ASCString&> fatalError;
+       sigc::signal<void, const ASCString&> fatalError;
 
        //! exits the program
-       SigC::Signal0<void> exitHandler;
+       sigc::signal<void> exitHandler;
               
        //! displays an error message and continues game
-       SigC::Signal1<void, const ASCString&> error;
+       sigc::signal<void, const ASCString&> error;
        
        //! displays a warning
-       SigC::Signal1<void, const ASCString&> warning;
+       sigc::signal<void, const ASCString&> warning;
        
        //! displays an informational message 
-       SigC::Signal1<void, const ASCString&> infoMessage;
+       sigc::signal<void, const ASCString&> infoMessage;
        
        //! displays a message in the message line
-       SigC::Signal1<void, const ASCString&> statusInformation;
+       sigc::signal<void, const ASCString&> statusInformation;
        
        //! prints a message to the logging file
-       SigC::Signal2<void, const ASCString&,int> logMessage;
+       sigc::signal<void, const ASCString&,int> logMessage;
 
        //! prints a message to the logging file
-       SigC::Signal2<void, const ASCString&,const ASCString&> logCategorizedMessage;
+       sigc::signal<void, const ASCString&,const ASCString&> logCategorizedMessage;
 
        //! displays any kind of message, as specified by parameter
        void message( MessageType type, const char* msg, ... );
@@ -117,7 +117,7 @@
        StatusMessageWindowHolder infoMessageWindow( const ASCString& msg );
         
        //! prints a message to the logging file
-       SigC::Signal1<StatusMessageWindowHolder, const ASCString&> messageWindowFactory;
+       sigc::signal<StatusMessageWindowHolder, const ASCString&> messageWindowFactory;
               
    };
        
diff --git a/source/vehicle.cpp b/source/vehicle.cpp
index c381fb2..8db3f67 100644
--- a/source/vehicle.cpp
+++ b/source/vehicle.cpp
@@ -124,6 +124,10 @@ Vehicle :: ~Vehicle (  )
    MapField* fld = gamemap->getField( xpos, ypos);
    if ( fld && fld->vehicle  == this )
        fld->vehicle = NULL;
+
+   if ( fld && fld->secondvehicle  == this )
+       fld->secondvehicle = NULL;
+
    
    if ( getCarrier() )
       getCarrier()->removeUnitFromCargo( this, true );
diff --git a/source/video/Makefile.in b/source/video/Makefile.in
index 5e6d51f..5dd14aa 100644
--- a/source/video/Makefile.in
+++ b/source/video/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -282,6 +282,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/viewcalculation.cpp b/source/viewcalculation.cpp
index 34b067e..d4377dd 100644
--- a/source/viewcalculation.cpp
+++ b/source/viewcalculation.cpp
@@ -31,7 +31,7 @@
 #include "actions/changeview.h"
 #include "actions/viewregistration.h"
 
-SigC::Signal0<void> buildingSeen;
+sigc::signal<void> buildingSeen;
 
 
 void         tcomputeview::initviewcalculation(  int view, int jamming, int sx, int sy, int _mode, int _height  )  // mode: +1 = add view  ;  -1 = remove view
diff --git a/source/viewcalculation.h b/source/viewcalculation.h
index 67b3e70..c66fd48 100644
--- a/source/viewcalculation.h
+++ b/source/viewcalculation.h
@@ -111,7 +111,7 @@
   // extern VisibilityStates fieldVisibility  ( tfield* pe, int player, GameMap* gamemap, int additionalEnemyJamming );
   extern int getPlayersWithSharedViewMask( int player, GameMap* gamemap );
   
-  extern SigC::Signal0<void> buildingSeen;
+  extern sigc::signal<void> buildingSeen;
 
   class RecalculateAreaView {
      MapCoordinate position;
diff --git a/source/weaponrangelayer.cpp b/source/weaponrangelayer.cpp
index 666f14a..1074795 100644
--- a/source/weaponrangelayer.cpp
+++ b/source/weaponrangelayer.cpp
@@ -82,7 +82,7 @@ void UnitWeaponRangeLayer::operateField( GameMap* actmap, const MapCoordinate& p
    }
    
    UnitWeaponRangeLayer::UnitWeaponRangeLayer() : icon1 ( IconRepository::getIcon( "markedfield-red.png")), icon2 ( IconRepository::getIcon( "markedfield-red2.png")), gamemap(NULL) {
-      // cursorMoved.connect( SigC::slot( *this, UnitWeaponRangeLayer::cursorMoved ));
+      // cursorMoved.connect( sigc::mem_fun( *this, UnitWeaponRangeLayer::cursorMoved ));
    }
 
    void UnitWeaponRangeLayer::paintSingleField( const MapRenderer::FieldRenderInfo& fieldInfo,  int layer, const SPoint& pos )
diff --git a/source/weatherarea.cpp b/source/weatherarea.cpp
index ff81b10..d8f73c3 100644
--- a/source/weatherarea.cpp
+++ b/source/weatherarea.cpp
@@ -482,11 +482,11 @@ WeatherSystem::WeatherSystem(GameMap* map, int spawn, float ws2fr, unsigned int
 
     defaultWindSpeeds.push_back(100 - sum);
     setLikelihoodWindSpeed(defaultWindSpeeds);
-    map->newRound.connect(SigC::slot(*this, &WeatherSystem::update));
+    map->newRound.connect(sigc::mem_fun(*this, &WeatherSystem::update));
 }
 
 WeatherSystem::WeatherSystem(GameMap* map):gameMap(map) {
-    map->newRound.connect(SigC::slot(*this, &WeatherSystem::update));
+    map->newRound.connect(sigc::mem_fun(*this, &WeatherSystem::update));
 
 
 }
diff --git a/source/weatherarea.h b/source/weatherarea.h
index b24410c..7ef4eec 100644
--- a/source/weatherarea.h
+++ b/source/weatherarea.h
@@ -236,7 +236,7 @@ int getValue();
 MapCoordinate posInArea;
 };
 //**************************************************************************************************************************************
-class WeatherSystem : public SigC::Object{
+class WeatherSystem : public sigc::trackable{
 private:
 
 static const int WEATHERVERSION = 1;
diff --git a/source/weathercast.cpp b/source/weathercast.cpp
index 5c37c24..910e6a3 100644
--- a/source/weathercast.cpp
+++ b/source/weathercast.cpp
@@ -27,9 +27,9 @@ WeatherPanel::WeatherPanel ( PG_Widget *parent, const PG_Rect &r, const ASCStrin
     turnLabel->SetSizeByText();
     //    turnLabelWidth = turnLabel->Width();//????
     forward = new PG_Button(this, PG_Rect(Width() -60 , Height() - GuiDimension::getButtonHeight(), 55, 35), "forward", 90);
-    forward->sigClick.connect(SigC::slot( *this, &WeatherPanel::buttonForward));
+    forward->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherPanel::buttonForward)));
     back = new PG_Button(this, PG_Rect(Width() -(60 + 10) - 60, Height() - GuiDimension::getButtonHeight(), 55, 35), "back", 90);
-    back->sigClick.connect(SigC::slot( *this, &WeatherPanel::buttonBack));
+    back->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherPanel::buttonBack)));
 
 
     int windRoseYPos = GuiDimension::getTopOffSet();
@@ -49,7 +49,7 @@ WeatherPanel::WeatherPanel ( PG_Widget *parent, const PG_Rect &r, const ASCStrin
     updateWeatherSpeed(actmap->time.turn());
 
     SpecialDisplayWidget* sdw  = new SpecialDisplayWidget(this, PG_Rect(0, 0, 150, 300));
-    sdw->display.connect( SigC::slot( *this, &WeatherPanel::painter ));
+    sdw->display.connect( sigc::mem_fun( *this, &WeatherPanel::painter ));
 
     // Weathercast* wc = static_cast<Weathercast*>(GetParent());
     // wc->Redraw();
@@ -241,16 +241,16 @@ Weathercast::Weathercast(const WeatherSystem& ws):  ASC_PG_Dialog(NULL, PG_Rect(
 
     weatherPanel = new WeatherPanel ( this, PG_Rect( 350, 30, 150, 300),"weatherPanel", false );
     sdw  = new SpecialDisplayWidget(this, PG_Rect(mapXPos, mapYPos, 350, 250));
-    sdw->display.connect( SigC::slot( *this, &Weathercast::painter ));
-    sdw->sigMouseMotion.connect( SigC::slot( *this, &Weathercast::mouseMotion ));
-    sdw->sigMouseButtonDown.connect( SigC::slot( *this, &Weathercast::mouseButtonDown ));
-    viewChanged.connect ( SigC::slot( *this, &Weathercast::redraw ));
+    sdw->display.connect( sigc::mem_fun( *this, &Weathercast::painter ));
+    sdw->sigMouseMotion.connect( sigc::mem_fun( *this, &Weathercast::mouseMotion ));
+    sdw->sigMouseButtonDown.connect( sigc::mem_fun( *this, &Weathercast::mouseButtonDown ));
+    viewChanged.connect ( sigc::mem_fun( *this, &Weathercast::redraw ));
 
 
     okButton = new PG_Button(this, PG_Rect((xSize - GuiDimension::getButtonWidth()) / 2, ySize - (GuiDimension::getButtonHeight() + GuiDimension::getTopOffSet()), GuiDimension::getButtonWidth(), GuiDimension::getButtonHeight()), "OK", 90);
-    okButton->sigClick.connect(SigC::slot( *this, &Weathercast::closeWindow ));
+    okButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &Weathercast::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &Weathercast::closeWindow ));    
+    sigClose.connect( sigc::mem_fun( *this, &Weathercast::closeWindow ));    
 }
 
 Weathercast::~Weathercast() {}
diff --git a/source/weatherdialog.cpp b/source/weatherdialog.cpp
index 512fa34..d7744df 100644
--- a/source/weatherdialog.cpp
+++ b/source/weatherdialog.cpp
@@ -112,7 +112,7 @@ WeatherDialog::WeatherDialog() :  ASC_PG_Dialog(NULL, PG_Rect( 100, 50, xsize, y
     fallOutLabel->SetSizeByText();
 
     fallOutButton = new PG_Button(this, PG_Rect(valueXPos, fallOutYPos, (Width()- valueXPos)/2, 30), "Edit", 100);
-    fallOutButton->sigClick.connect(SigC::slot( *this, &WeatherDialog::editFallOut ));
+    fallOutButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::editFallOut )));
 
     //WindSpeed
     int windSpeedYPos =  fallOutYPos + GetTextHeight() * 2;
@@ -120,7 +120,7 @@ WeatherDialog::WeatherDialog() :  ASC_PG_Dialog(NULL, PG_Rect( 100, 50, xsize, y
     windSpeedLabel->SetSizeByText();
 
     windSpeedButton = new PG_Button(this, PG_Rect(valueXPos, windSpeedYPos, (Width()- valueXPos)/2, 30), "Edit", 100);
-    windSpeedButton->sigClick.connect(SigC::slot( *this, &WeatherDialog::editWindSpeed));
+    windSpeedButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::editWindSpeed)));
 
     //WindDirection
     int windDirYPos =  windSpeedYPos + GetTextHeight() + GuiDimension::getTopOffSet();
@@ -128,29 +128,29 @@ WeatherDialog::WeatherDialog() :  ASC_PG_Dialog(NULL, PG_Rect( 100, 50, xsize, y
     windDirectionLabel->SetSizeByText();
 
     windDirectionButton = new PG_Button(this, PG_Rect(valueXPos, windDirYPos, (Width()- valueXPos)/2, 30), "Edit", 100);
-    windDirectionButton->sigClick.connect(SigC::slot( *this, &WeatherDialog::editWindDirection));
+    windDirectionButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::editWindDirection)));
 
     //eventAreas
     int eventAreasYPos = windDirYPos + GetTextHeight() + GuiDimension::getTopOffSet();
     eventAreasLabel = new PG_Label(this, PG_Rect(GuiDimension::getLeftIndent(), eventAreasYPos, xsize/3 , GetTextHeight()*2), "Event driven weather:");
     eventAreasLabel->SetSizeByText();
     eventAreasButton = new PG_Button(this, PG_Rect(valueXPos, eventAreasYPos, (Width()- valueXPos)/2, 30), "Edit", 100);
-    eventAreasButton->sigClick.connect(SigC::slot( *this, &WeatherDialog::editEventAreas));
+    eventAreasButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::editEventAreas)));
 
     //eventWindChanges
     int eventWindChangesYPos = eventAreasYPos + GetTextHeight() + GuiDimension::getTopOffSet();
     eventWindChangesLabel = new PG_Label(this, PG_Rect(GuiDimension::getLeftIndent(), eventWindChangesYPos, xsize/3 , GetTextHeight()*2), "Event driven wind changes:");
     eventWindChangesLabel->SetSizeByText();
     eventWindChangesButton = new PG_Button(this, PG_Rect(valueXPos, eventWindChangesYPos, (Width()- valueXPos)/2, 30), "Edit", 100);
-    eventWindChangesButton->sigClick.connect(SigC::slot( *this, &WeatherDialog::editEventWindChanges));
+    eventWindChangesButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::editEventWindChanges)));
 
 
 
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &WeatherDialog::buttonEvent ));
-    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &WeatherDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::buttonEvent )));
+    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &WeatherDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &WeatherDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &WeatherDialog::closeWindow ));
 
 }
 
@@ -254,17 +254,17 @@ EventAreasDialog::EventAreasDialog() : ASC_PG_Dialog(NULL, PG_Rect( 100, 100, xS
     //add Button
     int yPosButtons = 20 + eventList->Height() + GuiDimension::getTopOffSet();
     addButton = new PG_Button(this, PG_Rect(xPos1, yPosButtons, 70, 35), "Add", 90);
-    addButton->sigClick.connect(SigC::slot( *this, &EventAreasDialog::buttonAdd ));
+    addButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventAreasDialog::buttonAdd )));
 
     //remove Button
     removeButton = new PG_Button(this, PG_Rect(Width() - (xPos1 + 70), yPosButtons, 70, 35), "Remove", 90);
-    removeButton->sigClick.connect(SigC::slot( *this, &EventAreasDialog::buttonRemove ));
+    removeButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventAreasDialog::buttonRemove )));
 
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect((Width()- GuiDimension::getButtonWidth())/2, Height()-40, GuiDimension::getButtonWidth() , 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &EventAreasDialog::buttonEvent ));
-    //(new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &EventAreasDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect((Width()- GuiDimension::getButtonWidth())/2, Height()-40, GuiDimension::getButtonWidth() , 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventAreasDialog::buttonEvent )));
+    //(new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventAreasDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &EventAreasDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &EventAreasDialog::closeWindow ));
 }
 
 EventAreasDialog::~EventAreasDialog() {}
@@ -355,17 +355,17 @@ EventWindChangesDialog::EventWindChangesDialog() : ASC_PG_Dialog(NULL, PG_Rect(
     //add Button
     int yPosButtons = 20 + eventList->Height() + GuiDimension::getTopOffSet();
     addButton = new PG_Button(this, PG_Rect(xPos1, yPosButtons, 50, 35), "Add", 90);
-    addButton->sigClick.connect(SigC::slot( *this, &EventWindChangesDialog::buttonAdd ));
+    addButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventWindChangesDialog::buttonAdd )));
 
     //remove Button
     removeButton = new PG_Button(this, PG_Rect(Width() - (xPos1 + 50), yPosButtons, 50, 35), "Remove", 90);
-    removeButton->sigClick.connect(SigC::slot( *this, &EventWindChangesDialog::buttonRemove ));
+    removeButton->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventWindChangesDialog::buttonRemove )));
 
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect((Width()-GuiDimension::getButtonWidth())/2, Height()-40, GuiDimension::getButtonWidth(), 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &EventWindChangesDialog::buttonEvent ));
-    //(new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &EventWindChangeDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect((Width()-GuiDimension::getButtonWidth())/2, Height()-40, GuiDimension::getButtonWidth(), 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventWindChangesDialog::buttonEvent )));
+    //(new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &EventWindChangeDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &EventWindChangesDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &EventWindChangesDialog::closeWindow ));
 }
 
 EventWindChangesDialog::~EventWindChangesDialog() {}
@@ -411,7 +411,7 @@ void EventWindChangesDialog::addNewWindInformation(WindInformation* wi) {
 const int AddWindChangeDialog::xSize = 400;
 const int AddWindChangeDialog::ySize = 400;
 
-const string SEPERATOR = ";";
+const string SEPARATOR = ";";
 
 AddWindChangeDialog::AddWindChangeDialog(EventWindChangesDialog* ewcd):  ASC_PG_Dialog(ewcd, PG_Rect( 0, 0, xSize, ySize ), "Add Weather Area", SHOW_CLOSE ) {
     int valueXPos = static_cast<int>(xSize * 0.75);
@@ -439,10 +439,10 @@ AddWindChangeDialog::AddWindChangeDialog(EventWindChangesDialog* ewcd):  ASC_PG_
     }
 
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &AddWindChangeDialog::buttonEvent ));
-    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &AddWindChangeDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &AddWindChangeDialog::buttonEvent )));
+    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &AddWindChangeDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &AddWindChangeDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &AddWindChangeDialog::closeWindow ));
 
 }
 
@@ -566,10 +566,10 @@ AddWeatherAreaDialog::AddWeatherAreaDialog(EventAreasDialog* ead):  ASC_PG_Dialo
     }
 
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &AddWeatherAreaDialog::buttonEvent ));
-    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &AddWeatherAreaDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &AddWeatherAreaDialog::buttonEvent )));
+    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &AddWeatherAreaDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &AddWeatherAreaDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &AddWeatherAreaDialog::closeWindow ));
 
 }
 
@@ -627,10 +627,10 @@ void ChanceSettingsDialog::buildUpForm(const vector<string>& labelVec) {
     note = new PG_Label(this, PG_Rect(GuiDimension::getLeftIndent(), noteYPos, xsize/3 , GetTextHeight()*2), "The sum of chances must equal 100");
     note->SetSizeByText();
     //Ok and Cancel Button
-    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect(SigC::slot( *this, &ChanceSettingsDialog::buttonEvent ));
-    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect(SigC::slot( *this, &ChanceSettingsDialog::closeWindow ));
+    (new PG_Button(this, PG_Rect(30, Height()-40, (Width()-70)/2, 30), "OK", 100))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &ChanceSettingsDialog::buttonEvent )));
+    (new PG_Button(this, PG_Rect(Width()/2+5, Height()-40, (Width()-70)/2, 30), "Cancel", 101))->sigClick.connect( sigc::hide(sigc::mem_fun( *this, &ChanceSettingsDialog::closeWindow )));
 
-    sigClose.connect( SigC::slot( *this, &ChanceSettingsDialog::closeWindow ));
+    sigClose.connect( sigc::mem_fun( *this, &ChanceSettingsDialog::closeWindow ));
 
 }
 
diff --git a/source/weatherdialog.h b/source/weatherdialog.h
index 984d3f5..9e71951 100644
--- a/source/weatherdialog.h
+++ b/source/weatherdialog.h
@@ -115,7 +115,7 @@ bool closeWindow();
 private:
   static const int xSize;
   static const int ySize;
-  static const string SEPERATOR;
+  static const string SEPARATOR;
   list<WeatherAreaInformation*> currentList;
   list<WeatherAreaInformation*> removeList;
   list<WeatherAreaInformation*> addList;
@@ -159,7 +159,7 @@ bool closeWindow();
 private:
   static const int xSize;
   static const int ySize;
-  static const string SEPERATOR;
+  static const string SEPARATOR;
   list<WindInformation*> currentList;  
   list<WindInformation*> addList;
   
diff --git a/source/widgets/Makefile.in b/source/widgets/Makefile.in
index f1071cd..4f20dbb 100644
--- a/source/widgets/Makefile.in
+++ b/source/widgets/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -285,6 +285,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/widgets/autoprogressbar.cpp b/source/widgets/autoprogressbar.cpp
index 8ba3ceb..243efab 100644
--- a/source/widgets/autoprogressbar.cpp
+++ b/source/widgets/autoprogressbar.cpp
@@ -43,11 +43,11 @@ void AutoProgressBar :: tick()
    lastticktime = ticker;
 };
 
-AutoProgressBar :: AutoProgressBar( SigC::Signal0<void>& tickSignal, PG_Widget *parent, const PG_Rect &r, const std::string &style ) : PG_ProgressBar( parent, r, style ), lastticktime(-1), counter(0)
+AutoProgressBar :: AutoProgressBar( sigc::signal<void>& tickSignal, PG_Widget *parent, const PG_Rect &r, const std::string &style ) : PG_ProgressBar( parent, r, style ), lastticktime(-1), counter(0)
 {
    lastdisplaytime = starttime = ticker;
 
-   tickSignal.connect( SigC::slot( *this, &AutoProgressBar::tick ));
+   tickSignal.connect( sigc::mem_fun( *this, &AutoProgressBar::tick ));
 
    try {
       tnfilestream stream ( "progress.dat", tnstream::reading  );
diff --git a/source/widgets/autoprogressbar.h b/source/widgets/autoprogressbar.h
index 55fabaa..3a1e198 100644
--- a/source/widgets/autoprogressbar.h
+++ b/source/widgets/autoprogressbar.h
@@ -33,7 +33,7 @@ class AutoProgressBar: public PG_ProgressBar {
 
       void tick();
    public:
-      AutoProgressBar( SigC::Signal0<void>& tickSignal, PG_Widget *parent, const PG_Rect &r=PG_Rect::null, const std::string &style="Progressbar" );
+      AutoProgressBar( sigc::signal<void>& tickSignal, PG_Widget *parent, const PG_Rect &r=PG_Rect::null, const std::string &style="Progressbar" );
       void close( );
 };
 
diff --git a/source/widgets/dropdownselector.cpp b/source/widgets/dropdownselector.cpp
index 7733953..8236784 100644
--- a/source/widgets/dropdownselector.cpp
+++ b/source/widgets/dropdownselector.cpp
@@ -21,7 +21,7 @@ DropDownSelector::DropDownSelector( PG_Widget *parent, const PG_Rect &r, int ite
    : PG_DropDown( parent, r, -1, style ), first(true)
 {
    SetEditable(false);
-   sigSelectItem.connect( SigC::slot( *this, &DropDownSelector::itemSelected ));
+   sigSelectItem.connect( sigc::hide( sigc::mem_fun( *this, &DropDownSelector::itemSelected )));
 
    for ( int i = 0; i < itemnum; ++i )
       AddItem( items[i] );
@@ -33,7 +33,7 @@ DropDownSelector::DropDownSelector( PG_Widget *parent, const PG_Rect &r, const s
    : PG_DropDown( parent, r, -1, style ), first(true)
 {
    SetEditable(false);
-   sigSelectItem.connect( SigC::slot( *this, &DropDownSelector::itemSelected ));
+   sigSelectItem.connect( sigc::hide( sigc::mem_fun( *this, &DropDownSelector::itemSelected )));
 
    for ( std::vector<ASCString>::const_iterator i = names.begin(); i != names.end(); ++i )
       AddItem( *i );
@@ -45,10 +45,10 @@ DropDownSelector::DropDownSelector( PG_Widget *parent, const PG_Rect &r, int id,
    : PG_DropDown( parent, r, id, style ), first(true)
 {
    SetEditable(false);
-   sigSelectItem.connect( SigC::slot( *this, &DropDownSelector::itemSelected ));
+   sigSelectItem.connect( sigc::hide( sigc::mem_fun( *this, &DropDownSelector::itemSelected )));
 }
 
-bool DropDownSelector::itemSelected(  ) // PG_ListBoxBaseItem* i, void* p
+bool DropDownSelector::itemSelected(  )
 {
    selectionSignal( GetSelectedItemIndex ());
    return true;
diff --git a/source/widgets/dropdownselector.h b/source/widgets/dropdownselector.h
index 3d8a91e..d13040f 100644
--- a/source/widgets/dropdownselector.h
+++ b/source/widgets/dropdownselector.h
@@ -30,7 +30,7 @@ class DropDownSelector: public PG_DropDown {
       DropDownSelector( PG_Widget *parent, const PG_Rect &r, int itemnum, const char** items, const std::string &style="DropDown" );
       DropDownSelector( PG_Widget *parent, const PG_Rect &r, const std::vector<ASCString>& names,  const std::string &style="DropDown" );
       void AddItem (const std::string &text, void *userdata=NULL, Uint16 height=0);
-      SigC::Signal1<void, int> selectionSignal;
+      sigc::signal<void, int> selectionSignal;
 };
 
 #endif
diff --git a/source/widgets/multilistbox.cpp b/source/widgets/multilistbox.cpp
index e4ccfc2..dd9ee6e 100644
--- a/source/widgets/multilistbox.cpp
+++ b/source/widgets/multilistbox.cpp
@@ -18,8 +18,8 @@ MultiListBox :: MultiListBox (PG_Widget *parent, const PG_Rect &r ) : PG_Widget(
    listbox = new PG_ListBox( parent, PG_Rect( r.x, r.y, r.w, r.h - 30 ) );
    listbox->SetMultiSelect( true );
 
-   (new PG_Button( parent, PG_Rect( r.x, r.y + r.h - 25, r.w/2-5, 25 ), "All"))->sigClick.connect( SigC::slot( *this, &MultiListBox::all ));
-   (new PG_Button( parent, PG_Rect( r.x + r.w/2 + 5, r.y + r.h - 25, r.w/2-5, 25 ), "None"))->sigClick.connect( SigC::slot( *this, &MultiListBox::none ));
+   (new PG_Button( parent, PG_Rect( r.x, r.y + r.h - 25, r.w/2-5, 25 ), "All"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MultiListBox::all )));
+   (new PG_Button( parent, PG_Rect( r.x + r.w/2 + 5, r.y + r.h - 25, r.w/2-5, 25 ), "None"))->sigClick.connect( sigc::hide( sigc::mem_fun( *this, &MultiListBox::none )));
 }
 
 bool MultiListBox::all()
diff --git a/source/win32/Makefile.in b/source/win32/Makefile.in
index 3b952d3..75b1685 100644
--- a/source/win32/Makefile.in
+++ b/source/win32/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -293,6 +293,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/win32/msvc/ASC/ASC.vcproj b/source/win32/msvc/ASC/ASC.vcproj
index 44293b8..4f102eb 100644
--- a/source/win32/msvc/ASC/ASC.vcproj
+++ b/source/win32/msvc/ASC/ASC.vcproj
@@ -44,7 +44,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="_WIN32_;WIN32;ASC_DEBUG;sgmain;FREEMAPZOOM;NEWKEYB;_SDL_;NOMINMAX;XVIDEXPORT;LUAINTERFACE"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -70,11 +70,11 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/VERBOSE:LIB "
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.debug.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib sdl_sound_d.lib libpng13d.lib libcurl_imp.lib revel.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-vc90-d-2_0.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib sdl_sound_d.lib libpng13d.lib libcurl_imp.lib revel.lib lua.lib"
 				ShowProgress="0"
 				OutputFile="$(OutDir)/bin/ASC2-debug.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(OutDir)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../$(ConfigurationName)/lib";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(Config [...]
+				AdditionalLibraryDirectories=""$(OutDir)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../$(ConfigurationName)/lib";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				IgnoreDefaultLibraryNames=""
 				GenerateDebugInformation="true"
@@ -134,12 +134,12 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
-				Optimization="0"
+				Optimization="3"
 				InlineFunctionExpansion="2"
 				EnableIntrinsicFunctions="true"
 				FavorSizeOrSpeed="1"
 				OmitFramePointers="false"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;NDEBUG;sgmain;FREEMAPZOOM;_WIN32_;NEWKEYB;LUAINTERFACE;_SDL_;NOMINMAX;XVIDEXPORT"
 				RuntimeLibrary="2"
 				ForceConformanceInForLoopScope="true"
@@ -161,10 +161,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.lib paragui_static.lib physfs.lib freetype.lib libexpat.lib sdl_sound.lib libpng13.lib libcurl_imp.lib revel.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-vc90-2_0.lib  paragui_static.lib physfs.lib freetype.lib libexpat.lib sdl_sound.lib libpng13.lib libcurl_imp.lib revel.lib lua.lib"
 				OutputFile="$(OutDir)/bin/ASC2.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(OutDir)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../$(ConfigurationName)/lib";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(Configurati [...]
+				AdditionalLibraryDirectories=""$(OutDir)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../$(ConfigurationName)/lib";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/ASC.pdb"
@@ -318,6 +318,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\dialogs\eventinfo.cpp"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\explosivemines.cpp"
 				>
 			</File>
diff --git a/source/win32/msvc/Makefile b/source/win32/msvc/Makefile
index d873b88..268b7bf 100644
--- a/source/win32/msvc/Makefile
+++ b/source/win32/msvc/Makefile
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # source/win32/msvc/Makefile.  Generated from Makefile.in by configure.
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -75,8 +75,8 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
 subdir = source/win32/msvc
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/mkinstalldirs
@@ -112,25 +112,25 @@ am__can_run_installinfo = \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/martin/asc/robot/asc/missing aclocal-1.13
+ACLOCAL = ${SHELL} /home/martin/asc/v2/amd64/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
 AR = ar
-AUTOCONF = ${SHELL} /home/martin/asc/robot/asc/missing autoconf
-AUTOHEADER = ${SHELL} /home/martin/asc/robot/asc/missing autoheader
-AUTOMAKE = ${SHELL} /home/martin/asc/robot/asc/missing automake-1.13
+AUTOCONF = ${SHELL} /home/martin/asc/v2/amd64/missing autoconf
+AUTOHEADER = ${SHELL} /home/martin/asc/v2/amd64/missing autoheader
+AUTOMAKE = ${SHELL} /home/martin/asc/v2/amd64/missing automake-1.14
 AWK = gawk
 BOOST_LIBS = -lboost_regex
 BZIP2_LIBS = -lbz2
 CC = ccache gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -Wall -D_UNIX_ -D_SDL_  
+CFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -D_UNIX_ -D_SDL_  
 CPP = ccache gcc -E
-CPPFLAGS = -I/home/martin/boost_1_53_0 -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
+CPPFLAGS =  -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
 CXX = ccache g++
 CXXCPP = ccache g++ -E
 CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -Wall -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2 
+CXXFLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -ansi -Wno-sign-compare -D_UNIX_ -D_SDL_ -I/usr/include/freetype2  -DSIZE_T_not_identical_to_INT
 CYGPATH_W = echo
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
@@ -146,8 +146,8 @@ EXPAT_INCLUDE =
 EXPAT_LIB = -lexpat
 EXPAT_SUBDIR = 
 FGREP = /bin/grep -F
-FREETYPE_LIBS = -lfreetype -lz
-GAME_DATADIR = /usr/local/share/games/asc
+FREETYPE_LIBS = -L/usr/lib/x86_64-linux-gnu -lfreetype -lz -lpng12
+GAME_DATADIR = /home/martin/.asc/share/games/asc
 GENCL = 
 GENCLL = 
 GREP = /bin/grep
@@ -156,8 +156,8 @@ INSTALL_DATA = ${INSTALL} -m 644
 INSTALL_PROGRAM = ${INSTALL}
 INSTALL_SCRIPT = ${INSTALL}
 INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LD = /usr/bin/ld
-LDFLAGS = -L/home/martin/boost_1_53_0/stage/lib
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = 
 LIBCURL = 
 LIBCURL_CPPFLAGS = 
 LIBEXPAT = -lexpat
@@ -167,14 +167,14 @@ LIBS = -lpng -lbz2
 LIBTOOL = $(SHELL) $(top_builddir)/libtool
 LIPO = 
 LN_S = ln -s
-LOKI_LIBS = ${top_builddir}/source/libs/loki-0.1.6/libloki.la
+LOKI_LIBS = -lloki
 LTLIBOBJS = 
 LUA_CFLAGS = -I/usr/include/lua5.1  
 LUA_FLAGS = -I/usr/include/lua5.1  
 LUA_LIBS = -llua5.1  
-LokiInclude = -I${top_srcdir}/source/libs/loki-0.1.6/include/
+LokiInclude = 
 MAINT = #
-MAKEINFO = ${SHELL} /home/martin/asc/robot/asc/missing makeinfo
+MAKEINFO = ${SHELL} /home/martin/asc/v2/amd64/missing makeinfo
 MANIFEST_TOOL = :
 MKDIR_P = /bin/mkdir -p
 MUSICDIR = 
@@ -190,10 +190,10 @@ OTOOL64 =
 PACKAGE = asc
 PACKAGE_BUGREPORT = 
 PACKAGE_NAME = asc
-PACKAGE_STRING = asc 2.6.0.0
+PACKAGE_STRING = asc 2.6.1.0
 PACKAGE_TARNAME = asc
 PACKAGE_URL = 
-PACKAGE_VERSION = 2.6.0.0
+PACKAGE_VERSION = 2.6.1.0
 PARAGUI_CFLAGS = 
 PARAGUI_LIBS = 
 PATH_SEPARATOR = :
@@ -208,36 +208,39 @@ PKG_CONFIG_PATH =
 RANLIB = ranlib
 SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
 SDL_CONFIG = /usr/bin/sdl-config
-SDL_LIBS = -L/usr/lib -lSDL
+SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL
 SDL_SOUND_LIB = -lSDL_sound
 SED = /bin/sed
 SET_MAKE = 
-SHELL = /bin/sh
-SIGC_CFLAGS = -I/usr/lib/sigc++-1.2/include -I/usr/include/sigc++-1.2  
-SIGC_LIBS = -lsigc-1.2  
+SHELL = /bin/bash
+SIGC_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include  
+SIGC_LIBS = -lsigc-2.0  
 STRIP = strip
 SdlSoundDir = 
-VERSION = 2.6.0.0
+VERSION = 2.6.1.0
 VIDEOCODER = 
 VORBISENC_LIBS = 
 VORBISFILE_LIBS = 
 VORBIS_CFLAGS = 
 VORBIS_LIBS = 
-WX_CFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA 
-WX_CFLAGS_ONLY = 
+WX_CFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CFLAGS_ONLY = -pthread
 WX_CONFIG_PATH = /usr/bin/wx-config
-WX_CPPFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA  
-WX_CXXFLAGS_ONLY = -I/usr/lib/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA
-WX_LIBS = -pthread   -lwx_gtk2u_xrc-2.6 -lwx_gtk2u_qa-2.6 -lwx_gtk2u_html-2.6 -lwx_gtk2u_adv-2.6 -lwx_gtk2u_core-2.6 -lwx_baseu_xml-2.6 -lwx_baseu_net-2.6 -lwx_baseu-2.6 
+WX_CPPFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__
+WX_CXXFLAGS = -I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+WX_CXXFLAGS_ONLY = 
+WX_LIBS = -L/usr/lib/x86_64-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro  -L/usr/lib/x86_64-linux-gnu   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 
 WX_LIBS_STATIC = 
 WX_RESCOMP = 
-WX_VERSION = 2.6.3
+WX_VERSION = 2.8.12
+WX_VERSION_MAJOR = 2
+WX_VERSION_MICRO = 12
+WX_VERSION_MINOR = 8
 _libcurl_config = 
-abs_builddir = /home/martin/asc/robot/asc/source/win32/msvc
-abs_srcdir = /home/martin/asc/robot/asc/source/win32/msvc
-abs_top_builddir = /home/martin/asc/robot/asc
-abs_top_srcdir = /home/martin/asc/robot/asc
+abs_builddir = /home/martin/asc/v2/amd64/source/win32/msvc
+abs_srcdir = /home/martin/asc/v2/amd64/source/win32/msvc
+abs_top_builddir = /home/martin/asc/v2/amd64
+abs_top_srcdir = /home/martin/asc/v2/amd64
 ac_ct_AR = ar
 ac_ct_CC = ccache gcc
 ac_ct_CXX = 
@@ -247,13 +250,13 @@ am__leading_dot = .
 am__quote = 
 am__tar = $${TAR-tar} chof - "$$tardir"
 am__untar = $${TAR-tar} xf -
-asc_version = 2.6.0.0
+asc_version = 2.6.1.0
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
@@ -263,17 +266,17 @@ exec_prefix = ${prefix}
 extradatadir = extra-data
 extradatainclude = include pbp.mak
 freetype_config = /usr/bin/freetype-config
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-inst_win32_DLL_dir = /home/martin/asc/pbp/asc/dlls
-inst_win32_build_dir = /home/martin/asc/pbp/asc/asc2
-install_sh = ${SHELL} /home/martin/asc/robot/asc/install-sh
+inst_win32_DLL_dir = ../../../svn-exe//trunk/dll
+inst_win32_build_dir = ../../../svn-exe//trunk/main
+install_sh = ${SHELL} /home/martin/asc/v2/amd64/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -284,7 +287,7 @@ mkdir_p = $(MKDIR_P)
 oldincludedir = /usr/include
 pdfdir = ${docdir}
 pkgconfigfound = yes
-prefix = /usr/local
+prefix = /home/martin/.asc
 program_transform_name = s,x,x,
 psdir = ${docdir}
 revellib = 
diff --git a/source/win32/msvc/Makefile.in b/source/win32/msvc/Makefile.in
index 9b5ab95..0e1514e 100644
--- a/source/win32/msvc/Makefile.in
+++ b/source/win32/msvc/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -233,6 +233,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
diff --git a/source/win32/msvc/mapeditor/mapeditor.vcproj b/source/win32/msvc/mapeditor/mapeditor.vcproj
index 1cd541a..2a225f2 100644
--- a/source/win32/msvc/mapeditor/mapeditor.vcproj
+++ b/source/win32/msvc/mapeditor/mapeditor.vcproj
@@ -42,7 +42,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;../../../libs/sdlmm/include;"$(libpng)";"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;../../../libs/sdlmm/include;"$(libpng)";"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;ASC_DEBUG;FREEMAPZOOM;NEWKEYB;_WIN32_;karteneditor;_SDL_;LUAINTERFACE;NOMINMAX"
 				BasicRuntimeChecks="3"
 				RuntimeLibrary="3"
@@ -65,10 +65,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.debug.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib libpng13d.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-vc90-d-2_0.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib libpng13d.lib lua.lib"
 				OutputFile="$(OutDir)/bin/mapeditor2-debug.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""../../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
+				AdditionalLibraryDirectories=""../../../$(ConfigurationName)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/mapeditor.pdb"
@@ -126,11 +126,11 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
-				Optimization="2"
+				Optimization="3"
 				InlineFunctionExpansion="1"
 				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;../../../libs/sdlmm/include;"$(libpng)";"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				OmitFramePointers="false"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;../../../libs/sdlmm/include;"$(libpng)";"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;FREEMAPZOOM;NEWKEYB;_WIN32_;karteneditor;_SDL_;NOMINMAX;LUAINTERFACE"
 				StringPooling="true"
 				RuntimeLibrary="2"
@@ -155,10 +155,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.lib paragui_static.lib physfs.lib freetype.lib libexpat.lib libpng13.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-vc90-2_0.lib  paragui_static.lib physfs.lib freetype.lib libexpat.lib libpng13.lib lua.lib"
 				OutputFile="$(OutDir)/bin/mapeditor2.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""../../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
+				AdditionalLibraryDirectories=""../../../$(ConfigurationName)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationName)""
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/mapeditor.pdb"
diff --git a/source/win32/msvc/pbpeditor/mapeditor-icon.ico b/source/win32/msvc/pbpeditor/mapeditor-icon.ico
deleted file mode 100644
index 66c552d..0000000
Binary files a/source/win32/msvc/pbpeditor/mapeditor-icon.ico and /dev/null differ
diff --git a/source/win32/msvc/pbpeditor/mapeditor.rc b/source/win32/msvc/pbpeditor/mapeditor.rc
index 3a27f4e..74bc29b 100644
--- a/source/win32/msvc/pbpeditor/mapeditor.rc
+++ b/source/win32/msvc/pbpeditor/mapeditor.rc
@@ -27,7 +27,7 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
 
 // Icon with lowest ID value placed first to ensure application icon
 // remains consistent on all systems.
-IDI_ICON1               ICON                    "mapeditor-icon.ico"
+IDI_ICON1               ICON                    "pbpeditor-icon.ico"
 #endif    // German (Germany) resources
 /////////////////////////////////////////////////////////////////////////////
 
diff --git a/source/win32/msvc/pbpeditor/pbpeditor-icon.ico b/source/win32/msvc/pbpeditor/pbpeditor-icon.ico
new file mode 100644
index 0000000..e7c5b84
Binary files /dev/null and b/source/win32/msvc/pbpeditor/pbpeditor-icon.ico differ
diff --git a/source/win32/msvc/pbpeditor/pbpeditor.vcproj b/source/win32/msvc/pbpeditor/pbpeditor.vcproj
index 171fed6..aa1a5ea 100644
--- a/source/win32/msvc/pbpeditor/pbpeditor.vcproj
+++ b/source/win32/msvc/pbpeditor/pbpeditor.vcproj
@@ -43,7 +43,7 @@
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
 				Optimization="0"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;ASC_DEBUG;FREEMAPZOOM;NEWKEYB;_WIN32_;karteneditor;_SDL_;NOMINMAX;pbpeditor;LUAINTERFACE"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -67,10 +67,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.debug.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib libpng13d.lib libcurl_imp.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-vc90-d-2_0.lib paragui_static.lib physfs.lib freetype_D.lib libexpat.lib libpng13d.lib libcurl_imp.lib lua.lib"
 				OutputFile="$(OutDir)/bin/pbpeditor2.exe"
 				LinkIncremental="2"
-				AdditionalLibraryDirectories=""$(SDL_image)/VisualC/$(ConfigurationName)";"$(SDL_image)/lib";"../../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)&qu [...]
+				AdditionalLibraryDirectories=""$(SDL_image)/VisualC/$(ConfigurationName)";"$(SDL_image)/lib";"../../../$(ConfigurationName)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/$(ConfigurationName)";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(Configura [...]
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/pbpeditor.pdb"
@@ -127,11 +127,11 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalOptions="/MP"
-				Optimization="2"
+				Optimization="3"
 				InlineFunctionExpansion="1"
 				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
+				OmitFramePointers="false"
+				AdditionalIncludeDirectories="../.;"$(SDL)/include";"$(SDL_image)";../../../libs/sdlmm/src;../../../libs/getopt;"$(libsigcpp2)";../../../libs/paragui/include;"../../../libs/loki-0.1.6/include";../../../libs/bzlib"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;FREEMAPZOOM;NEWKEYB;_WIN32_;karteneditor;_SDL_;NOMINMAX;pbpeditor;LUAINTERFACE"
 				StringPooling="true"
 				RuntimeLibrary="2"
@@ -156,10 +156,10 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib sigc-1.2.lib paragui_static.lib physfs.lib freetype.lib libexpat.lib libpng13.lib libcurl_imp.lib lua.lib"
+				AdditionalDependencies="triangulate.lib libbzip2.lib SDLmm.lib SDL.lib SDL_image.lib SDL_mixer.lib SDLmain.lib  sigc-vc90-2_0.lib paragui_static.lib physfs.lib freetype.lib libexpat.lib libpng13.lib libcurl_imp.lib lua.lib"
 				OutputFile="$(OutDir)/bin/pbpeditor2.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories=""$(SDL_image)/VisualC/$(ConfigurationName)";"$(SDL_image)/lib";"../../../$(ConfigurationName)/lib";"$(libsigcpp)\MSVC_Net2003\$(ConfigurationName)\";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";& [...]
+				AdditionalLibraryDirectories=""$(SDL_image)/VisualC/$(ConfigurationName)";"$(SDL_image)/lib";"../../../$(ConfigurationName)/lib";"../../../libs/SDLmm/SDLmm/$(ConfigurationName)";"$(SDL)/VisualC/SDLmain/Release_NOSTDIO";"$(SDL)/VisualC/SDL/$(ConfigurationName)";"../../../libs/paragui/VisualC/$(ConfigurationName)";"$(physfs)/$(ConfigurationName)";"$(libpng)\projects\visualc71\Win32_DLL_$(ConfigurationN [...]
 				ManifestFile="$(OutDir)\bin\$(TargetFileName).intermediate.manifest"
 				GenerateDebugInformation="true"
 				ProgramDatabaseFile="$(OutDir)/bin/pbpeditor.pdb"
@@ -1128,11 +1128,11 @@
 			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
 			>
 			<File
-				RelativePath=".\mapeditor-icon.ico"
+				RelativePath=".\mapeditor.rc"
 				>
 			</File>
 			<File
-				RelativePath=".\mapeditor.rc"
+				RelativePath=".\pbpeditor-icon.ico"
 				>
 			</File>
 		</Filter>
diff --git a/source/win32/win32-errormsg.cpp b/source/win32/win32-errormsg.cpp
index bfe57b5..3ab6960 100644
--- a/source/win32/win32-errormsg.cpp
+++ b/source/win32/win32-errormsg.cpp
@@ -23,7 +23,7 @@ void Win32IoErrorHandler::printError( const ASCString& msg )
 
 Win32IoErrorHandler::Win32IoErrorHandler()
 {
-   MessagingHub::Instance().error.connect( SigC::slot( *this, &Win32IoErrorHandler::printError ));
-   MessagingHub::Instance().fatalError.connect( SigC::slot( *this, &Win32IoErrorHandler::printError ));
+   MessagingHub::Instance().error.connect( sigc::mem_fun( *this, &Win32IoErrorHandler::printError ));
+   MessagingHub::Instance().fatalError.connect( sigc::mem_fun( *this, &Win32IoErrorHandler::printError ));
 }
 
diff --git a/source/win32/win32-errormsg.h b/source/win32/win32-errormsg.h
index 506a26b..6fd751f 100644
--- a/source/win32/win32-errormsg.h
+++ b/source/win32/win32-errormsg.h
@@ -16,7 +16,7 @@
 #include "../ascstring.h"
 
 
-  class Win32IoErrorHandler : public SigC::Object {
+  class Win32IoErrorHandler : public sigc::trackable {
        void printError( const ASCString& msg );
      public:
         Win32IoErrorHandler();
diff --git a/test-driver b/test-driver
index 32bf39e..d306056 100755
--- a/test-driver
+++ b/test-driver
@@ -1,7 +1,7 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
 
 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
@@ -44,13 +44,12 @@ print_usage ()
 Usage:
   test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
               [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 END
 }
 
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
 test_name= # Used for reporting.
 log_file=  # Where to save the output of the test script.
 trs_file=  # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@ while test $# -gt 0; do
   --enable-hard-errors) enable_hard_errors=$2; shift;;
   --) shift; break;;
   -*) usage_error "invalid option: '$1'";;
+   *) break;;
   esac
   shift
 done
 
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
 if test $color_tests = yes; then
   # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
   red='' # Red.
diff --git a/unittester/Makefile.in b/unittester/Makefile.in
index 8eeceee..ea48909 100644
--- a/unittester/Makefile.in
+++ b/unittester/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -437,6 +437,9 @@ WX_LIBS = @WX_LIBS@
 WX_LIBS_STATIC = @WX_LIBS_STATIC@
 WX_RESCOMP = @WX_RESCOMP@
 WX_VERSION = @WX_VERSION@
+WX_VERSION_MAJOR = @WX_VERSION_MAJOR@
+WX_VERSION_MICRO = @WX_VERSION_MICRO@
+WX_VERSION_MINOR = @WX_VERSION_MINOR@
 _libcurl_config = @_libcurl_config@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/asc.git



More information about the Pkg-games-commits mailing list