handling outputs, exceptions and ironing out interface differences