Start outlining classes for file based reporting

Just a comment: Interesting: I didn't know that the `virtual` keyword is propagated by C++! Reading about [the topic of the virtual keyword](http://stackoverflow.com/questions/4895294/c-virtual-keyword-for-functions-in-derived-classes-is-it-necessary) I noticed that C++11 allows one to say explicitly that a function is meant to override a base class function by using [the override keyword](http://en.wikipedia.org/wiki/C%2B%2B11#Explicit_overrides_and_final) as in `virtual void open() override;`. This seems useful to increase robustness vs. refactor and we may want to use that.