All functions except CalculateNeed have comments