Fingers are now calculated correctly, and findPredecessor is now using  fingers to find the predecessor faster.