implements dragging for moving things around