diff --git a/src/mra.py b/src/mra.py
index ecddeeaf08def775d6f903b0c551d8990634942a..5101f7fffdf4f65b0b830ac4438b6f933ea08fc9 100644
--- a/src/mra.py
+++ b/src/mra.py
@@ -824,23 +824,23 @@ class Workspace(Mapfile):
 
     # Coverages
 
-    def iter_coveragemodels(self, ds_name=None, **kwargs):
-        return self.iter_layermodels("coverage", ds_name, **kwargs)
+    def iter_coveragemodels(self, cs_name=None, **kwargs):
+        return self.iter_layermodels("coverage", cs_name, **kwargs)
 
-    def get_coveragemodel(self, ds_name, ft_name):
-        return self.get_layermodel("coverage", ds_name, ft_name)
+    def get_coveragemodel(self, cs_name, c_name):
+        return self.get_layermodel("coverage", cs_name, c_name)
 
-    def has_coveragemodel(self, ds_name, ft_name):
-        return self.has_layermodel("coverage", ds_name, ft_name)
+    def has_coveragemodel(self, cs_name, c_name):
+        return self.has_layermodel("coverage", cs_name, c_name)
 
-    def create_coveragemodel(self, ds_name, ft_name, metadata={}):
-        return self.create_layermodel("coverage", ds_name, ft_name, metadata)
+    def create_coveragemodel(self, cs_name, c_name, metadata={}):
+        return self.create_layermodel("coverage", cs_name, c_name, metadata)
 
-    def update_coveragemodel(self, ds_name, ft_name, metadata={}):
-        return self.update_layermodel("coverage", ds_name, ft_name, metadata={})
+    def update_coveragemodel(self, cs_name, c_name, metadata={}):
+        return self.update_layermodel("coverage", cs_name, c_name, metadata={})
 
-    def delete_coveragemodel(self, ds_name, ft_name):
-        return self.delete_layermodel("coverage", ds_name, ft_name)
+    def delete_coveragemodel(self, cs_name, c_name):
+        return self.delete_layermodel("coverage", cs_name, c_name)
 
 # Finaly the global context:
 
@@ -952,7 +952,7 @@ class MRA(object):
             raise KeyError(name)
 
     def delete_style(self, name):
-        path = self.get_style_path(s_name)
+        path = self.get_style_path(name)
         try:
             os.remove(path)
         except (OSError, IOError):
diff --git a/src/server.py b/src/server.py
index 5197a20075e237d69fbe707f57d5938b3339b0af..b1f04e5a98aabd9d936c73a97949163025d60700 100755
--- a/src/server.py
+++ b/src/server.py
@@ -27,7 +27,6 @@
 """
     URL mapping infrastructure and HTTP methods used by the REST API.
 
-    MRA is following the model: <container> --- <element>.
 
 """
 
@@ -144,6 +143,9 @@ class workspace(object):
                     })
                 }
 
+    # TODO: def PUT(...
+    # TODO: def DELETE(...
+
 class datastores(object):
     """Data stores container.
 
@@ -503,7 +505,9 @@ class coveragestore(object):
         """Modify coverage store <ds>."""
         
         ws = get_workspace(ws_name)
-        data = get_data(name="coverageStore", mandatory=["name"], authorized=["name", "title", "abstract", "connectionParameters"])
+        data = get_data(name="coverageStore", 
+                        mandatory=["name"], 
+                        authorized=["name", "title", "abstract", "connectionParameters"])
         if cs_name != data.pop("name"):
             raise webapp.Forbidden("Can't change the name of a coverage store.")
 
@@ -513,12 +517,12 @@ class coveragestore(object):
 
     @HTTPCompatible()
     def DELETE(self, ws_name, cs_name, format):
-        """Delete coverage store <ds>."""
+        """Delete coverage store <cs>."""
 
         ws = get_workspace(ws_name)
         # TODO: check, this is not consistent between ds/cs.
         # We need to check if this datastore is empty.
-        assert_is_empty(ws.iter_coverages(cs_name=cs_name), "coveragestore", ds_name)
+        assert_is_empty(ws.iter_coveragemodels(cs_name=cs_name), "coveragestore", cs_name)
 
         with webapp.mightNotFound("coverageStore", workspace=ws_name):
             ws.delete_coveragestore(cs_name)
@@ -555,6 +559,13 @@ class coverages(object):
                 ws.create_coveragemodel(data["name"], cs_name, data)
         ws.save()
 
+        # Then creates the associated layer by default:
+        model = ws.get_coveragemodel(cs_name, data["name"])
+        mf = mra.get_available()
+        with webapp.mightConflict():
+            mf.create_layer(model, data["name"], True)
+        mf.save()
+
         webapp.Created("%s/workspaces/%s/coveragestores/%s/coverages/%s.%s" % (
                 web.ctx.home, ws.name, cs_name, data["name"], format))
 
@@ -659,7 +670,7 @@ class coverage(object):
         # We need to check if there are any layers using this.
         mf = mra.get_available()
         assert_is_empty(mf.iter_layers(mra={"name":c_name, "workspace":ws_name, "storage":cs_name,
-                                            "type":"coverage"}), "coverage", ft_name)
+                                            "type":"coverage"}), "coverage", c_name)
 
         with webapp.mightNotFound("coverage", coveragestore=cs_name):
             ws.delete_coveragemodel(c_name, cs_name)
@@ -700,7 +711,7 @@ class files(object):
             # Create the store if it seems legit and it does not exist.
             if st_type == "datastores" or st_type == "coveragestores":
                 st_type = st_type[:-1] # Remove trailing 's'
-                with webapp.mightConflict("dataStore", workspace=ws_name):
+                with webapp.mightConflict("Workspace", workspace=ws_name):
                     ws.create_store(st_type, st_name, {})
             # Finaly check if its OK now.
             with webapp.mightNotFound(message="Store {exception} does not exist "
@@ -823,7 +834,7 @@ class style(object):
     def GET(self, s_name, format):
         """Return style <s>."""
 
-        with webapp.mightNotFound():
+        with webapp.mightNotFound(message="Style \"%s\" does not exist." % s_name):
             style = mra.get_style(s_name)
 
         if format == "sld":
@@ -840,19 +851,13 @@ class style(object):
     def PUT(self, s_name, format):
         """Modify style <s>."""
 
-        #TODO: Also update layers using this style.
-        with webapp.mightNotFound():
+        # TODO: Also update layers using this style.
+        with webapp.mightNotFound(message="Style \"%s\" does not exist." % s_name):
             mra.delete_style(s_name)
         data = web.data()
         mra.create_style(s_name, data)
 
-    @HTTPCompatible()
-    def DELETE(self, s_name, format):
-        """Delete style <s>."""
-        
-        #TODO: Maybe check for layers using this style?
-        with webapp.mightNotFound():
-            mra.delete_style(s_name)
+    # TODO: def DELETE(...
 
 class layers(object):
     """Layers container.
@@ -939,38 +944,42 @@ class layer(object):
             "coverage": ("coverage", "coveragestore")
             }[layer.get_mra_metadata("type")]
 
-        # Check CLASSGROUP
-        dflt_style = layer.ms.classgroup
-        if dflt_style == None:
-            # If is 'None': take the first style as would MapServer.
-            for s_name in layer.iter_styles():
-                dflt_style = s_name
-                break
-
-        return {"layer" : {
+        response = {"layer": {
                     "name": l_name,
                     "type": layer.get_type_name(),
-                    "defaultStyle": {
-                        "name": dflt_style,
-                        "href": "%s/styles/%s.%s" % (web.ctx.home, dflt_style, format),
-                        },
-                    "styles": [{ 
-                            # TODO: Add attr class="linked-hash-set"
-                            "name": s_name,
-                            "href": "%s/styles/%s.%s" % (web.ctx.home, s_name, format),
-                            } for s_name in layer.iter_styles() if s_name != dflt_style],
                     "resource": { 
                         # TODO: Add attr class="featureType|coverage"
                         "name": layer.get_mra_metadata("name"),
                         "href": "%s/workspaces/%s/%ss/%s/%ss/%s.%s" % (
                             web.ctx.home, layer.get_mra_metadata("workspace"),
-                            store_type, layer.get_mra_metadata("storage"), data_type, layer.get_mra_metadata("name"), format),
+                            store_type, layer.get_mra_metadata("storage"), 
+                            data_type, layer.get_mra_metadata("name"), format),
                         },
                     "enabled": bool(layer.ms.status), # TODO because it's fictitious...
                     # "attribution" => TODO?
                     # "path" => TODO?
-                    }
-                }
+                    }}
+
+        # Check CLASSGROUP
+        dflt_style = layer.ms.classgroup
+        if dflt_style == None:
+            # If is 'None': take the first style as would MapServer.
+            for s_name in layer.iter_styles():
+                dflt_style = s_name
+                break
+        if dflt_style == None:
+            return response
+
+        response.update({"defaultStyle": {"name": dflt_style,
+                                          "href": "%s/styles/%s.%s" % (web.ctx.home, dflt_style, format)},})
+      
+        styles = [{"name": s_name,
+                   "href": "%s/styles/%s.%s" % (web.ctx.home, s_name, format),
+                   } for s_name in layer.iter_styles() if s_name != dflt_style]
+        if not styles:
+            return response
+
+        return response.update({"styles": styles})
 
     @HTTPCompatible()
     def PUT(self, l_name, format):
@@ -1087,6 +1096,9 @@ class layerfields(object):
         with webapp.mightNotFound():
             layer = mf.get_layer(l_name)
 
+        if layer.get_type_name() == "RASTER":
+            return {"fields": []}
+
         fields = [{
             "name": layer.get_metadata("gml_%s_alias" % field, None),
             "type": layer.get_metadata("gml_%s_type" % field, None),