work on PerformAttack (#4) and onSelect/canSelect (#1)