[hl] rewrite drap and drop logic