diff --git a/src/mapfile.py b/src/mapfile.py
index 6ed93f6961a7e5e4184093ba17bddfd6e52ce7e5..0a0702ae88ee72416027ca3c2c953a1730b9d68c 100644
--- a/src/mapfile.py
+++ b/src/mapfile.py
@@ -90,7 +90,7 @@ class Layer(MetadataMixin):
 
     def get_extent(self):
         extent = self.ms.getExtent()
-        return stores.Extent(extent.minX, extent.minY, extent.maxX, extent.maxY)
+        return stores.Extent(extent.minx, extent.miny, extent.maxx, extent.maxy)
 
     def get_fields(self, mf=None):
         fields = self.get_metadata("gml_include_items", "")
@@ -166,26 +166,25 @@ class LayerGroup(object):
         self.mapfile = mapfile
 
     def iter_layers(self):
-        # return self.mapfile.iter_layers(attr={"GROUP":self.name})
-        return self.mapfile.iter_layers(attr={"wms_group_name":self.name})
+        return self.mapfile.iter_layers(meta={"wms_group_name":self.name})
 
     def get_layers(self):
         return list(self.iter_layers())
 
     def add_layer(self, layer):
         layer.ms.group = self.name
-        layer.set_metadatas("wms_group_name", self.name)
+        layer.set_metadata("wms_group_name", self.name)
         for k, v in self.mapfile.get_mra_metadata("layergroups")[self.name]:
-            layer.set_metadata("wms_group_%s", v)
+            layer.set_metadata("wms_group_%s" % k, v)
 
     def add(self, *args):
         for layer in args:
             if isinstance(layer, basestring):
-                layer = mapfile.get_layer(layer)
+                layer = self.mapfile.get_layer(layer)
             self.add_layer(layer)
 
     def remove_layer(self, layer):
-        layer.group = None
+        layer.ms.group = None
         for mkey in layer.get_metadata_keys():
             # (We really do not want to use iter_metadata_keys())
             if mkey.startswith("wms_group_"):
@@ -199,7 +198,7 @@ class LayerGroup(object):
 
     def clear(self):
         # Remove all the layers from this group.
-        for layer in self.mapfile.iter_layers(attr={"group": layer_group.name}):
+        for layer in self.mapfile.iter_layers(attr={"group": self.name}):
             self.remove_layer(layer)
 
     def get_extent(self):
@@ -207,10 +206,11 @@ class LayerGroup(object):
         if not layers:
             return stores.Extent(0, 0, 0, 0)
 
-        extent = layers[0]
+        extent = layers[0].get_extent()
         for layer in layers[1:]:
-            extent.addX(layer.minX, layer.maxX)
-            extent.addY(layer.minY, layer.maxY)
+            e = layer.get_extent()
+            extent.addX(e.minX, e.maxX)
+            extent.addY(e.minY, e.maxY)
 
         return extent
 
@@ -778,17 +778,17 @@ class Mapfile(MetadataMixin):
         lg = self.get_layergroup(lg_name)
         lg.remove(*args)
 
-    def delete_layergroup(self, layer_group):
-        if not isinstance(layer_group, LayerGroup):
-            layer_group = self.get_layergroup(layergroup)
+    def delete_layergroup(self, lg_name):
 
+        layer_group = self.get_layergroup(lg_name)
         # Remove all the layers from this group.
         for layer in self.iter_layers(attr={"group": layer_group.name}):
             layer_group.remove(layer)
 
         # Remove the group from mra metadats.
         with self.mra_metadata("layergroups", {}) as layergroups:
-            del layergroups[layer_group]
+            del layergroups[lg_name]
+
 
     # Styles:
 
diff --git a/src/metadata.py b/src/metadata.py
index 1af6ef9c8ee034d2f1046b1b29c705bdefca07a7..5baaa62a437b71c8f4904a25b50f947f18706cff 100644
--- a/src/metadata.py
+++ b/src/metadata.py
@@ -66,7 +66,7 @@ def iter_metadata_keys(obj):
     return keys
 
 def get_metadata_keys(obj):
-    return list(self.iter_metadata_keys)
+    return list(iter_metadata_keys(obj))
 
 def set_metadata(obj, key, value):
     obj.setMetaData(key, value)
diff --git a/src/server.py b/src/server.py
index 2c32b1f2e64147f4904f7a9244a39646cb29499f..0f1246074e9966feedce42bf3bafbdcf8f20c5a0 100755
--- a/src/server.py
+++ b/src/server.py
@@ -540,8 +540,10 @@ class style(object):
 
         return {
             "name": s_name,
-            #TODO: Return the correct value...
-            "sldVersion": Entries(["1.0.0"], tag_name="version"),
+            "sldVersion": Entries([
+                #TODO: Return the correct value...
+                "1.0.0"
+                ], tag_name="version"),
             "filename": s_name + ".sld",
             "href": "%s/maps/%s/styles/%s.sld" % (web.ctx.home, map_name, s_name)
             }
@@ -778,7 +780,7 @@ class layergroups(object):
 
         data = get_data(name="layerGroup", mandatory=["name"])
         lg_name = data.pop("name")
-        layers = data.pop("layers", [])
+        layers = [mf.get_layer(l_name) for l_name in data.pop("layers", [])]
 
         with webapp.mightConflict("layerGroup", mapfile=map_name):
             lg = mf.create_layergroup(lg_name, data)
@@ -794,7 +796,7 @@ class layergroup(object):
     @HTTPCompatible()
     def GET(self, map_name, lg_name, format):
         mf = get_mapfile(map_name)
-        with webapp.mightNotFound("layergroup", mapfile=map_name):
+        with webapp.mightNotFound("layerGroup", mapfile=map_name):
             lg = mf.get_layergroup(lg_name)
 
         extent = lg.get_extent()
@@ -836,9 +838,11 @@ class layergroup(object):
         mf.save()
 
     def DELETE(self, map_name, lg_name, format):
+
         mf = get_mapfile(map_name)
         with webapp.mightNotFound("layerGroup", mapfile=map_name):
             mf.delete_layergroup(lg_name)
+        mf.save()
 
 
 # Index: