rework the drag and drop behaviour