bumping algorithm