type patterns