         #            else if change.type is 'delete'
         #                @deactivate change.name
 
+        window.plugins.helpers = helpers
+
         # Init every plugins
         Object.keys(window.plugins).forEach (pluginName) =>
             pluginConf = window.plugins[pluginName]

            , 200

    activate: (key) ->
        plugin = window.plugins[key]
        type   = plugin.type
        plugin.active = true

        # Add custom events listeners
        if plugin.listeners?
            for own event, listener of plugin.listeners
                window.addEventListener event, listener.bind(plugin)

        if plugin.onActivate
            plugin.onActivate()

        if type?
            for own pluginName, pluginConf of window.plugins
                if pluginName is key
                    continue
                if pluginConf.type is type and pluginConf.active
                    @deactivate pluginName

        event = new CustomEvent('plugin',
            detail:
                action: 'activate'
                name: key
        )
        window.dispatchEvent event

    deactivate: (key) ->
        plugin = window.plugins[key]
        plugin.active = false

        # remove custom events listeners
        if plugin.listeners?
            for own event, listener of plugin.listeners
                window.removeEventListener event, listener

        if plugin.onDeactivate
            plugin.onDeactivate()

        event = new CustomEvent('plugin',
            detail:
                action: 'deactivate'
                name: key
        )
        window.dispatchEvent event

    merge: (remote) ->
        for own pluginName, pluginConf of remote

            else
                if pluginConf.active
                    @activate pluginName

        if MutationObserver?

