(function (window, undefined) {
    var PluginName = {
        _defaults: {},
        _options: {},
        _events: {},
        _listeners: {},
        _sources: {},

        _addEvent: function (key, value) {
            this._events[key] = value;
        },
        _addListener: function (key, value) {
            this._events[key] = value;
        },
        _addSource: function (key, value) {
            this._sources[key] = value;
        },
        _setOptions: function (options) {

        },
        _setOption: function (name, value) {
            this._options[name] = value;
        }
    };

    var log = function (message, error) {
        message = message instanceof Array ? message : [message];
        window.console && this.ajaxOptions.debug && (error ? console.error : console.log).apply(console, message);
    };

    var extend = function (obj) {
        var source, prop;
        for (var i = 1, length = arguments.length; i < length; i++) {
            source = arguments[i];
            for (prop in source) {
                if (Object.prototype.hasOwnProperty.call(source, prop)) {
                    obj[prop] = source[prop];
                }
            }
        }
    };

    var PublicPluginName = function (options) {
        if (arguments.length > 1) {
            // Attempting to set an option
        } else if (arguments.length == 1) {

        } else {

        }
    };

    window.PluginName = PublicPluginName;
})(window);

@@ -33,16 +33,52 @@
     var 
+initialized = false;%0A    var Private
 PluginNa
@@ -100,24 +100,42 @@
 _defaults: %7B
+ stringify: false 
 %7D,%0A        _
@@ -215,16 +215,787 @@
 s: %7B%7D,%0A%0A
+        initialize: function(options)%7B%0A            if(!initialized)%7B%0A                // We need some things before the plugin can be truly initialized%0A                if(!options.sources)%7B%0A                    this.log('Must have at least one source available', true);%0A                %7D%0A%0A                for(var source in options.sources)%7B%0A                    if(options.sources.hasOwnProperty(source))%7B%0A                        this._addSource(source, options.sources%5Bsource%5D);%0A                    %7D%0A                %7D%0A%0A                this._options = extend(%7B%7D, this._defaults, options);%0A                initialized = true;%0A            %7D else %7B%0A                // @todo: maybe extend, might just ignore if an object is passed after initialization%0A            %7D%0A        %7D,%0A
         
@@ -1432,20 +1432,34 @@
 %7D;%0A%0A    
-var 
+PrivatePluginName.
 log = fu
@@ -1585,13 +1585,10 @@
 his.
-ajaxO
+_o
 ptio
@@ -2048,18 +2048,15 @@
     
-var Public
+window.
 Plug
@@ -2125,50 +2125,8 @@
 ) %7B%0A
-            // Attempting to set an option
 %0A   
@@ -2170,85 +2170,92 @@
 ) %7B%0A
-%0A        %7D else %7B%0A%0A        %7D%0A    %7D;%0A%0A    window.PluginName = PublicPluginName
+            PrivatePluginName.initialize(options);%0A        %7D else %7B%0A%0A        %7D%0A    %7D
 ;%0A%7D)

Add the beginnings of the initialization code