add generic bubble sort version