Do drop preparation only when starting a drag
Fix bugs caused be recent changes
Use plain objects for all drop-related events