From this chapter we can summarize functions as being reflective of their mathematical counterparts. They can accept arguments and can output values. These return values and arguments can be of any valid data type. Furthermore, some functions may not have return values and/or arguments. Some functions simply perform a process. In short, functions are a good way of breaking down code and dividing it into manageable and reusable chunks. The next chapter considers data structures and classes.