First go at modernised version for chapter 4, can't get it to test compile yet using grunt test