refactor out CSVParser to mixin class