modularizing
merge