abstract pattern

abstract pattern