csv parsing with a callback