Refactoring new transchoice implementation based on the original Fabien inplementation