pseudo patern
merge