many changes
modify model