diff --git a/docs/tutorial.rst b/docs/tutorial.rst
index e7d4091..dd7d9af 100644
--- a/docs/tutorial.rst
+++ b/docs/tutorial.rst
@@ -51,7 +51,7 @@ Responding
 In-built python types returned by registered request handlers are automatically converted into 200 OK HTTP responses. The following mappings apply:
 
 * bytes: Sent directly with content type text/plain
-* string: Encoded as bytes and sent with content type text/plain
+* string: Encoded as bytes and sent with content type text/html
 * others: Encoded as json and sent with content type application/json
 
 Finer grained control of the response data can be achieved using :class:`ResponseBody` or one of it's children. These allow for overriding of the content type. The following are available:
diff --git a/grole.py b/grole.py
index d34ea4d..e8f6506 100755
--- a/grole.py
+++ b/grole.py
@@ -132,7 +132,7 @@ class ResponseString(ResponseBody):
     """
     Response body from a string
     """
-    def __init__(self, data='', content_type='text/plain'):
+    def __init__(self, data='', content_type='text/html'):
         """
         Initialise object, data is the data to send
     

diff --git a/test/test_response.py b/test/test_response.py
index fb58ad8..967e050 100644
--- a/test/test_response.py
+++ b/test/test_response.py
@@ -106,5 +106,29 @@ class TestFile(unittest.TestCase):
         self.assertEqual(writer.data, b'4\r\nfoo\n\r\n0\r\n\r\n')
 
 
+class TestAuto(unittest.TestCase):
+
+    def test_empty(self):
+        res = grole.Response()
+        self.assertTrue(isinstance(res.data, grole.ResponseBody))
+
+    def test_bytes(self):
+        res = grole.Response(b'foo')
+        self.assertTrue(isinstance(res.data, grole.ResponseBody))
+        self.assertEqual(res.data._data, b'foo')
+        self.assertEqual(res.data._headers['Content-Type'], 'text/plain')
+
+    def test_str(self):
+        res = grole.Response('foo')
+        self.assertTrue(isinstance(res.data, grole.ResponseString))
+        self.assertEqual(res.data._data, b'foo')
+        self.assertEqual(res.data._headers['Content-Type'], 'text/html')
+
+    def test_json(self):
+        res = grole.Response({'foo': 'bar'})
+        self.assertTrue(isinstance(res.data, grole.ResponseJSON))
+        self.assertEqual(res.data._data, b'{"foo": "bar"}')
+        self.assertEqual(res.data._headers['Content-Type'], 'application/json')
+
 if __name__ == '__main__':
     unittest.main()

Change default content type for string to text/html
This feels like it makes more sense. Don't forget to update the doc!
test/test_response.py::TestAuto::test_str
test/test_response.py::TestHeader::test_header test/test_response.py::TestBody::test_bytes test/test_response.py::TestBody::test_data test/test_response.py::TestBody::test_file test/test_response.py::TestBody::test_headers test/test_response.py::TestBody::test_json test/test_response.py::TestBody::test_string test/test_response.py::TestString::test_data test/test_response.py::TestString::test_headers test/test_response.py::TestJSON::test_data test/test_response.py::TestJSON::test_headers test/test_response.py::TestFile::test_data test/test_response.py::TestFile::test_headers test/test_response.py::TestAuto::test_bytes test/test_response.py::TestAuto::test_empty test/test_response.py::TestAuto::test_json