Would this example code be confusing if a custom renderer for a normal field accepts 5 arguments and a virtual column excepts 4 arguments. See example code here:
```
    grid: {
        columns: {
            businessName: {
                label: 'Business name',
                renderer: linz.formtools.cellRenderers.overviewLink
            },
            title: {
                label: 'Label',
                renderer: function renderLabel (val, record, fieldName, model, callback) {
                    callback(null, 'hello ' + val);
                }
            }
            code: 'Member code',
            state: 'State',
            phone: 'Phone',
            bActive: 'Is active',
            dateModified: 'Date modified',
            lastUpdatedBy: 'Last updated by',
            sendWelcomeEmail: {
                label: 'Welcome email',
                virtual: true,
                renderer: function sendWelcomeEmailRenderer(record, fieldName, model, callback) {
                   callback(null,'<a href="#">Send welcome email</a>');
                }
            }
        },
        sortBy: ['businessName','dateModified']
    }
```