Changed to use reverse-apply instead of homebrewn operator