private void UpdateBoostUI()
    {
        _boostSlots.Clear();
        _boostChoices.Clear();

        for (int b = 0; b < GlobalProps.BOOST_LIMIT.GetInt(); b++)
        {
            _boostSlots.Add(this.Clone <HeaderBoostDisplay>(BoostSlotTemplate));
        }

        BoostSlotTemplate.SetActive(false);

        foreach (BoostData boostData in dataMan.boostDataList)
        {
            HeaderBoostDisplay boostChoice = this.Clone <HeaderBoostDisplay>(BoostChoiceTemplate);
            boostChoice.btnBoost.onClick.AddListener(() => ActivateBoost(boostChoice));
            boostChoice.boostData = boostData;
            _boostChoices.Add(boostChoice);
        }

        BoostChoiceTemplate.SetActive(false);

        _boostTabHeight  = BoostTab.rect.height;
        _boostVertHeight = BoostVerticalLayout.rect.height;

        RefreshBoostSlots();
    }
    void ActivateBoost(HeaderBoostDisplay boostChoice)
    {
        if (BoostCanvasGroup.alpha != 1)
        {
            return;
        }

        var slots      = PlayerManager.Instance.BoostsSlotsActive;
        var slotUnused = slots.Find(slot => slot.data == null);

        //Do an early currency check (client-side), it also checks server-side for HACKERZ! :D
        var boostCurrency = boostChoice.boostData.ToCurrencyType();
        int boostAmount   = boostCurrency.GetAmount();

        if (slotUnused == null || boostAmount <= 0)
        {
            TimelineTween.ShakeError(boostChoice.gameObject);
            return;
        }

        trace("Activating boost!");
        trace(boostChoice.boostData);

        BoostCanvasGroup.alpha = 0.5f;

        API.Users.BoostActivate(slotUnused.slotID, boostChoice.boostData)
        .Then(res => {
            boostChoice.UpdateNumLeft();
            BoostCanvasGroup.alpha = 1;
            RefreshBoostSlots();
        })
        .Catch(err => {
            traceError("Could not activate boost: " + GameAPIManager.GetErrorMessage(err));
            TimelineTween.ShakeError(boostChoice.gameObject);
            BoostCanvasGroup.alpha = 1;
        });
    }