A lot of numbers to run through here!