implement csv parser. closes #2