implement actual csv writer