pattern based