added PatternInterface