implement heredoc