better permit matcher structure