completely new approach to drag behavior. removed event handling to another module.