advanced matching algorithm