a much better way to load and parse the data