CSV encoding abstracted in backend