diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php
index c079a5e..b9a2bab 100644
--- a/DependencyInjection/Configuration.php
+++ b/DependencyInjection/Configuration.php
@@ -28,17 +28,20 @@ class Configuration implements ConfigurationInterface
                     ->children()
                         ->scalarNode('enabled')->defaultTrue()->end()
                         ->scalarNode('endpoint')->defaultValue('/app_dev.php')->end()
-                        ->enumNode('json_declaration_method')
+                        ->enumNode('request_format_method')
                             ->values(array('format_param', 'accept_header'))
                             ->defaultValue('format_param')
                         ->end()
                         ->arrayNode('authentication')
                             ->children()
                                 ->scalarNode('name')->isRequired()->end()
-                                ->enumNode('delivery')
-                                    // header|query|request, but only query is implemented for now
-                                    ->values(array('query'))
+                                ->scalarNode('delivery')
                                     ->isRequired()
+                                    ->validate()
+                                        // header|query|request, but only query is implemented for now
+                                        ->ifNotInArray(array('query'))
+                                        ->thenInvalid("Unknown authentication delivery type '%s'.")
+                                    ->end()
                                 ->end()
                             ->end()
                         ->end()
diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php
index 1852fcf..501a00e 100644
--- a/DependencyInjection/NelmioApiDocExtension.php
+++ b/DependencyInjection/NelmioApiDocExtension.php
@@ -31,7 +31,7 @@ class NelmioApiDocExtension extends Extension
         $container->setParameter('nelmio_api_doc.api_name', $config['name']);
         $container->setParameter('nelmio_api_doc.sandbox.enabled',  $config['sandbox']['enabled']);
         $container->setParameter('nelmio_api_doc.sandbox.endpoint', $config['sandbox']['endpoint']);
-        $container->setParameter('nelmio_api_doc.sandbox.json_declaration_method', $config['sandbox']['json_declaration_method']);
+        $container->setParameter('nelmio_api_doc.sandbox.request_format_method', $config['sandbox']['request_format_method']);
 
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('formatters.xml');
diff --git a/Formatter/HtmlFormatter.php b/Formatter/HtmlFormatter.php
index 5c1dd30..06dde5a 100644
--- a/Formatter/HtmlFormatter.php
+++ b/Formatter/HtmlFormatter.php
@@ -43,7 +43,7 @@ class HtmlFormatter extends AbstractFormatter
     /**
      * @var string
      */
-    private $jsonDeclarationMethod;
+    private $requestFormatMethod;
 
     /**
      * @param array $authentication
@@ -88,9 +88,9 @@ class HtmlFormatter extends AbstractFormatter
     /**
      * @param string $method
      */
-    public function setJsonDeclarationMethod($method)
+    public function setRequestFormatMethod($method)
     {
-        $this->jsonDeclarationMethod = $method;
+        $this->requestFormatMethod = $method;
     }
 
     /**
@@ -146,14 +146,14 @@ class HtmlFormatter extends AbstractFormatter
     private function getGlobalVars()
     {
         return array(
-            'apiName'               => $this->apiName,
-            'authentication'        => $this->authentication,
-            'endpoint'              => $this->endpoint,
-            'enableSandbox'         => $this->enableSandbox,
-            'jsonDeclarationMethod' => $this->jsonDeclarationMethod,
-            'date'                  => date(DATE_RFC822),
-            'css'                   => file_get_contents(__DIR__ . '/../Resources/public/css/screen.css'),
-            'js'                    => file_get_contents(__DIR__ . '/../Resources/public/js/all.js'),
+            'apiName'             => $this->apiName,
+            'authentication'      => $this->authentication,
+            'endpoint'            => $this->endpoint,
+            'enableSandbox'       => $this->enableSandbox,
+            'requestFormatMethod' => $this->requestFormatMethod,
+            'date'                => date(DATE_RFC822),
+            'css'                 => file_get_contents(__DIR__ . '/../Resources/public/css/screen.css'),
+            'js'                  => file_get_contents(__DIR__ . '/../Resources/public/js/all.js'),
         );
     }
 
diff --git a/Resources/config/formatters.xml b/Resources/config/formatters.xml
index 60373b5..888268b 100644
--- a/Resources/config/formatters.xml
+++ b/Resources/config/formatters.xml
@@ -37,8 +37,8 @@
             <call method="setEndpoint">
                 <argument>%nelmio_api_doc.sandbox.endpoint%</argument>
             </call>
-            <call method="setJsonDeclarationMethod">
-                <argument>%nelmio_api_doc.sandbox.json_declaration_method%</argument>
+            <call method="setRequestFormatMethod">
+                <argument>%nelmio_api_doc.sandbox.request_format_method%</argument>
             </call>
             <call method="setAuthentication">
                 <argument>%nelmio_api_doc.sandbox.authentication%</argument>
diff --git a/Resources/public/css/screen.css b/Resources/public/css/screen.css
index 4b73b61..d0960bc 100644
--- a/Resources/public/css/screen.css
+++ b/Resources/public/css/screen.css
@@ -148,9 +148,9 @@ table tbody tr:last-child td {
   text-decoration: none;
 }
 
-#api_key_wrapper {
-  float: right;
-  padding: 10px 0 10px 0;
+#sandbox_configuration {
+    float: right;
+    padding: 10px 0 10px 0;
 }
 
 #colophon {
diff --git a/Resources/views/layout.html.twig b/Resources/views/layout.html.twig
index 95cd134..ff773fa 100644
--- a/Resources/views/layout.html.twig
+++ b/Resources/views/layout.html.twig
@@ -15,11 +15,16 @@
     <body>
         <div id="header">
             <a href=""><h1>{{ apiName }}</h1></a>
-            {% if authentication %}
-            <div id="api_key_wrapper">
-                api key: <input type="text" id="api_key"/>
+            <div id="sandbox_configuration">
+                request format:
+                <select id="request_format">
+                    <option value="json">JSON</option>
+                    <option value="xml">XML</option>
+                </select>
+                {% if authentication %}
+                    api key: <input type="text" id="api_key"/>
+                {% endif %}
             </div>
-            {% endif %}
             <br style="clear: both;" />
         </div>
         <div class="container" id="resources_container">
@@ -37,42 +42,42 @@
 
             {% if enableSandbox %}
                 var toggleButtonText = function ($btn) {
-                if ($btn.text() === 'Default') {
-                    $btn.text('Raw');
-                } else {
-                    $btn.text('Default');
-                }
+                    if ($btn.text() === 'Default') {
+                        $btn.text('Raw');
+                    } else {
+                        $btn.text('Default');
+                    }
                 };
 
                 var renderRawBody = function ($container) {
-                var rawData, $btn;
+                    var rawData, $btn;
 
-                rawData = $container.data('raw-response');
-                $btn = $container.parents('.pane').find('.to-raw');
+                    rawData = $container.data('raw-response');
+                    $btn = $container.parents('.pane').find('.to-raw');
 
-                $container.addClass('prettyprinted');
-                $container.html(rawData);
+                    $container.addClass('prettyprinted');
+                    $container.html($('<div/>').text(rawData).html());
 
-                $btn.removeClass('to-raw');
-                $btn.addClass('to-prettify');
+                    $btn.removeClass('to-raw');
+                    $btn.addClass('to-prettify');
 
-                toggleButtonText($btn);
+                    toggleButtonText($btn);
                 };
 
                 var renderPrettifiedBody = function ($container) {
-                var rawData, $btn;
+                    var rawData, $btn;
 
-                rawData = $container.data('raw-response');
-                $btn = $container.parents('.pane').find('.to-prettify');
+                    rawData = $container.data('raw-response');
+                    $btn = $container.parents('.pane').find('.to-prettify');
 
-                $container.removeClass('prettyprinted');
-                $container.html(prettifyResponse(rawData));
-                prettyPrint && prettyPrint();
+                    $container.removeClass('prettyprinted');
+                    $container.html(prettifyResponse(rawData));
+                    prettyPrint && prettyPrint();
 
-                $btn.removeClass('to-prettify');
-                $btn.addClass('to-raw');
+                    $btn.removeClass('to-prettify');
+                    $btn.addClass('to-raw');
 
-                toggleButtonText($btn);
+                    toggleButtonText($btn);
                 };
 
                 $('.tabs li').click(function() {
@@ -88,7 +93,7 @@
                 var prettifyResponse = function(text) {
                     try {
                         var data = typeof text === 'string' ? JSON.parse(text) : text;
-                        text = JSON.stringify(data, undefined, ' ');
+                        text = JSON.stringify(data, undefined, '  ');
                     } catch (err) {
                     }
 
@@ -105,11 +110,7 @@
 
                     container.data('raw-response', data);
 
-                    if ('<' === data[0]) {
-                        renderRawBody(container);
-                    } else {
-                        renderPrettifiedBody(container);
-                    }
+                    renderPrettifiedBody(container);
 
                     container.parents('.pane').find('.to-prettify').text('Raw');
                     container.parents('.pane').find('.to-raw').text('Raw');
@@ -136,45 +137,46 @@
                         self = this,
                         params = {},
                         headers = {},
-                        content = $(this).find('textarea.content').val();
+                        content = $(this).find('textarea.content').val(),
                         result_container = $('.result', $(this).parent());
 
-                    var jsonDeclarationMethod = '{{ jsonDeclarationMethod }}';
-                    if (jsonDeclarationMethod == 'format_param') {
-                        params['_format'] = 'json';
-                    } else if (jsonDeclarationMethod == 'accept_header') {
-                        headers['Accept'] = 'application/json';
+                    var requestFormat = $('#request_format').val();
+                    var requestFormatMethod = '{{ requestFormatMethod }}';
+                    if (requestFormatMethod == 'format_param') {
+                        params['_format'] = requestFormat;
+                    } else if (requestFormatMethod == 'accept_header') {
+                        headers['Accept'] = 'application/' + requestFormat;
                     }
 
                     // retrieve all the parameters to send
                     $('.parameters .tuple', $(this)).each(function() {
-                    var key, value;
+                        var key, value;
 
-                    key = $('.key', $(this)).val();
-                    value = $('.value', $(this)).val();
+                        key = $('.key', $(this)).val();
+                        value = $('.value', $(this)).val();
 
-                    if (value) {
-                        params[key] = value;
-                    }
+                        if (value) {
+                            params[key] = value;
+                        }
                     });
 
                     // retrieve the additional headers to send
                     $('.headers .tuple', $(this)).each(function() {
-                    var key, value;
+                        var key, value;
 
-                    key = $('.key', $(this)).val();
-                    value = $('.value', $(this)).val();
+                        key = $('.key', $(this)).val();
+                        value = $('.value', $(this)).val();
 
-                    if (value) {
-                        headers[key] = value;
-                    }
+                        if (value) {
+                            headers[key] = value;
+                        }
                     });
 
                     // fix parameters in URL
                     for (var key in $.extend({}, params)) {
                         if (url.indexOf('{' + key + '}') !== -1) {
-                        url = url.replace('{' + key + '}', params[key]);
-                        delete params[key];
+                            url = url.replace('{' + key + '}', params[key]);
+                            delete params[key];
                         }
                     };
 
@@ -189,16 +191,16 @@
 
                     // and trigger the API call
                     $.ajax({
-                    url: '{{ endpoint }}' + url,
-                    type: method,
-                    data: content.length ? content : params,
-                    headers: headers,
-                    complete: function(xhr) {
-                        displayResponse(xhr, method, url, result_container);
+                        url: '{{ endpoint }}' + url,
+                        type: method,
+                        data: content.length ? content : params,
+                        headers: headers,
+                        complete: function(xhr) {
+                            displayResponse(xhr, method, url, result_container);
 
-                        // and enable them back
-                        $('input:not(.content-type), button', $(self)).removeAttr('disabled');
-                    }
+                            // and enable them back
+                            $('input:not(.content-type), button', $(self)).removeAttr('disabled');
+                        }
                     });
 
                     return false;