diff -u core.orig/class.dc.namespace.php core/class.dc.namespace.php
--- core.orig/class.dc.namespace.php	2009-10-23 19:03:52.000000000 +0200
+++ core/class.dc.namespace.php	2010-01-18 19:42:01.451875000 +0100
@@ -254,7 +254,7 @@
 	}
 
 	/**
-	Removes an existing setting. Namespace 
+	Removes an existing setting.
 
 	@param	id		<b>string</b>		Setting ID
 	*/
@@ -279,6 +279,61 @@
 	}
 
 	/**
+	Deletes a setting (from both local and global settings).
+
+	@param	id	<b>string</b>		Setting ID
+	@return	<b>true</b> in case of success, <b>false</b> otherwise
+	*/
+	public function delete($id)
+	{
+		if (!$this->ns) {
+			throw new Exception(__('No namespace specified'));
+		}
+
+		if (!array_key_exists($id, $this->local_settings) && !array_key_exists($id, $this->global_settings)) {
+			return false;
+		}
+
+		// Remove the setting from all settings array
+		unset($this->settings[$id]);
+		unset($this->global_settings[$id]);
+		unset($this->local_settings[$id]);
+
+		// Delete setting from the the database
+		$strReq = 'DELETE FROM '.$this->table.
+			" WHERE setting_ns = '".$this->con->escape($this->ns)."' ".
+			" AND setting_id = '".$this->con->escape($id)."' ";
+		$this->con->execute($strReq);
+		return true;
+	}
+
+	/**
+	Renames a setting in the namespace.
+
+	@param	oldId	<b>string</b>		Current setting name
+	@param	newId	<b>string</b>		New settomg name
+	@return	<b>true</b> in case of success, <b>false</b> otherwise
+	*/
+	public function rename($oldId, $newId)
+	{
+		if (!array_key_exists($oldId, $this->settings) or array_key_exists($newId, $this->settings)) {
+			return false;
+		}
+
+		// Rename the setting in the settings array
+		$this->settings[$newId] = $this->settings[$oldId];
+		unset($this->settings[$oldId]);
+
+		// Rename the namespace in the database
+		$strReq = 'UPDATE '.$this->table.
+			" SET setting_id = '".$this->con->escape($newId)."' ".
+			" WHERE setting_ns = '".$this->con->escape($this->ns)."' ".
+			" AND setting_id = '".$this->con->escape($oldId)."' ";
+		$this->con->execute($strReq);
+		return true;
+	}
+
+	/**
 	Returns $settings property content.
 
 	@return	<b>array</b>
diff -u core.orig/class.dc.settings.php core/class.dc.settings.php
--- core.orig/class.dc.settings.php	2009-10-23 19:03:52.000000000 +0200
+++ core/class.dc.settings.php	2010-01-18 19:23:49.389375000 +0100
@@ -128,6 +128,53 @@
 	}
 
 	/**
+	Deletes a whole namespace with all settings pertaining to it.
+
+	@param	ns	<b>string</b>		Namespace name
+	@return	<b>true</b> in case of success, <b>false</b> otherwise
+	*/
+	public function delete($ns)
+	{
+		if (!array_key_exists($ns, $this->namespaces)) {
+			return false;
+		}
+
+		// Remove the namespace from the namespaces array
+		unset($this->namespaces[$ns]);
+
+		// Delete all settings from the namespace in the database
+		$strReq = 'DELETE FROM '.$this->table.
+			" WHERE setting_ns = '".$this->con->escape($ns)."' ";
+		$this->con->execute($strReq);
+		return true;
+	}
+
+	/**
+	Renames a namespace.
+
+	@param	oldNs	<b>string</b>		Current namespace name
+	@param	newNs	<b>string</b>		New namespace name
+	@return	<b>true</b> in case of success, <b>false</b> otherwise
+	*/
+	public function rename($oldNs, $newNs)
+	{
+		if (!array_key_exists($oldNs, $this->namespaces) or array_key_exists($newNs, $this->namespaces)) {
+			return false;
+		}
+
+		// Rename the namespace in the namespaces array
+		$this->namespaces[$newNs] = $this->namespace[$oldNs];
+		unset($this->namespaces[$oldNs]);
+
+		// Rename the namespace in the database
+		$strReq = 'UPDATE '.$this->table.
+			" SET setting_ns = '".$this->con->escape($newNs)."' ".
+			" WHERE setting_ns = '".$this->con->escape($oldNs)."' ";
+		$this->con->execute($strReq);
+		return true;
+	}
+
+	/**
 	Raises a E_USER_NOTICE errror for deprecated functions. 
 	This allows the developer to know he's been using deprecated functions.
 
