In the earlier team skills, we introduced use cases as a means of expressing requirements for a system. In this chapter, we'll build on what you learned earlier and show you how to describe your increasingly-detailed understanding of the necessary system behavior. If you've kept your thinking at the right level of specificity so far, the defined use cases are insufficiently detailed to drive design and implementation. Also, it's unlikely that you've defined all of the use cases that would be needed, and you probably haven't considered the exception conditions, state conditions, and other special conditions that are of less interest to the user but that may materially affect the design of the system. The time to add this level of specificity is now.