added an areas struct to make everything a little more clear with intent