Group Theory : Patterns and Abstraction.