Refactor and add matching strategies