plugins now handle their own output