This document discusses refactoring code to use functional design patterns, specifically monads. It begins by showing an example of defining attribute queries in a functional style using monads. It then explores monads in more depth, explaining their essence as separating computation composition from execution while allowing computations to carry extra implicit data. Common uses of monads are listed and additional resources provided for further understanding monads and their usefulness.