Refactor to use one single BarcodePhaseListener