Removed cruft (static and public are default in an interface)
Making Patterns and their strings more consistent in naming
Made sure to always return an object and never null
Naming of patterns and their strings