Tip 84: Use m4 to automate OOP boilerplate
modelingwithdata.org