Refactored to rely more on weight difference