This document discusses refactoring to functional programming with Scala and Scalaz. It provides examples of filtering data by name and previous executions, handling monad stacks with Task and Future, running actions concurrently with IO and Reader, and reporting results to the console and HTML using streams. It also covers issues with composing reporting and recommends using folds for opaque dependent types.