 // Animation controller.
 RandomAnimator brand_animator(ANIM_TYPES, ANIM_COUNT);
 
+// add a prototype for the on_colour function ahead of the PubSubClient initialiser
+void on_colour(char* topic, uint8_t* payload, unsigned int length);
+
 // Messaging status.
 WiFiClient mqtt_wifi;
 PubSubClient mqtt(MQTT_SERVER, MQTT_PORT, on_colour, mqtt_wifi);

    fill_solid(brand_leds, BRAND_COUNT, CRGB::White);
    fill_solid(brand_leds_last, BRAND_COUNT, CRGB::White);
    FastLED.show();
    
#ifdef DEBUG
    // Debug messaging.
    Serial.println("Initialisation complete, waiting for messages.");


#ifdef DEBUG
    // Initialise the serial port for debugging.
    Serial.begin(115200);
    Serial.println(F("start does_tower"));
#endif

    // Initialise the lighting strip.
    FastLED.addLeds<WS2812, BASE_PIN, GRB>(base_leds, BASE_COUNT);
    FastLED.addLeds<WS2812, BRAND_PIN_LEFT, GRB>(brand_leds, BRAND_COUNT);
    FastLED.addLeds<WS2812, BRAND_PIN_RIGHT, GRB>(brand_leds, BRAND_COUNT);

    // Indicate that we're trying to connect to WiFi.
    fill_solid(base_leds, BASE_COUNT, CRGB::Red);
    fill_solid(brand_leds, BRAND_COUNT, CRGB::Red);
