Better data management

This makes for slightly more pluggable data generators, which is a bit less confusing and would also allow me to write something to read from a file more easily for enhanced offlineability!