--- /dev/null
+--- pingus-0.5.0pre3.orig/src/PinguActionFactory.cc
++++ pingus-0.5.0pre3/src/PinguActionFactory.cc
+@@ -67,7 +67,7 @@
+ {
+ new PinguActionFactoryImpl<RocketLauncher> ("rocketlauncher");
+ new PinguActionFactoryImpl<Boarder> ("boarder");
+- new PinguActionFactoryImpl<Superman> ("");
++ new PinguActionFactoryImpl<Superman> ("superman");
+ new PinguActionFactoryImpl<Angel> ("angel");
+ new PinguActionFactoryImpl<Basher> ("basher");
+ new PinguActionFactoryImpl<Blocker> ("blocker");
+--- pingus-0.5.0pre3.orig/src/Client.cc
++++ pingus-0.5.0pre3/src/Client.cc
+@@ -336,8 +336,8 @@
+ //CL_Input::chain_button_press.remove(this);
+
+ // Disconnect segfaults
+- CL_Input::sig_button_press.disconnect (on_button_press_slot);
+- CL_Input::sig_button_release.disconnect (on_button_release_slot);
++ CL_Input::sig_button_press ().disconnect (on_button_press_slot);
++ CL_Input::sig_button_release ().disconnect (on_button_release_slot);
+
+ enabled = false;
+ }
+--- pingus-0.5.0pre3.orig/src/editor/Editor.cc
++++ pingus-0.5.0pre3/src/editor/Editor.cc
+@@ -98,9 +98,9 @@
+ //CL_Input::chain_button_release.push_back(event);
+
+ on_button_press_slot
+- = CL_Input::sig_button_press.connect(event, &EditorEvent::on_button_press);
++ = CL_Input::sig_button_press().connect(event, &EditorEvent::on_button_press);
+ on_button_release_slot
+- = CL_Input::sig_button_release.connect(event, &EditorEvent::on_button_release);
++ = CL_Input::sig_button_release().connect(event, &EditorEvent::on_button_release);
+
+ if (verbose) std::cout << "done: " << event_handler_ref_counter << std::endl;
+ }
+@@ -119,8 +119,8 @@
+ //CL_Input::chain_button_release.remove(event);
+ //CL_Input::chain_button_press.remove(event);
+
+- CL_Input::sig_button_press.disconnect (on_button_press_slot);
+- CL_Input::sig_button_release.disconnect (on_button_release_slot);
++ CL_Input::sig_button_press().disconnect (on_button_press_slot);
++ CL_Input::sig_button_release().disconnect (on_button_release_slot);
+
+ CL_System::keep_alive();
+ if (verbose) std::cout << "done: " << event_handler_ref_counter << std::endl;
+--- pingus-0.5.0pre3.orig/src/PingusMain.cc
++++ pingus-0.5.0pre3/src/PingusMain.cc
+@@ -803,8 +803,8 @@
+ if (print_fps)
+ Display::add_flip_screen_hook(&fps_counter);
+
+- on_button_press_slot = CL_Input::sig_button_press.connect (&global_event, &GlobalEvent::on_button_press);
+- on_button_release_slot = CL_Input::sig_button_release.connect (&global_event, &GlobalEvent::on_button_release);
++ on_button_press_slot = CL_Input::sig_button_press ().connect (&global_event, &GlobalEvent::on_button_press);
++ on_button_release_slot = CL_Input::sig_button_release ().connect (&global_event, &GlobalEvent::on_button_release);
+
+ //pingus_story.display ();
+
+@@ -849,8 +849,8 @@
+ PingusMessageBox(" PingusError: " + err.get_message ());
+ }
+
+- CL_Input::sig_button_press.disconnect (on_button_press_slot);
+- CL_Input::sig_button_release.disconnect(on_button_release_slot);
++ CL_Input::sig_button_press ().disconnect (on_button_press_slot);
++ CL_Input::sig_button_release ().disconnect(on_button_release_slot);
+ }
+
+ int
+--- pingus-0.5.0pre3.orig/src/worldmap/PingusWorldMapManager.cc
++++ pingus-0.5.0pre3/src/worldmap/PingusWorldMapManager.cc
+@@ -49,9 +49,9 @@
+ void
+ PingusWorldMapManager::display ()
+ {
+- on_button_press_slot = CL_Input::sig_button_press.connect (this, &PingusWorldMapManager::on_button_press);
+- on_button_release_slot = CL_Input::sig_button_release.connect (this, &PingusWorldMapManager::on_button_release);
+- on_mouse_move_slot = CL_Input::sig_mouse_move.connect (this, &PingusWorldMapManager::on_mouse_move);
++ on_button_press_slot = CL_Input::sig_button_press ().connect (this, &PingusWorldMapManager::on_button_press);
++ on_button_release_slot = CL_Input::sig_button_release ().connect (this, &PingusWorldMapManager::on_button_release);
++ on_mouse_move_slot = CL_Input::sig_mouse_move ().connect (this, &PingusWorldMapManager::on_mouse_move);
+
+ init ();
+
+@@ -78,9 +78,9 @@
+ Display::flip_display ();
+ }
+
+- CL_Input::sig_button_press.disconnect(on_button_press_slot);
+- CL_Input::sig_button_release.disconnect(on_button_release_slot);
+- CL_Input::sig_mouse_move.disconnect(on_mouse_move_slot);
++ CL_Input::sig_button_press ().disconnect(on_button_press_slot);
++ CL_Input::sig_button_release ().disconnect(on_button_release_slot);
++ CL_Input::sig_mouse_move ().disconnect(on_mouse_move_slot);
+ }
+
+ void
+--- pingus-0.5.0pre3.orig/src/XMLhelper.hh
++++ pingus-0.5.0pre3/src/XMLhelper.hh
+@@ -35,7 +35,7 @@
+ #include <libxml/parser.h>
+ #undef list
+ #else
+- #include <parser.h>
++ #include <libxml/parser.h>
+ #endif
+
+ #include "ResDescriptor.hh"
+--- pingus-0.5.0pre3.orig/src/PingusMenuManager.cc
++++ pingus-0.5.0pre3/src/PingusMenuManager.cc
+@@ -51,18 +51,18 @@
+ {
+ puts ("register_events ()");
+ ++event_register_counter;
+- on_button_press_slot = CL_Input::sig_button_press.connect (this, &PingusMenuManager::on_button_press);
+- on_button_release_slot = CL_Input::sig_button_release.connect (this, &PingusMenuManager::on_button_release);
+- on_mouse_move_slot = CL_Input::sig_mouse_move.connect (this, &PingusMenuManager::on_mouse_move);
++ on_button_press_slot = CL_Input::sig_button_press ().connect (this, &PingusMenuManager::on_button_press);
++ on_button_release_slot = CL_Input::sig_button_release ().connect (this, &PingusMenuManager::on_button_release);
++ on_mouse_move_slot = CL_Input::sig_mouse_move ().connect (this, &PingusMenuManager::on_mouse_move);
+ }
+
+ /// Unregister all event-handling stuff
+ void
+ PingusMenuManager::unregister_events ()
+ {
+- CL_Input::sig_button_press.disconnect (on_button_press_slot);
+- CL_Input::sig_button_release.disconnect (on_button_release_slot);
+- CL_Input::sig_mouse_move.disconnect (on_mouse_move_slot);
++ CL_Input::sig_button_press ().disconnect (on_button_press_slot);
++ CL_Input::sig_button_release ().disconnect (on_button_release_slot);
++ CL_Input::sig_mouse_move ().disconnect (on_mouse_move_slot);
+ }
+
+ void
+--- pingus-0.5.0pre3.orig/src/ThemeSelector.cc
++++ pingus-0.5.0pre3/src/ThemeSelector.cc
+@@ -198,9 +198,9 @@
+
+ current_theme = themes.end();
+
+- on_button_press_slot = CL_Input::sig_button_press.connect (event, &ThemeSelector::Event::on_button_press);
+- on_button_release_slot = CL_Input::sig_button_release.connect (event, &ThemeSelector::Event::on_button_release);
+- on_mouse_move_slot = CL_Input::sig_mouse_move.connect (event, &ThemeSelector::Event::on_mouse_move);
++ on_button_press_slot = CL_Input::sig_button_press ().connect (event, &ThemeSelector::Event::on_button_press);
++ on_button_release_slot = CL_Input::sig_button_release ().connect (event, &ThemeSelector::Event::on_button_release);
++ on_mouse_move_slot = CL_Input::sig_mouse_move ().connect (event, &ThemeSelector::Event::on_mouse_move);
+ }
+
+ ThemeSelector::~ThemeSelector()
+@@ -214,9 +214,9 @@
+ // CL_Input::chain_button_press.remove(event);
+ // CL_Input::chain_button_release.remove(event);
+
+- CL_Input::sig_button_press.disconnect (on_button_press_slot);
+- CL_Input::sig_button_release.disconnect (on_button_release_slot);
+- CL_Input::sig_mouse_move.disconnect (on_mouse_move_slot);
++ CL_Input::sig_button_press ().disconnect (on_button_press_slot);
++ CL_Input::sig_button_release ().disconnect (on_button_release_slot);
++ CL_Input::sig_mouse_move ().disconnect (on_mouse_move_slot);
+
+ delete event;
+ }
+--- pingus-0.5.0pre3.orig/src/OptionMenu.cc
++++ pingus-0.5.0pre3/src/OptionMenu.cc
+@@ -339,8 +339,8 @@
+ //CL_Input::chain_button_press.push_back(event);
+ //CL_Input::chain_button_release.push_back(event);
+
+- CL_Input::sig_button_press.connect (event, &OptionMenu::Event::on_button_press);
+- CL_Input::sig_button_release.connect (event, &OptionMenu::Event::on_button_release);
++ CL_Input::sig_button_press ().connect (event, &OptionMenu::Event::on_button_press);
++ CL_Input::sig_button_release ().connect (event, &OptionMenu::Event::on_button_release);
+
+ Display::set_cursor(CL_MouseCursorProvider::load("Cursors/cursor",
+ PingusResource::get("game")));