3 modes
merge