In this chapter, we continued our journey through the abstraction-building mechanisms that PowerShell offers. Functions are the most common way to extend the built-in shell functionality, and mastering them early on is vital. The next sections deal with complex scenarios, and the only way to cope with those is to break a problem up into smaller manageable chunks and solve them one by one. This is the "divide and conquer" approach to problem solving. We will solve each subproblem by writing a function, and in the end, we will glue several functions together to get to the ultimate solution.