the logic of these methods could reuse the OutputFormat ones.