diff --git a/plugins/layer_types/openlayers_layer_type_geojson.js b/plugins/layer_types/openlayers_layer_type_geojson.js
index c2a5458..858ebb5 100644
--- a/plugins/layer_types/openlayers_layer_type_geojson.js
+++ b/plugins/layer_types/openlayers_layer_type_geojson.js
@@ -38,6 +38,8 @@ Drupal.openlayers.layer.geojson = function(title, map, options) {
       layer.addFeatures(features);
       layer.events.triggerEvent('loadend');
     }
+
+    return layer;
   }
   else if (options.useBBOX) {
     options.strategies = [ new OpenLayers.Strategy.BBOX(options.resFactor) ];
@@ -45,24 +47,18 @@ Drupal.openlayers.layer.geojson = function(title, map, options) {
       url: options.url,
       format: new OpenLayers.Format.GeoJSON()
     });
-    var layer = new OpenLayers.Layer.Vector(title, options);
+
+    return new OpenLayers.Layer.Vector(title, options);
   }
   else {
-    var layer = new OpenLayers.Layer.Vector(title, options);
-
-    // Use an AJAX like call to get data from URL
-    OpenLayers.loadURL(options.url, {}, null, function (response) {
-      var format = new OpenLayers.Format.GeoJSON(geojson_options);
-      var features = format.read(response.responseText);
-      // Add features, if needed
-      if (features) {
-        layer.addFeatures(features);
-        layer.events.triggerEvent('loadend');
-      }
-    });
+    return new OpenLayers.Layer.Vector(title, $.extend(options, {
+      strategies: [new OpenLayers.Strategy.Fixed()],
+      protocol: new OpenLayers.Protocol.HTTP({
+        url: options.url,
+        format: new OpenLayers.Format.GeoJSON()
+      })
+    }));
   }
-
-  return layer;
 };
 
 })(jQuery);
