 
             o.opts.onLoad(_this) if $.isFunction(o.opts.onLoad)
 
+            # plugin keys ::start
+            # generate random key for resize event to prevent event namespace conflicts
+            o.resizeKey = "resize.#{ pluginName }_#{ o.generateRandomKey() }"
+            o.stateKey  = "#{ pluginName.toLowerCase() }-state"
+            # plugin keys ::end
+
             # add the wrapper class to the element
             o.el.addClass o.opts.wrapperClass
 
-            if o.opts.fixIEResize
-                _.each resize, (v, i) ->
-                    resize[i] = _.debounce(v, o.opts.debounceTime) if $.isFunction(v)
-
-            o.el.data stateKey, 'decompressed'
+            o.resize = _.debounce(o.resize, o.opts.debounceTime) if o.opts.fixIEResize
+
+            o.el.data o.stateKey, 'decompressed'
 
             # bind the element to a custom event named compress
             o.el.on "compress.#{ pluginName }", (e) ->

        o         = ($ el).data '_obj', {}
        _this     = this
        metadata  = ($ el).data "#{ pluginName.toLowerCase() }-options"
        stateKey  = "#{ pluginName.toLowerCase() }-state"
        resizeKey = "resize.#{ pluginName }"

        o.debug = ->
            # Skip browsers w/o firebug or console


                items = current.children 'li'

                current.data o.stateKey, 'compressed'

                # slice the items beginning to the second element up to the second to the last element
                hiddenItems = items
