POP - A Pattern Oriented Programming Language