Pattern Manager Abstraction

PatternManager is a combination of a hash and an array, patterns are treated in a number of ways.