A software designer is burdened with the task of creating divisions in functionality between projects. If you were to make kitchen implements, you wouldn't make a bowl that is also a spoon. Each implement has its own function. However, if you were to attach a handle to the edge of a bowl, is it now a spoon? Then, if you were to scale up the spoon until the round end of the utensil is as big as a bowl, how different are the two? In fact, the round end of the spoon is called a bowl. It seems as if it's a matter of scale or perspective which informs us to make distinctions between the physical tools in our lives. How can we apply similar principles to software design to allow us to make informed divisions with respect to the software tools that we create?