Refactor: handle naming only with Named
Added Unless

(and sneakily rewrote history to remove the bug in Monad from commit "Added flatMap + Monad")
Added Collect