Chapter 3. The Software Layer