completely updated drag, drop, and spread methods to use events