Add drag and drop with fixes and cleanup