I may replace all IllegalStateExceptions with DataExceptions soon so we can ensure they are always caught.