diff --git a/newsbox/admin.py b/newsbox/admin.py
index 90ed26088e584b6ee017b68c07f799258cd3c388..fd0c6709a0d59e1a705a34c5fd7505c3a7959e2f 100644
--- a/newsbox/admin.py
+++ b/newsbox/admin.py
@@ -15,8 +15,8 @@ except ImportError:
 from django.http import HttpResponseForbidden, HttpResponseRedirect
 from django.shortcuts import get_object_or_404
 from django.utils.translation import ugettext_lazy as _,  ungettext_lazy
-from django.utils import six, formats
 from django.utils.html import format_html
+from django.utils import formats
 
 
 def get_fieldset_by_field(name, fieldsets):
@@ -134,11 +134,11 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
 
     def changestatus_link(self, obj):
         if obj.newsbox_status == obj.STATUS_PUBLISHED:
-            title = _('Unpublish this %s') % six.text_type(
+            title = _('Unpublish this %s') % str(
                 obj._meta.verbose_name)
             icon_url = static('admin/img/icon-yes.gif')
         else:
-            title = _('Publish this %s') % six.text_type(
+            title = _('Publish this %s') % str(
                 obj._meta.verbose_name)
             icon_url = static('admin/img/icon-no.gif')
         url_name = '%s_%s_change_status' % (self.model._meta.model_name,
@@ -195,7 +195,7 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
         if not obj.has_publish_permission(request.user):
             return HttpResponseForbidden(
                 _('You do not have permission to publish this %s')
-                % (six.text_type(self.model._meta.verbose_name),))
+                % (str(self.model._meta.verbose_name),))
 
         old_status = obj.newsbox_status
         if obj.newsbox_status == obj.STATUS_PUBLISHED:
@@ -211,13 +211,13 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
             msg = _('The %(objtype)s "%(objtitle)s" has been successfully published')
         else:
             msg = _('The %(objtype)s "%(objtitle)s" has been successfully unpublished')
-        messages.info(request, msg % {'objtype': six.text_type(self.model._meta.verbose_name),
-                                      'objtitle': six.text_type(obj)})
+        messages.info(request, msg % {'objtype': str(self.model._meta.verbose_name),
+                                      'objtitle': str(obj)})
         LogEntry.objects.log_action(
             user_id=request.user.id,
             content_type_id=ContentType.objects.get_for_model(self.model).pk,
             object_id=news_id,
-            object_repr=six.text_type(obj),
+            object_repr=str(obj),
             action_flag=CHANGE,
             change_message=log_msg,
         )
@@ -228,7 +228,7 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
         if not obj.has_publish_permission(request.user):
             return HttpResponseForbidden(
                 _('You do not have permission to publish this %s')
-                % (six.text_type(self.model._meta.verbose_name),))
+                % (str(self.model._meta.verbose_name),))
         self.publish(request, self.model.objects.filter(pk=news_id))
         return HttpResponseRedirect(request.GET.get('next', '../../'))
 
@@ -237,7 +237,7 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
         if not obj.has_publish_permission(request.user):
             return HttpResponseForbidden(
                 _('You do not have permission to publish this %s')
-                % (six.text_type(self.model._meta.verbose_name),))
+                % (str(self.model._meta.verbose_name),))
         self.unpublish(request, self.model.objects.filter(pk=news_id))
         return HttpResponseRedirect(request.GET.get('next', '../../'))
 
@@ -258,14 +258,14 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
                         'You do not have permission to publish the '
                         '%(objtype)s "%(objtitle)s"'
                     ) % {
-                        'objtype': six.text_type(self.model._meta.verbose_name),
-                        'objtitle': six.text_type(obj)
+                        'objtype': str(self.model._meta.verbose_name),
+                        'objtitle': str(obj)
                     }
                 )
                 continue
             obj.publish()
             LogEntry.objects.log_action(user_id=request.user.id, content_type_id=content_type_id,
-                                        object_id=obj.pk, object_repr=six.text_type(obj),
+                                        object_id=obj.pk, object_repr=str(obj),
                                         action_flag=CHANGE, change_message=_('Published'),)
             ok += 1
             last_obj_ok = obj
@@ -299,14 +299,14 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
                         'You do not have permission to unpublish the '
                         '%(objtype)s "%(objtitle)s"'
                     ) % {
-                        'objtype': six.text_type(self.model._meta.verbose_name),
-                        'objtitle': six.text_type(obj)
+                        'objtype': str(self.model._meta.verbose_name),
+                        'objtitle': str(obj)
                     }
                 )
                 continue
             obj.unpublish()
             LogEntry.objects.log_action(user_id=request.user.id, content_type_id=content_type_id,
-                                        object_id=obj.pk, object_repr=six.text_type(obj),
+                                        object_id=obj.pk, object_repr=str(obj),
                                         action_flag=CHANGE, change_message=_('Unpublished'),)
             ok += 1
             last_obj_ok = obj
diff --git a/newsbox/models.py b/newsbox/models.py
index fae6e2c032e1a6bd535ecf09f3e128076d76af0f..78ee57cce095087f50a4ac68793eb410b87184bb 100644
--- a/newsbox/models.py
+++ b/newsbox/models.py
@@ -13,7 +13,6 @@ try:
 except ImportError:
     from django.core.urlresolvers import reverse
 from django.db import models
-from django.utils import six
 try:
     from django.utils.encoding import python_2_unicode_compatible
 except ImportError:
@@ -24,7 +23,7 @@ from django.utils.safestring import mark_safe
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _
 
-mark_safe_lazy = lazy(mark_safe, six.text_type)
+mark_safe_lazy = lazy(mark_safe, str)
 newsbox_models = []
 
 
@@ -214,7 +213,7 @@ class NewsboxModelBase(models.base.ModelBase):
 ###################################################################################################
 ###################################################################################################
 @python_2_unicode_compatible
-class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)):
+class NewsboxBase(models.Model, metaclass=NewsboxModelBase):
     """
     Abstract class to build your own news
     """
@@ -300,7 +299,7 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)):
         return obj.newsbox_publication_start_date > now()
 
     def __str__(self):
-        return six.text_type(self.newsbox_title)
+        return str(self.newsbox_title)
 
     @property
     def newsbox_published(self):
@@ -393,7 +392,7 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)):
 
 ###################################################################################################
 ###################################################################################################
-class NewsboxExpiredBase(six.with_metaclass(NewsboxModelBase, models.Model)):
+class NewsboxExpiredBase(models.Model, metaclass=NewsboxModelBase):
     """
     Define News which expires in time and will not be displayed in front
     """
@@ -450,7 +449,7 @@ class NewsboxExpiredBase(six.with_metaclass(NewsboxModelBase, models.Model)):
 
 ###################################################################################################
 ###################################################################################################
-class NewsboxSEOBase(six.with_metaclass(NewsboxModelBase, models.Model)):
+class NewsboxSEOBase(models.Model, metaclass=NewsboxModelBase):
     """
     Define News which have SEO fields
     """
diff --git a/newsbox_cms/admin.py b/newsbox_cms/admin.py
index c58e0e868b201a92ded6ec3502d4ee792aca3086..ba4292a7f22ff27c0f23390c84d69e078b9168c2 100644
--- a/newsbox_cms/admin.py
+++ b/newsbox_cms/admin.py
@@ -8,7 +8,6 @@ except ImportError:
     from django.core.urlresolvers import reverse
 from django.utils import formats
 from django.utils.translation import ugettext_lazy as _
-from django.utils import six
 from django.utils.html import format_html
 
 try:
@@ -55,7 +54,7 @@ def CustomModelCMSAdminFactory(
                     raise ValueError('func_or_attr needs to be either a string or a collable')
 
             else:
-                title = six.text_type(obj)
+                title = str(obj)
             return title
 
         def edit_link(self, obj):
@@ -101,10 +100,10 @@ def CustomModelCMSAdminFactory(
 
 def newsbox_admin_title(obj):
     if not obj.newsbox_date:
-        return six.text_type(obj)
+        return str(obj)
     return '{date}<br/>{title}'.format(
         date=formats.date_format(obj.newsbox_date, 'DATE_FORMAT'),
-        title=six.text_type(obj)
+        title=str(obj)
     )
 
 
diff --git a/newsbox_cms/models.py b/newsbox_cms/models.py
index d581eb66a52dc96fb9e36e8a754c240df70d552f..19788a521b4f61dbe096af4335ffc2e0b322a82e 100644
--- a/newsbox_cms/models.py
+++ b/newsbox_cms/models.py
@@ -2,7 +2,6 @@
 from __future__ import unicode_literals
 
 from django.utils.translation import ugettext_lazy as _, ungettext_lazy
-from django.utils import six
 try:
     from django.utils.encoding import python_2_unicode_compatible
 except ImportError:
@@ -50,18 +49,18 @@ class NewsboxPluginBase(CMSPlugin):
 
     def __str__(self):
         if self.numitems > 0:
-            return six.text_type(ungettext_lazy(
+            return str(ungettext_lazy(
                 'Display of a news',
                 'Display of %(nb)d news',
                 self.numitems
             ) % {'nb': self.numitems})
-        return six.text_type(_('Display of all news'))
+        return str(_('Display of all news'))
 
     class Meta:
         abstract = True
 
 
-class NewsboxCMSBase(six.with_metaclass(NewsboxModelBase, models.Model)):
+class NewsboxCMSBase(models.Model, metaclass=NewsboxModelBase):
 
     class Meta:
         abstract = True
diff --git a/newsbox_i18n/models.py b/newsbox_i18n/models.py
index 88d107b9a0f3b199ce8d25a58247ac20cc3d5749..feee3b9a355b7a024f3380b5bbd973cb2654733f 100644
--- a/newsbox_i18n/models.py
+++ b/newsbox_i18n/models.py
@@ -6,7 +6,6 @@ try:
 except ImportError:
     from django.core.urlresolvers import reverse
 from django.utils.translation import ugettext_lazy as _,  get_language
-from django.utils import six
 try:
     from django.utils.encoding import python_2_unicode_compatible
 except ImportError:
@@ -46,7 +45,7 @@ class NewsboxI18NModelBase(NewsboxModelBase):
 
 
 @python_2_unicode_compatible
-class NewsboxI18NBase(six.with_metaclass(NewsboxI18NModelBase, TranslatableModel)):
+class NewsboxI18NBase(TranslatableModel, metaclass=NewsboxI18NModelBase):
     """
     Define News which expires in time and will not be displayed in front
     """