drop no-op substitution (submatch(0) is needed! doh)
split matchadd() loop into separate function