This makes the implementation considerably simpler, while still being able to explain how to use some procedural techniques within the macro definition.