In order to cope with all possible expasnions, it would require some serious reengineering as you have multiple mechanics and elements coexisting on the screen:
* Figures, tokens and tiles in the players' supply
* Placement mechanics for tiles and items in the players' supply
* Mechanics triggered by tiles drawn and/or placed
* Mechanics involving figures on the board
* Mechanics affecting the turn sequence
* Interactions affecting majority in features
* Interactions affecting scoring
* ...
You name it. You need to add some hooks for every action to be in place and adding mechanics in a modular way...
The first step would be to reimplement the logic as plugins to test and enable all this modularity at the core.