adjust code structure
merge