gc - chapter 2 example - adding non-AOP version of transactions, retries, and logging