Modifed match-data to use keyword args, except for first two args.
This has resulted in a large number of knock on changes, but has simplified
the argument handling significantly.