type analysis
merge