major code refactoring to support easily adding metrics, strategies and match comparators