chapter 1.3.4 abstraction added