Large rewrite to allow just about any data set to be plug and play