Implementation of GoF patterns.