Split dataReader. Classes now have more obvious jobs and data is better shared throughout the program