diff --git a/student/models.py b/student/models.py
index e70d2170a3e4dc16d70068bf3f3848615eec416b..c6592391ae42237e1e4c10dd435e32d87d36fa58 100644
--- a/student/models.py
+++ b/student/models.py
@@ -65,7 +65,7 @@ class PendingNameChange(models.Model):
 
 class PendingEmailChange(models.Model):
     user = models.OneToOneField(User, unique=True, db_index=True)
-    new_email = models.CharField(blank=True, max_length=255)
+    new_email = models.CharField(blank=True, max_length=255, db_index=True)
     
 
 #cache_relation(User.profile)
diff --git a/student/views.py b/student/views.py
index 4fe31816be2ed55d18bbc91d5c2dc8d116a827fd..c3c3d4447cce068ef073c6e0e2b093f5b0498de5 100644
--- a/student/views.py
+++ b/student/views.py
@@ -264,7 +264,20 @@ def change_email_request(request):
     ## Maske sure it checks for existing e-mail conflicts
     if not request.user.is_authenticated:
         raise Http404
-    pass
+    
+    if not request.user.check_password(request.POST['password']):
+        return HttpResponse(json.dumps({'success':False, 
+                                        'error':'Invalid password'})) 
+    
+    new_email = request.POST['new_email']
+    if len(User.objects.filter(email = new_email)) != 0:
+        ## CRITICAL TODO: Handle case for e-mails
+        return HttpResponse(json.dumps({'success':False, 
+                                        'error':'An account with this e-mail already exists.'}))         
+
+    
+
+    request.POST['new_email']
 
 @ensure_csrf_cookie
 def change_email_confirm(request):
diff --git a/urls.py b/urls.py
index cf0132ababbdd42ce294c977864e6fc98a939648..ed669a3e941ed6d9ca711d8ec8ae173d94d7d59e 100644
--- a/urls.py
+++ b/urls.py
@@ -8,6 +8,8 @@ import django.contrib.auth.views
 # admin.autodiscover()
 
 urlpatterns = ('',
+    url(r'^email_change$', 'student.views.change_email_request'),
+    url(r'^email_confirm$', 'student.views.change_email_confirm'),
     url(r'^gradebook$', 'courseware.views.gradebook'),
     url(r'^event$', 'track.views.user_track'),
     url(r'^t/(?P<template>[^/]*)$', 'static_template_view.views.index'),
@@ -17,9 +19,8 @@ urlpatterns = ('',
     url(r'^login/(?P<error>[^/]*)$', 'student.views.login_user'),
     url(r'^create_account$', 'student.views.create_account'),
     url(r'^activate/(?P<key>[^/]*)$', 'student.views.activate_account'),
+    url(r'^reactivate/(?P<key>[^/]*)$', 'student.views.reactivation_email'),
     url(r'^$', 'student.views.index'),
-#    url(r'^password_reset/$', 'django.contrib.auth.views.password_reset', 
-#        dict(from_email='registration@mitx.mit.edu'),name='auth_password_reset'),
     url(r'^password_reset/$', 'student.views.password_reset'),
     url(r'^password_change/$',django.contrib.auth.views.password_change,name='auth_password_change'),
     url(r'^password_change_done/$',django.contrib.auth.views.password_change_done,name='auth_password_change_done'),