use a higher-level pattern