Output format plugin

This is early work. I just wanted you to have a peek to the direction this is turning into.
Now that we have a formatter, maybe we can move logic there?