Index: tests/lib/GeoExt/data/FeatureRecord.html
===================================================================
--- tests/lib/GeoExt/data/FeatureRecord.html	(revision 379)
+++ tests/lib/GeoExt/data/FeatureRecord.html	(working copy)
@@ -10,7 +10,7 @@
     <script type="text/javascript">
        
         function test_featurerecord(t) {
-            t.plan(14);
+            t.plan(15);
 
             var c, feature, record;
             
@@ -36,6 +36,8 @@
                  "\"create(o)\" returns a func with a \"extra1\" field in its prototype"); 
             t.eq(c.prototype.fields.items[4].name, "extra2",
                  "\"create(o)\" returns a func with a \"extra2\" field in its prototype"); 
+            t.eq(GeoExt.data.FeatureRecord.prototype.fields.items.length, 3, "create() method does not modify class prototype's fields");
+        
 
             feature = new OpenLayers.Feature();
             record = new c({feature: feature, state: feature.state, fid: feature.fid}, feature.id);
Index: tests/lib/GeoExt/data/LayerRecord.html
===================================================================
--- tests/lib/GeoExt/data/LayerRecord.html	(revision 379)
+++ tests/lib/GeoExt/data/LayerRecord.html	(working copy)
@@ -9,7 +9,7 @@
     <script type="text/javascript">
        
         function test_layerrecord(t) {
-            t.plan(12);
+            t.plan(13);
 
             var c, layer, record;
             
@@ -31,7 +31,9 @@
                  "\"create(o)\" returns a func with a \"extra1\" field in its prototype"); 
             t.eq(c.prototype.fields.items[3].name, "extra2",
                  "\"create(o)\" returns a func with a \"extra2\" field in its prototype"); 
+            t.eq(GeoExt.data.LayerRecord.prototype.fields.items.length, 2, "create() method does not modify class prototype's fields");
 
+
             layer = new OpenLayers.Layer();
             record = new c({layer: layer, title: layer.name}, layer.id);
             t.ok(record instanceof GeoExt.data.LayerRecord, "create returns a constructor (LayerRecord)");
Index: lib/GeoExt/data/FeatureRecord.js
===================================================================
--- lib/GeoExt/data/FeatureRecord.js	(revision 379)
+++ lib/GeoExt/data/FeatureRecord.js	(working copy)
@@ -55,10 +55,25 @@
 GeoExt.data.FeatureRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.FeatureRecord, {});
     var p = f.prototype;
-    if(o) {
+
+    var oldFields = p.fields;    
+    p.fields = new Ext.util.MixedCollection(false, function(field){
+        return field.name;
+    });
+
+    oldFields.each(function(field){
+        p.fields.add(field);
+    });
+
+    if(o){
         for(var i = 0, len = o.length; i < len; i++){
             p.fields.add(new Ext.data.Field(o[i]));
         }
     }
+
+    f.getField = function(name){
+        return p.fields.get(name);
+    };
+
     return f;
 };
Index: lib/GeoExt/data/LayerRecord.js
===================================================================
--- lib/GeoExt/data/LayerRecord.js	(revision 379)
+++ lib/GeoExt/data/LayerRecord.js	(working copy)
@@ -63,10 +63,25 @@
 GeoExt.data.LayerRecord.create = function(o) {
     var f = Ext.extend(GeoExt.data.LayerRecord, {});
     var p = f.prototype;
-    if(o) {
+
+    var oldFields = p.fields;    
+    p.fields = new Ext.util.MixedCollection(false, function(field){
+        return field.name;
+    });
+
+    oldFields.each(function(field){
+        p.fields.add(field);
+    });
+
+    if(o){
         for(var i = 0, len = o.length; i < len; i++){
             p.fields.add(new Ext.data.Field(o[i]));
         }
     }
+
+    f.getField = function(name){
+        return p.fields.get(name);
+    };
+
     return f;
 };
