Implementation of chapter 6.3.2