Design: reworked some of the match method