file merge
file move
abstract factory