Better pattern type chooser