template pattern
Merge.