Properly wrapped headers (to avoid multiple-inclusion issues). Split out utility functions into separate module (utilites) to illustrate how to use the implicit compliation rule in the make file.