View listener with wrapper

This is built on #863, it adds a wrapper enabling chaining, type hinting and simpler listeners.
No particular reason, I can certainly change it, but don't think it will have that much of an impact.