add another way of calculating good enough func