Refactored to create packages for the different matchers and business logic.