new match logic