Added an abstract base pattern