Refactor.
Add custom cursor for drag and drop.
Use cursor offset to determine position.