Everything but matching is functional.