refactored OutputInterface