refactor drag and drop
merge