diff --git a/wcclrun/main.cpp b/wcclrun/main.cpp
index 9a395042fc7bb8e1ba95b46b06501f2755a5df88..7df353c5a58d9c1a59b34bc5e9392f22e3485340 100644
--- a/wcclrun/main.cpp
+++ b/wcclrun/main.cpp
@@ -58,6 +58,8 @@ public:
 	void do_sentence(const boost::shared_ptr<Corpus2::Sentence>& sentence);
 	void do_stream(std::istream& is, bool first);
 
+	void output_tabular(const std::vector< std::vector< UnicodeString > > outputs);
+
 private:
 	const Corpus2::Tagset& tagset_;
 	Wccl::Parser parser_;
@@ -184,7 +186,11 @@ void Runner::do_sentence(const boost::shared_ptr<Corpus2::Sentence>& sentence)
 			}
 		}
 	}
+	output_tabular(outputs);
+}
 
+void Runner::output_tabular(const std::vector<std::vector<UnicodeString> > outputs)
+{
 	std::vector<int> lengths(outputs[0].size());
 	foreach (const std::vector< UnicodeString >& line, outputs) {
 		for (size_t i = 0; i < line.size(); ++i) {