renamed AbstractOutputFactory -> OutputFactory