diff --git a/virt_web/controllers/template.py b/virt_web/controllers/template.py
index c2832af..f0c5eb4 100644
--- a/virt_web/controllers/template.py
+++ b/virt_web/controllers/template.py
@@ -52,9 +52,24 @@ class EditTemplateXML(TableForm):
             HiddenField('id', validator=NotEmpty)
     ]
 
+class NewTemplateXML(TableForm):
+    hover_help = True
+    types = ['domain',
+             'volume',
+             'pool' ]
+    fields = [
+            TextField('name', validator=NotEmpty),
+            SingleSelectField('type', validator=NotEmpty, options=types),
+            TextArea('xml', validator=NotEmpty, cols=80, rows=30),
+            TextArea('description', cols=80, rows=5),
+    ]
+
 EDIT_TEMPLATE_XML = EditTemplateXML('EDIT_TEMPLATE_XML',
                         action=url('/template/edit_action_xml'))
 
+NEW_TEMPLATE_XML = NewTemplateXML('NEW_TEMPLATE_XML',
+                        action=url('/template/post'))
+
 class Template(BaseController):
     """
     The Template controller for the virt_web application.
@@ -115,4 +130,40 @@ class Template(BaseController):
         this_template.description = description
         this_template.xml = xml
         flash(_('Edited %s' % this_template.name))
-        redirect(url('/template/edit/%s' % this_template.name))
\ No newline at end of file
+        redirect(url('/template/edit/%s' % this_template.name))
+
+    @expose('virt_web.templates.template_new')
+    def new(self, **kw):
+        ''' Put the xml file in a text area and prompt user for updates
+
+        This will prompt the user to make edits to the raw xml configuration
+        for a given domain
+
+        :arg template_name: name of the template to edit
+        '''
+
+        tmpl_context.NEW_TEMPLATE_XML = NEW_TEMPLATE_XML
+        return dict(values=kw)
+
+    @validate(NEW_TEMPLATE_XML, error_handler=new)
+    @expose()
+    def post(self, name, xml, type, description):
+        ''' Edit an xml template
+
+        Takes all the information in required to create a new hostname.
+
+        :arg id: ID of the template to edit
+        :arg name: Name of the template
+        :arg xml: Raw xml of the template to edit_action_xml
+        :arg type: Type of template (domain, volume, pool)
+        :arg description: Brief description of the template
+        '''
+
+        this_template = XmlTemplate()
+        this_template.name = name
+        this_template.type = type
+        this_template.description = description
+        this_template.xml = xml
+        DBSession.add(this_template)
+        flash(_('Created %s' % this_template.name))
+        redirect(url('/template/edit/%s' % this_template.name))
diff --git a/virt_web/templates/template_list.html b/virt_web/templates/template_list.html
index 1ffc571..78fe183 100644
--- a/virt_web/templates/template_list.html
+++ b/virt_web/templates/template_list.html
@@ -12,6 +12,7 @@
 </head>
 
 <body>
+    <a href="new/">New Template</a>
     <h1>Domain Templates</h1>
     <ul>
         <li py:for='template in domain_templates'>${template.name} <a href="${tg.url('/template/edit/%s/' % template.name)}">edit</a> - ${template.description}</li>
diff --git a/virt_web/templates/template_new.html b/virt_web/templates/template_new.html
new file mode 100644
index 0000000..3851c22
--- /dev/null
+++ b/virt_web/templates/template_new.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:py="http://genshi.edgewall.org/"
+      xmlns:xi="http://www.w3.org/2001/XInclude">
+
+  <xi:include href="master.html" />
+
+<head>
+  <meta content="text/html; charset=UTF-8" http-equiv="content-type" py:replace="''"/>
+  <title>New Template</title>
+</head>
+
+<body>
+    <py:if test="values != {}">
+      <div py:replace="tmpl_context.NEW_TEMPLATE_XML(dict(xml=values.xml, name=values.name, type=values.type, id=values.id, description=values.description))">Input Form</div>
+    </py:if>
+    <py:if test="values == {}">
+      <div py:replace="tmpl_context.NEW_TEMPLATE_XML()">Input Form</div>
+    </py:if>
+</body>
+</html>
