         MP3_RST, MP3_CS, MP3_XDCS, MP3_DREQ,
         MP3_SDCS);
 
-// holds the number of possible tracks to play in each gesture
-int tracksBaff = 0;
-int tracksWins = 0;
-int tracksLose = 0;
-int tracksRock = 0;
+const int NUM_DIRECTORIES = 4;
 // holds the location of the tracks
 const char dirBaff[] = "BAFF";
 const char dirWins[] = "WINS";
 const char dirLose[] = "LOSE";
 const char dirRock[] = "ROCK";
 
+// holds the number of possible tracks to play in each gesture
+// also holds the location
+typedef struct
+{
+    char *loc;
+    int count;
+} DirInfo;
+
 EasyTransfer easyTransfer;
 SoundMessage message;
-char currDir[] = {4};
+DirInfo musicDir[NUM_DIRECTORIES];
 
 void setup() {
     Serial.begin(SERIAL_SPEED);

    Serial.flush();
}

void musicUnitTest() {
    // soft reset.  hate to have this here, but when I flip btw codec types, I get static w/o this.
    musicPlayer.stopPlaying();

    }
}

void playRandomTrack(DirInfo &dirInfo) {
    // soft reset.  hate to have this here, but when I flip btw codec types, I get static w/o this.
    musicPlayer.stopPlaying();
    musicPlayer.sciWrite(VS1053_REG_MODE, VS1053_MODE_SM_SDINEW | VS1053_MODE_SM_RESET);

    File dir = SD.open(dirInfo.loc);
    if ( ! dir.isDirectory() ) {
        Serial << F("Error! not a directory: ") << dirName << endl;
    }
    dir.rewindDirectory(); // can't seem to cleanly get the SD card file handlers to start at the top of the dir!!!!

    // pick a track
    int track = random(0, dirInfo.count);

    // seek file
    File entry = dir.openNextFile(); // have to open a file simply to get it's name!!
