code: function(element, options) {
        var element = element,
            s = this.helpers.clone(this.settings),
            id = 'audiojs'+this.instanceCount,
            wrapperId = 'audiojs_wrapper'+this.instanceCount,
            instanceCount = this.instanceCount++;
  
        // Check for `autoplay`, `loop` and `preload` attributes and write them into the settings.
        if (element.getAttribute('autoplay') != null) s.autoplay = true;
        if (element.getAttribute('loop') != null) s.loop = true;
        if (element.getAttribute('preload') == 'none') s.preload = false;
        // Merge the default settings with the user-defined `options`.
        if (options) this.helpers.merge(s, options);
  
        // Inject the player html if required.
        if (s.createPlayer.markup) element = this.createPlayer(element, s.createPlayer, wrapperId);
        else element.parentNode.setAttribute('id', wrapperId);
  
        // Return a new `audiojs` instance.
        var audio = new container[audiojsInstance](element, s);
  
        // If `<audio>` or mp3 playback isn't supported, insert the swf & attach the required events for it.
        if (s.useFlash && s.hasFlash) {
          this.injectFlash(audio, id);
          this.attachFlashEvents(audio.wrapper, audio);
        } else if (s.useFlash && !s.hasFlash) {
          this.settings.flashError.apply(audio);
        }
  
        // Attach event callbacks to the new audiojs instance.
        if (!s.useFlash || (s.useFlash && s.hasFlash)) this.attachEvents(audio.wrapper, audio);
  
        // Store the newly-created `audiojs` instance.
        this.instances[id] = audio;
        return audio;
      }
docs: ### Creating and returning a new instance This goes through all the steps required to build out a usable `audiojs` instance.