more flexible patterns