Drag drop improvements

This addresses everything discussed in #593.