Ayuda con este mal diseño de api se que se puede hacer con dos tres lineas de otra librería pero quiero practicar el javascript limpio, le dejo el código de mi modulo.

Código Javascript :

define(function() {
    var _isOpen,
        _toggleButton,
        _target;

    function init(toggle, target, isOpen) {
        _toggleButton = document.getElementById(toggle);
        _target = document.getElementById(target);
        _isOpen = isOpen;

        console.log(_target.id + " " + _toggleButton.id);
        _toggleButton.addEventListener('click', function(e) {
            e.preventDefault();

            if(_isOpen) {
                removeClass(_target, 'open');
                addClass(_target, 'close');
            } else {
                removeClass(_target, 'close');
                addClass(_target, 'open');
            }

            _isOpen = !_isOpen;
        }, false);
    }

    function hasClass(el, className) {
        return el.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
    }

    function addClass(el, className) {
        el.className += " " + className;
    }

    function removeClass(el, className) {
        if(hasClass(el, className)) {
            var exp = new RegExp('(\\s|^)' + className + '(\\s|$)');
            el.className = el.className.replace(exp, "");
        }
    }

    function isOpen() {
        return _isOpen;
    }

    return {
        init: init,
        isOpen: isOpen
    }
});


y luego lo llamo

Código Javascript :

require(['js/modulos/toggle'], function (toggle) {
    var toggleNav = toggle.init("toggle-menu", "toggle-dropdown", true);
    var togglePlayer = toggle.init("toggle-player", "player", false);
});

el problema es que el toggleNav afecta al toggle-player y el togglePlayer funciona correctamente, es como si a la segunda vuelta el target primero se perdiera y quedara el ultimo..alguna idea de como solucionar esto.