level 3: refactors the code to use context blocks and named subjects