drag and drop snapping implemented