refactor delegate printing