The AbstractFactory base class doesn't really provide any useful functionality, since all of the important things are happening inside the LinOpFactory::generate or Criterion::generate functions. AbstractFactory::generate doesn't even call the loggers properly, but luckily it is hidden by its overload in LinOpFactory. I think we can do without that base class.