Making demux executor run with custom router

The router wasn't working as expected so I replaced it with a custom one.
Some code duplication here..