private void startLevel(String filename) {
    level = Level.loadLevel(filename);
    nextFootstep = 0;
    music = Gdx.audio.newMusic(Gdx.files.internal(level.getMusicFiles().poll()));
    music.play();
    final GameScreen thisGameScreen = this;
    music.setOnCompletionListener(
        new OnCompletionListener() {

          @Override
          public void onCompletion(Music music) {
            music.dispose();
            level.incrementCurrentSection();

            String nextMusicName = level.getMusicFiles().poll();
            if (!endingLevel) {
              if (nextMusicName != null) {
                Music nextMusic = Gdx.audio.newMusic(Gdx.files.internal(nextMusicName));
                nextMusic.play();
                nextMusic.setOnCompletionListener(this);
                thisGameScreen.music = nextMusic;
              } else {
                // End of level!
                // Play end of level sound
                // After it ends, load level 2
                Music endSound = Gdx.audio.newMusic(Gdx.files.internal("endOfLevel.ogg"));
                endSound.play();
                // final OnCompletionListener thisCompletionListener =
                // this;
                // this;
                endSound.setOnCompletionListener(
                    new OnCompletionListener() {

                      @Override
                      public void onCompletion(Music music) {
                        music.dispose();
                        startLevel("theme2.txt");
                      }
                    });
              }
            }
          }
        });
  }