diff --git a/app/soc/templates/v2/modules/gsoc/connection/base.html b/app/soc/templates/v2/modules/gsoc/connection/base.html
new file mode 100644
index 0000000..c120142
--- /dev/null
+++ b/app/soc/templates/v2/modules/gsoc/connection/base.html
@@ -0,0 +1,73 @@
+{% extends "v2/modules/gsoc/base.html" %}
+{% comment %}
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+
+{% block stylesheets %}
+  {{ block.super }}
+  <link rel="stylesheet" type="text/css" media="screen" href="/soc/content/{{ app_version }}/css/v2/gsoc/forms.css" />
+  <link rel="stylesheet" type="text/css" media="screen" href="/soc/content/{{ app_version }}/css/v2/gsoc/uniform.default.css" />
+{% endblock stylesheets %}
+
+{% block page_content %}
+
+<!-- begin form -->
+<form action="#" method="post" id="form" class="form-register">
+  {% if posted %}
+    {% if connection_form.errors %}
+      <div id="flash-message" class="flash-error">
+      {% if connection_form.non_field_errors %}
+        {% for error in connection_form.non_field_errors %}
+          {{ error|striptags }}
+        {% endfor %}
+      {% else %}
+        {% for error in connection_form.errors %}
+          <p>Sorry, but your data could not be saved. Please fix the errors below.<p>
+        {% endfor %}
+      {% endif %}
+    {% else %}
+      <div id="flash-message" class="flash-success">
+      <p>Connection established successfully.</p>
+    {% endif %}
+  </div>
+  {% endif %}
+
+  {% if profile_created %}
+    <div id="flash-message" class="flash-success">
+      <p>Your profile was saved successfully. Please use this form to request to become a mentor for your organization.</p>
+    </div>
+  {% endif %}
+
+  {{ logged_in_msg.render }}
+
+  <h2 id="form-register-title">{{ page_name}}</h2> <p id="form-register-req" class="req">* fields required</p>
+
+  {{ connection_form.render }}
+
+  <div id="form-register-fieldset-button-row" class="row button-row">
+    <input id="form-register-submit" type="submit" value="Submit" class="submit" />
+  </div>
+</form>
+<!-- end form -->
+
+{% endblock page_content %}
+
+{% block dependencies %}
+  [
+    dep.uniform,
+    null,
+    function () {
+      jQuery("select, input:radio, input:file, input:checkbox").uniform();
+    }
+  ]
+{% endblock dependencies %}
\ No newline at end of file
diff --git a/app/soc/templates/v2/modules/gsoc/connection/show_connection.html b/app/soc/templates/v2/modules/gsoc/connection/show_connection.html
new file mode 100644
index 0000000..299f5d7
--- /dev/null
+++ b/app/soc/templates/v2/modules/gsoc/connection/show_connection.html
@@ -0,0 +1,67 @@
+{% extends "v2/modules/gsoc/base.html" %}
+{% comment %}
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endcomment %}
+
+{% block stylesheets %}
+  {{ block.super }}
+  <link rel="stylesheet" type="text/css" media="screen" href="/soc/content/{{ app_version }}/css/v2/gsoc/forms.css" />
+  <link rel="stylesheet" type="text/css" media="screen" href="/soc/content/{{ app_version }}/css/v2/gsoc/uniform.default.css" />
+{% endblock stylesheets %}
+
+{% block page_content %}
+
+<h1 id="show-review-page-title">Connection with {{ header_name }}</h1>
+
+<div class="request-summary">
+  <p class="request-organization"><strong>Organization:</strong> {{ org_name }}</p>
+  <p class="request-contact-info"><strong>User:</strong> {{ user_email }}</p>
+  <p class="request-status"><strong>Status:</strong> {{ status_msg }}</p>
+  <p class="request-sent-on"><strong>Created on:</strong> {{ connection.created_on }}</p>
+  <br>
+  {% if connection.message %}
+    <p class="request-message"><strong>Message:</strong> {{ connection.message|default:"" }}</p>
+  {% else %}
+    <p class="request-message"><strong>Message:</strong> No Message Specified </p>
+  {% endif %}
+  <div class="request-response">
+    <form action="{{ response_action }}" method="post" id="form" class="form-project-comment">
+      <div id="request-respond-button-row" class="row button-row">
+        {% if accept_mentor %}
+          <input id="request-respond-accept-submit" name="action" type="submit" value="{{ actions.accept_mentor }}" class="submit"/>
+        {% endif %}
+        {% if reject_mentor %}
+          <input id="request-respond-reject-submit" name="action" type="submit" value="{{ actions.reject_mentor }}" class="submit"/>
+        {% endif %}
+        {% if accept_org_admin %}
+          <input id="request-respond-reject-submit" name="action" type="submit" value="{{ actions.accept_org_admin }}" class="submit"/>
+        {% endif %}
+        {% if reject_org_admin %}
+          <input id="request-respond-reject-submit" name="action" type="submit" value="{{ actions.reject_org_admin }}" class="submit"/>
+        {% endif %}
+      </div>
+    </form>
+  </div>
+</div>
+
+{% endblock page_content %}
+
+{% block dependencies %}
+  [
+    dep.uniform,
+    null,
+    function () {
+      jQuery("select, input:radio, input:file, input:checkbox").uniform();
+    }
+  ]
+{% endblock dependencies %}
