Introduced AbstractOutput to remove empty methods, and reduce the number of effected classes on interface change.