View listener with wrapper

This is built on #863, it adds a wrapper enabling chaining, type hinting and simpler listeners.
why not just give it to the shouldRun method directly, instead of having state ?