 
 // formulate each address group into a convenient array
 void assignAddresses() {
+  bus0Devs[0] = &d0_0;
+  
   bus1Devs[0] = &d1_0;
   bus1Devs[1] = &d1_1;
   bus1Devs[2] = &d1_2;

  bus1Devs[5] = &d1_5;
  bus1Devs[6] = &d1_6;
  bus1Devs[7] = &d1_7;
  bus1Devs[8] = &d1_8;
  
  bus2Devs[0] = &d2_0;
  bus2Devs[1] = &d2_1;

  // Begin
  Serial.begin(9600);
  assignAddresses();
  dallas0.begin();
  dallas1.begin();
  dallas2.begin();
  
  // Get the addresses of connected devices.
  if (DEBUG) {
    Serial.println("Beginning.");
    Serial.print("Locating devices on ch. 0... Found ");
    Serial.print(dallas0.getDeviceCount(), DEC);
    Serial.println(" devices.");
    
    DeviceAddress tempDev;
    dallas0.requestTemperatures();
    for (int i=0; i<dallas0.getDeviceCount(); ++i) {
      if (!dallas0.getAddress(tempDev, i)) {
        Serial.print("  Unable to find address for Device ");
        Serial.println(i);
      } else {
        printAddress(tempDev);
        Serial.println(dallas0.getTempC(tempDev));
      }
    }
    
    Serial.print("Locating devices on ch. 1... Found ");
    Serial.print(dallas1.getDeviceCount(), DEC);
    Serial.println(" devices.");
    
    dallas1.requestTemperatures();
    for (int i=0; i<dallas1.getDeviceCount(); ++i) {
      if (!dallas1.getAddress(tempDev, i)) {
