user demodulise for DRY and speed