The key to solving complex design problems is to break them down into smaller pieces. Now, the recipes already do that of course. The data recipe breaks data design down into individual steps. The function recipe does the same, and so, does the world recipe. But sometimes we need more decomposition than that. Sometimes we need to break a data representation into multiple types, or a function design in the multiple functions. Now, we've seen a couple examples of that already of course. Whenever we have the reference rule, then we end up with a natural helper function. And the world's recipe also breaks the design down into multiple handlers. But this week, we're going to look at more examples of how we break types and functions down into multiple types and multiple functions. The week is broken into two parts. In the first part, we're going to look at rules for helper functions operating on the kinds of data we've already seen. In the second part, we're going to introduce a new kind of arbitrary size data. And that kind of data definition itself automatically introduces helpers into the functions that operate on the data.