some utility patterns
use a higher-level pattern