uses HEREDOC for better representation of output