﻿diff --git fullcalendar.module fullcalendar.module
index 6d7f15b..e654222 100644
--- fullcalendar.module
+++ fullcalendar.module
@@ -36,6 +36,7 @@
     'version' => FULLCALENDAR_MIN_PLUGIN_VERSION,
     'js' => array(
       fullcalendar_get_js_path() => array(),
+      variable_get('fullcalendar_path', FULLCALENDAR_PATH) . '/gcal.js' => array(),
     ),
     'css' => array(
       variable_get('fullcalendar_path', FULLCALENDAR_PATH) . '/fullcalendar.css' => array(
@@ -237,7 +238,6 @@
   drupal_add_library('fullcalendar', 'fullcalendar');
   drupal_add_js(array('fullcalendar' => $settings), 'setting');
   drupal_add_js(drupal_get_path('module', 'fullcalendar') . '/fullcalendar.views.js');
-  drupal_add_js(drupal_get_path('module', 'fullcalendar') . '/gcal.js');
 }
 
 /**
diff --git fullcalendar.views.js fullcalendar.views.js
index 804b061..2cfd540 100644
--- fullcalendar.views.js
+++ fullcalendar.views.js
@@ -9,10 +9,41 @@
 
 Drupal.behaviors.fullCalendar = {
   attach: function(context) {
+
     // Process each view and its settings.
     $.each(Drupal.settings.fullcalendar, function(index, settings) {
       // Hide the failover display.
       $(index).find('.fullcalendar-content').hide(); 
+
+  	  // start out with an array with only the drupal event source
+  	  var eventSourcesArray = [
+  	    function(start, end, callback) {
+  	      var events = [];
+  	      $(index).find('.fullcalendar-event-details').each(function() {
+  	        events.push({
+  	          field: $(this).attr('field'),
+  	          index: $(this).attr('index'),
+  	          eid: $(this).attr('eid'),
+  	          entity_type: $(this).attr('entity_type'),
+  	          title: $(this).attr('title'),
+  	          start: $(this).attr('start'),
+  	          end: $(this).attr('end'),
+  	          url: $(this).attr('href'),
+  	          allDay: ($(this).attr('allDay') === '1'),
+  	          className: $(this).attr('cn'),
+  	          editable: $(this).attr('editable'),
+  	          dom_id: index
+  	        });
+  	      });
+  	      callback(events);
+  	    }
+  	  ];
+
+  	  // loop through your gcal feeds, add them to the array
+  	  $.each(settings.gcal, function(i, gcalEntry) {
+  	    eventSourcesArray.push($.fullCalendar.gcalFeed(gcalEntry[0], gcalEntry[1]));
+      });
+
       // Use .once() to protect against extra AJAX calls from Colorbox.
       $(index).find('.fullcalendar').once().fullCalendar({
         defaultView: settings.defaultView,
@@ -69,33 +100,7 @@
           week: settings.weekString,
           month: settings.monthString
         },
-        eventSources: [
-          // Add events from Drupal.
-          function(start, end, callback) {
-            var events = [];
-
-            $(index).find('.fullcalendar-event-details').each(function() {
-              events.push({
-                field: $(this).attr('field'),
-                index: $(this).attr('index'),
-                eid: $(this).attr('eid'),
-                entity_type: $(this).attr('entity_type'),
-                title: $(this).attr('title'),
-                start: $(this).attr('start'),
-                end: $(this).attr('end'),
-                url: $(this).attr('href'),
-                allDay: ($(this).attr('allDay') === '1'),
-                className: $(this).attr('cn'),
-                editable: $(this).attr('editable'),
-                dom_id: index
-              });
-            });
-
-            callback(events);
-          },
-          // Add events from Google Calendar feeds.
-          $.fullCalendar.gcalFeedArray(settings.gcal)
-        ],
+        eventSources: eventSourcesArray,
         eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
           $.post(Drupal.settings.basePath + 'fullcalendar/ajax/update/drop/'+ event.eid,
             'field=' + event.field + '&entity_type=' + event.entity_type + '&index=' + event.index + '&day_delta=' + dayDelta + '&minute_delta=' + minuteDelta + '&all_day=' + allDay + '&dom_id=' + event.dom_id,
diff --git gcal.js gcal.js
deleted file mode 100644
index 04f7caa..0000000 100644
--- gcal.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// $Id$
-
-/**
- * @file
- * Provides Google Calendar intergration with the FullCalendar plugin.
- */
-
-/*
- * FullCalendar v1.4.10 Google Calendar Extension
- *
- * Copyright (c) 2010 Adam Shaw
- * Dual licensed under the MIT and GPL licenses.
- *
- * Date: Sat Jan 1 23:46:27 2011 -0800
- *
- */
-
-(function($) {
-
-$.fullCalendar.gcalFeedArray = function(feedArray) {
-
-	return function(start, end, callback) {
-		var events = [];
-		var feedCount = 0;
-
-		if (feedArray.length == 0) {
-			callback(events);
-		}
-
-		$.each(feedArray, function(i, feedArrayEntry) {
-			feedUrl = feedArrayEntry[0];
-			feedUrl = feedUrl.replace(/\/basic$/, '/full');
-			options = feedArrayEntry[1] || {};
-
-			var params = {
-				'start-min': $.fullCalendar.formatDate(start, 'u'),
-				'start-max': $.fullCalendar.formatDate(end, 'u'),
-				'singleevents': true,
-				'events' : events,
-				'max-results': 9999
-			};
-			var ctz = options.currentTimezone;
-			if (ctz) {
-				params.ctz = ctz = ctz.replace(' ', '_');
-			}
-			$.getJSON(feedUrl + "?alt=json-in-script&callback=?", params, function(data) {
-				if (data.feed.entry) {
-					$.each(data.feed.entry, function(i, entry) {
-						var startStr = entry['gd$when'][0]['startTime'],
-							start = $.fullCalendar.parseISO8601(startStr, true),
-							end = $.fullCalendar.parseISO8601(entry['gd$when'][0]['endTime'], true),
-							allDay = startStr.indexOf('T') == -1,
-							url;
-						$.each(entry.link, function() {
-							if (this.type == 'text/html') {
-								url = this.href;
-								if (ctz) {
-									url += (url.indexOf('?') == -1 ? '?' : '&') + 'ctz=' + ctz;
-								}
-							}
-						});
-						if (allDay) {
-							$.fullCalendar.addDays(end, -1); // make inclusive
-						}
-						events.push({
-							id: entry['gCal$uid']['value'],
-							title: entry['title']['$t'],
-							url: url,
-							start: start,
-							end: end,
-							allDay: allDay,
-							location: entry['gd$where'][0]['valueString'],
-							description: entry['content']['$t'],
-							className: options.className,
-							editable: options.editable || false
-						});
-					});
-				}
-
-			feedCount++;
-			if (feedCount === feedArray.length) {
-				callback(events);
-			}
-			});
-		});
-	}
-}
-
-})(jQuery);
