amazing stuff you got there, except, I don't see why you are using an large array for the exp table (growth rates). They can be replaced by few simple formulas.
there are 4 types of experience tables:
medium, fast, slow, parabolic.
here are the formulas of it, in ruby.
medium:
exp = level ** 3...