Laissez faire dispatcher

This implements #1084 - I went with David's suggestion for the `ScriptProcedural` as it's far less messy, and in practice doesn't do any harm.