many design changes
fixmerging
test