protected void setupPowersButtons() {
    final Quickbar bar = this ;
    final UIGroup powerGroup = new UIGroup(UI) ;
    final List <Button> powerSlots = new List <Button> () ;
    
    for (final Power power : Power.BASIC_POWERS) {
      
      final Button button = new Button(
        UI, power.buttonTex, Button.ICON_LIT_TEX,
        power.name.toUpperCase()+"\n  "+power.helpInfo
      ) {
        protected void whenClicked() {
          ///I.say(power.name+" CLICKED") ;
          final Actor caster = UI.played().ruler() ;
          if (optionList != null) optionList.detach() ;
          //
          //  If there are options, display them instead.
          final String options[] = power.options() ;
          if (options != null) {
            constructOptionList(power, options) ;
            optionList.absBound.setTo(this.absBound) ;
            optionList.absBound.ypos(BUT_SIZE + 2) ;
            optionList.attachTo(bar) ;
            return ;
          }
          else if (
            power.finishedWith(caster, null, null, true)
          ) return ;
          else {
            ///I.say("Power needs a task...") ;
            final PowerTask task = new PowerTask(bar, power, null, caster) ;
            UI.beginTask(task) ;
          }
        }
      } ;
      addToSlot(button, powerGroup, powerSlots) ;
    }
    
    powerGroup.attachTo(this) ;
  }