diff --git a/basetheme_bootstrap/forms.py b/basetheme_bootstrap/forms.py
index af757135054acfff44823e5fccd59c659a77cc0f..f082435dc2b97e033fab45ef3e04fba2a68f2d8d 100644
--- a/basetheme_bootstrap/forms.py
+++ b/basetheme_bootstrap/forms.py
@@ -1,6 +1,5 @@
 from django.conf import settings
-from django.contrib.auth import get_user_model
-from django.contrib.auth.forms import UserCreationForm, UsernameField, UserChangeForm
+from django.contrib.auth import get_user_model, forms as auth_forms
 from django.db.models import Q
 from django.forms import ModelForm
 from django.urls import reverse
@@ -8,24 +7,24 @@ from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext_lazy as _
 
 
+def is_username_is_email():
+    try:
+        return settings.BASETHEME_BOOTSTRAP_USERNAME_IS_EMAIL
+    except AttributeError:
+        return False
+
+
 class CleanUsernameAndSuggestReset:
     class Meta:
         abstract = True
 
-    @property
-    def is_username_is_email(self):
-        try:
-            return settings.BASETHEME_BOOTSTRAP_USERNAME_IS_EMAIL
-        except AttributeError:
-            return False
-
     def clean(self):
         f = super().clean()
         qs = get_user_model().objects
         if hasattr(self, 'instance'):
             qs = qs.filter(~Q(id=self.instance.id))
         if qs.filter(email=f["email"]).exists() or \
-                not self.is_username_is_email and \
+                not is_username_is_email() and \
                 qs.filter(username=f.get("username", "")).exists():
             self.add_error("email", mark_safe(_(
                 'The email already exists, if you have lost your password you can reset it '
@@ -33,41 +32,41 @@ class CleanUsernameAndSuggestReset:
         return f
 
 
-class UserCreationFormWithMore(CleanUsernameAndSuggestReset, UserCreationForm):
+class UserCreationFormWithMore(CleanUsernameAndSuggestReset, auth_forms.UserCreationForm):
     class Meta:
         model = get_user_model()
         fields = ("username", "email", "first_name", "last_name")
-        field_classes = {'username': UsernameField}
+        field_classes = {'username': auth_forms.UsernameField}
 
     def __init__(self, *args, **kwargs):
         super(UserCreationFormWithMore, self).__init__(*args, **kwargs)
         self.fields['email'].widget.attrs.update({'required': True})
-        if self.is_username_is_email:
+        if is_username_is_email():
             del self.fields['username']
 
     def save(self, commit=True):
         user = super().save(commit=False)
-        if self.is_username_is_email:
+        if is_username_is_email():
             user.username = user.email
         if commit:
             user.save()
         return user
 
 
-class MyUserChangeForm(CleanUsernameAndSuggestReset, UserChangeForm):
+class MyUserChangeForm(CleanUsernameAndSuggestReset, auth_forms.UserChangeForm):
     class Meta:
         model = get_user_model()
         fields = ("username", "email", "first_name", "last_name", "password")
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        if self.is_username_is_email:
+        if is_username_is_email():
             del self.fields['username']
             self.fields['email'].widget.attrs.update({'required': True})
 
     def save(self, commit=True):
         user = super().save(commit=False)
-        if self.is_username_is_email:
+        if is_username_is_email():
             user.username = user.email
         if commit:
             user.save()
@@ -78,3 +77,10 @@ class UserDeleteForm(ModelForm):
     class Meta:
         model = get_user_model()
         fields = ()
+
+
+class AuthenticationForm(auth_forms.AuthenticationForm):
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        if is_username_is_email():
+            self.fields["username"].label = _("Email")
diff --git a/basetheme_bootstrap/urls.py b/basetheme_bootstrap/urls.py
index 272d9afba4a8dc1e2adb3783c5cb6242bd718de4..af4d5eb3e92282913918950e8b0c4a9ba95861d8 100644
--- a/basetheme_bootstrap/urls.py
+++ b/basetheme_bootstrap/urls.py
@@ -4,6 +4,7 @@ from django.urls import reverse_lazy
 from django.views.generic import RedirectView
 
 from basetheme_bootstrap import views
+from basetheme_bootstrap.forms import AuthenticationForm
 
 app_name = 'basetheme_bootstrap'
 urlpatterns = [
@@ -12,7 +13,7 @@ urlpatterns = [
     ################################################################################
     url(r'^accounts/$', views.account_detail, name='account'),
     url(r'^accounts/profile/$', RedirectView.as_view(url=reverse_lazy('basetheme_bootstrap:account'))),
-    url(r'^accounts/login/$', auth_views.LoginView.as_view(), name='login'),
+    url(r'^accounts/login/$', auth_views.LoginView.as_view(form_class=AuthenticationForm), name='login'),
     url(r'^accounts/logout/$', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
     url(r'^accounts/password/$', views.change_password, name='change_password'),
     url(r'^accounts/signup/$', views.signup, name='signup'),
diff --git a/setup.py b/setup.py
index b069a61f09e4e9b3fbe5a8962bbb502dcf5e0c9b..0f0b1df75a034faee1a2736c3656f4649b4c304f 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ readme = open('README.rst').read()
 
 setup(
     name='django-basetheme-bootstrap',
-    version='0.2.7',
+    version='0.2.8',
     description='Django Basetheme Bootstrap',
     long_description=readme,
     author='Bryan Brancotte',