more complete draggable functionality