pattern comparison