diff --git a/ChangeLog b/ChangeLog
index 844ef961ae32a9b89de19acb45ff6b5bd987e07f..ce95336c96cac5277754e5a3d48a2bf4fad0a976 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Ali aliov@xfce.org
+	* Allow compilation without network manager support, since some
+	distros doesn't have it (like Slackware).
+	* settings/xfpm-settings.c connect to the signals after settings up all
+	the widgets this way we don't get property_changed signals for nothing.
+	* Register DBus error code only once at startup to avoid a Metadata
+	warning error domain.
+	* Update README, NEWS.
+	
 2009-07-15: Ali aliov@xfce.org
 	* Provides the following standard DBus methods:
 	CanReboot(),CanShutdown(),Reboot(),GetPowerSaveStatus().
diff --git a/NEWS b/NEWS
index 54260ae315847fd9f2041d376c50bae65f5e9cc5..68aeda78d279bc48bd49dab93f7d09804a9b9876 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,4 @@
-This software is a power manager for the Xfce desktop, 
-laptop users can set up a power profile for two different modes 
-"on battery power" and "on ac power", desktop users still can change 
-DPMS settings and CPU frequency using the settings dialog.
-
-The following features are supported:
-
-Battery monitoring
-Cpu frequency settings
-Monitor DPMS settings
-Suspend/Hibernate via HAL
-LCD brightness
-Lid,sleep and power switches control
+Current
+=======
+- Make it possible to compile without network manager support.
+- 
diff --git a/README b/README
index d11aa839dc73be3777177f28fdb236871a8168a4..c6555334ff1a6442b82b0b2453ac2be7f2ad82ab 100644
--- a/README
+++ b/README
@@ -1,9 +1,33 @@
-A power manager is an important software for laptop users
-This software supports alsmot all the features for making
-power management easy.
+What is it?
+===========
 
-This software is a part of Xfce goodies projects, in case you use it
-and you find any problems/bugs please report to:
+This software is a power manager for the Xfce desktop, Xfce power manager manages the power sources 
+on the computer and the devices that can be controlled to reduce their power consumption 
+(such as LCD brightness level, monitor sleep, CPU frequency scaling). 
+In addition, xfce4-power-manager provides a set of freedesktop-compliant DBus interfaces to 
+inform other applications about current power level so that they can adjust their power consumption.
 
-http://bugzilla.xfce.org/ 
-( Please attach the output of lshal )
\ No newline at end of file
+Required packages
+=================
+Parole depends on the following packages:
+
+ - Gtk 2.16 or above.
+ - Glib 2.16 or above.
+ - DBus 0.60 or above.
+ - DBus glib 0.70 or above.
+ - libxfcegui4 4.6.0 or above.
+ - libxfce4util 4.6.0 or above
+ - libnotify 0.4.1 or above.
+ - xfconf 4.6.0 or above.
+ - libxfce4panel 4.6.0 or above (for the panel plugins).
+ - DPMS X extension ( for DPMS support);
+
+ - HAL daemon version 0.5.6 or above is needed.
+
+How to report bugs?
+===================
+
+Bugs should be reported to the Xfce bug tracking system
+(http://bugzilla.xfce.org, product Parole). You will need to
+create an account for yourself.
+( Please attach the output of lshal )
diff --git a/configure.ac.in b/configure.ac.in
index a4dfa84dad8bebd67ca6b94083bad77583478b13..d6a898a04958fdacf15721c890f06d124409d72c 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -107,6 +107,17 @@ if test "x${ac_cv_have_decl_XF86XK_Hibernate}" != "xno"; then
   AC_DEFINE(HAVE_XF86XK_HIBERNATE, 1, [Define if XF86XK_Hibernate is available])
 fi
 
+#=======================================================#
+#              Network Manager support                  #
+#=======================================================#
+AC_ARG_ENABLE([network-manager], AC_HELP_STRING([--disable-network-manager], [Disable network manager support]),
+  [ac_network_manager=$enableval], [ac_network_manager=yes])
+AC_MSG_CHECKING([whether to build with network manager support.])
+if test "x$ac_network_manager = xyes"; then
+    AC_DEFINE(WITH_NETWORK_MANAGER, 1 , [Network Manager support])
+fi
+AC_MSG_RESULT([$ac_network_manager])
+
 #=======================================================#
 #                 Panel plugins ?                       #
 #=======================================================#
@@ -186,9 +197,10 @@ echo "
  
 	prefix:			$prefix
 	xdg autostart:		$sysconfdir/xdg/autostart
-   	DPMS         support:   $have_dpms
-  	Build panel  plugins:   $build_panel_plugins
-   	Debug        support:   $enable_debug
+   	DPMS:   		$have_dpms
+	Network manager:	$ac_network_manager
+  	Build panel:  		$build_panel_plugins
+   	Debug:		   	$enable_debug
 --------------------------------------------------
 
 Configuration finished, type make to compile"
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index ddfa3ac96073e9b00e177eb9e7644fc6c357cdc9..f9f156cb2ad4499e70a5066a9605d17575f361d0 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -1583,8 +1583,6 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean system_laptop,
     dialog = GTK_WIDGET (gtk_builder_get_object (xml, "xfpm-settings-dialog"));
     nt = GTK_WIDGET (gtk_builder_get_object (xml, "main-notebook"));
     
-    gtk_builder_connect_signals (xml, channel);
-
     xfpm_settings_on_ac (channel, user_privilege, can_suspend, can_hibernate, has_lcd_brightness, has_lid );
     
     if ( system_laptop )
@@ -1612,4 +1610,6 @@ xfpm_settings_dialog_new (XfconfChannel *channel, gboolean system_laptop,
 	g_signal_connect (dialog, "response", G_CALLBACK (dialog_response_cb), channel);
 	gtk_widget_show (dialog);
     }
+    
+    gtk_builder_connect_signals (xml, channel);
 }
diff --git a/src/xfpm-engine.c b/src/xfpm-engine.c
index 3a29d4bba9de10773e6e58b8e2719ad704b4ea32..37352e4901f6dc37d782ea32ab120c9537028163 100644
--- a/src/xfpm-engine.c
+++ b/src/xfpm-engine.c
@@ -734,10 +734,6 @@ xfpm_engine_dbus_class_init (XfpmEngineClass * klass)
 {
     dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
 				     &dbus_glib_xfpm_engine_object_info);
-
-    dbus_g_error_domain_register (XFPM_ERROR,
-				  "org.freedesktop.PowerManagement",
-				  XFPM_TYPE_ERROR);
 }
 
 static void
diff --git a/src/xfpm-errors.h b/src/xfpm-errors.h
index 7100a1c435186ddfd17da5e107acf1b709ced495..9f990ec4e050774174ba656bca11708525a15e4e 100644
--- a/src/xfpm-errors.h
+++ b/src/xfpm-errors.h
@@ -41,8 +41,8 @@ typedef enum
     
 } XfpmError;
 
-GType	xfpm_error_get_type  () G_GNUC_CONST;
-GQuark  xfpm_get_error_quark ();
+GType	xfpm_error_get_type  (void) G_GNUC_CONST;
+GQuark  xfpm_get_error_quark (void);
 
 
 G_END_DECLS
diff --git a/src/xfpm-inhibit.c b/src/xfpm-inhibit.c
index 80d49843e7d005dfc5ef11b66912374a0da77707..aac461bc05065d08f2e41d9fd1668565f8eccf49 100644
--- a/src/xfpm-inhibit.c
+++ b/src/xfpm-inhibit.c
@@ -305,9 +305,6 @@ static void xfpm_inhibit_dbus_class_init  (XfpmInhibitClass *klass)
     dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(klass),
 				    &dbus_glib_xfpm_inhibit_object_info);
 				    
-    dbus_g_error_domain_register (XFPM_ERROR, 
-				  "org.freedesktop.PowerManagement.Inhibit",
-				  XFPM_TYPE_ERROR);
 }
 
 static void xfpm_inhibit_dbus_init	  (XfpmInhibit *inhibit)
diff --git a/src/xfpm-manager.c b/src/xfpm-manager.c
index 24afe505dfeccf9f4349bcf15e2c5599ddd122f9..bf2ee72a99b1255133a6e27d3c9505954114629e 100644
--- a/src/xfpm-manager.c
+++ b/src/xfpm-manager.c
@@ -45,6 +45,7 @@
 #include "xfpm-engine.h"
 #include "xfpm-session.h"
 #include "xfpm-dbus-monitor.h"
+#include "xfpm-errors.h"
 
 static void xfpm_manager_finalize   (GObject *object);
 
@@ -214,6 +215,10 @@ void xfpm_manager_start (XfpmManager *manager)
     
     xfpm_manager_reserve_names (manager);
     
+    dbus_g_error_domain_register (XFPM_ERROR,
+				  NULL,
+				  XFPM_TYPE_ERROR);
+    
     hal_running = xfpm_dbus_monitor_hal_connected (manager->priv->monitor);
     
     if (!hal_running )
diff --git a/src/xfpm-network-manager.c b/src/xfpm-network-manager.c
index e978d9843fb45439df24db2f8a0b3fc40db64498..57d20f0eca73523906bcd14c9872f8f7f20474b8 100644
--- a/src/xfpm-network-manager.c
+++ b/src/xfpm-network-manager.c
@@ -33,6 +33,8 @@
  */
 gboolean 	xfpm_send_message_to_network_manager  	(const gchar *message)
 {
+#ifdef WITH_NETWORK_MANAGER
+
     DBusGConnection *bus   = NULL;
     DBusGProxy      *proxy = NULL;
     GError          *error = NULL;
@@ -61,5 +63,6 @@ gboolean 	xfpm_send_message_to_network_manager  	(const gchar *message)
     g_object_unref (G_OBJECT(proxy));
     dbus_g_connection_unref (bus);
     
+#endif /* WITH_NETWORK_MANAGER */
     return TRUE;
 }
diff --git a/src/xfpm-shutdown.c b/src/xfpm-shutdown.c
index df76d2fb82a5e8fa350f5aa8e79360bef99733a2..33b9fe4f59edb46428056cf5fff476a4ad412d34 100644
--- a/src/xfpm-shutdown.c
+++ b/src/xfpm-shutdown.c
@@ -413,7 +413,6 @@ void xfpm_shutdown	(XfpmShutdown *shutdown, GError **error)
     
     xfpm_send_message_to_network_manager ("sleep");
     
-    //FIXME: Shutdown the system without asking the session to do.
     if ( !xfpm_session_shutdown (shutdown->priv->session) )
     {
 	if ( !xfpm_shutdown_internal (dbus_g_connection_get_connection(shutdown->priv->bus), "Shutdown", NULL))