diff --git a/newsbox/admin.py b/newsbox/admin.py
index 4d717d20f50cd1096f201bcf7450f8c94a2f9637..5c2f7b6ec6d7ce07445ece36b727fb26e5668345 100644
--- a/newsbox/admin.py
+++ b/newsbox/admin.py
@@ -108,7 +108,6 @@ def add_fields_to_fieldset(
 class NewsboxBaseAdmin(admin.ModelAdmin):
 
     list_filter = ('newsbox_publication_start_date', 'newsbox_status', )
-    list_display = ['get_newsbox_title', 'newsbox_date_short', 'changestatus_link']
     list_display_links = ('get_newsbox_title',)
     fieldsets = [
         (None, {
@@ -118,6 +117,11 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
     actions = ['publish', 'unpublish']
     save_as = True
 
+    def get_list_display(self, request):
+        if not getattr(self.__class__, 'list_display', None):
+            self.list_display = ['get_newsbox_title', 'newsbox_date_short', 'changestatus_link']
+        return super(NewsboxBaseAdmin, self).get_list_display(request)
+
     def get_prepopulated_fields(self, request, object=None):
         pfields = super(NewsboxBaseAdmin, self).get_prepopulated_fields(request, object) or {}
         pfields.update({'newsbox_slug': ('newsbox_title',)})
@@ -312,7 +316,7 @@ class NewsboxBaseAdmin(admin.ModelAdmin):
                 '%(nb)d %(objtype)s have been unpublished',
                 ok) % {'nb': ok,
                        'objtype': self.model._meta.verbose_name_plural})
-    unpublish.short_description = _('Unpublish selected %(verbose_name_plural)s')
+    unpublish.short_description = _('Archive selected %(verbose_name_plural)s')
 
     def ensure_slug_uniq_queryset(self, request, obj, slug):
         y, m, d = (obj.newsbox_publication_start_date.year,
@@ -393,7 +397,7 @@ class NewsboxExpiredAdmin(NewsboxBaseAdmin):
         return fieldsets
 
     def get_list_display(self, request):
-        list_display = copy.copy(super(NewsboxExpiredAdmin, self).get_list_display(request))
+        list_display = list(super(NewsboxExpiredAdmin, self).get_list_display(request))
         if 'newsbox_publication_dates_short' not in list_display:
             try:
                 index = list_display.index('newsbox_date_short')
diff --git a/newsbox/models.py b/newsbox/models.py
index 739bca026212df85e8a88accf8e5bafc3f623451..b0de43319cda38e8c212d1a04ff2c34165ba688b 100644
--- a/newsbox/models.py
+++ b/newsbox/models.py
@@ -293,6 +293,10 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)):
             return False
         return now() >= self.newsbox_publication_start_date
 
+    @property
+    def is_draft(self):
+        return self.newsbox_status == self.STATUS_DRAFT
+
     def publish(self, commit=True):
         updated = False
         if self.newsbox_status != self.STATUS_PUBLISHED:
@@ -309,7 +313,7 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)):
 
     def unpublish(self, commit=True):
         updated = False
-        if self.newsbox_status == self.STATUS_PUBLISHED:
+        if self.newsbox_status != self.STATUS_ARCHIVED:
             self.newsbox_status = self.STATUS_ARCHIVED
             updated = True
         if updated and commit:
diff --git a/newsbox_i18n/admin.py b/newsbox_i18n/admin.py
index 7c93689e5979a5d73987d1fb3412b3e15c565346..2b072f94f08d51daa36a1b6fa1adf4fe9bc8dbfb 100644
--- a/newsbox_i18n/admin.py
+++ b/newsbox_i18n/admin.py
@@ -22,16 +22,17 @@ edit_translation_links.short_description = _('translations')
 
 class NewsboxI18NBaseAdmin(TranslatableAdmin):
 
-    search_fields = ['newsbox__translation__title', 'newsbox__translation__summary', ]
+    search_fields = ['translations__newsbox_title', 'translations__newsbox_summary']
     date_hierarchy = 'newsbox_publication_start_date'
 
     def get_list_display(self, request):
         list_display = super(NewsboxI18NBaseAdmin, self).get_list_display(request)
-        # prevent modifying class list_display variable
-        list_display = copy.deepcopy(list_display)
-        if settings.LANGUAGES and len(settings.LANGUAGES) > 1:
-            list_display.insert(1, edit_translation_links)
-
+        if not getattr(self.__class__, 'list_display', None):
+            if NewsboxI18NBaseAdmin not in list_display:
+                # prevent modifying class list_display variable
+                list_display = copy.deepcopy(list_display)
+                if settings.LANGUAGES and len(settings.LANGUAGES) > 1:
+                    list_display.insert(1, edit_translation_links)
         return list_display
 
     def ensure_slug_uniq_queryset(self, request, obj, slug):