diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin.py b/aitrainer_backoffice/aitrainer_backoffice/admin.py
index f594bd6..479c2e8 100644
--- a/aitrainer_backoffice/aitrainer_backoffice/admin.py
+++ b/aitrainer_backoffice/aitrainer_backoffice/admin.py
@@ -3,15 +3,18 @@ from abc import ABC
 from django.contrib import admin
 from django.utils.html import format_html
 from django.utils.translation import ugettext_lazy as _
+#from treenode.admin import TreeNodeModelAdmin
+#from treenode.forms import TreeNodeForm
+
 from .models import ExerciseType, ExerciseTypeAlternative, ExerciseTypeParents
 from .models import Product
 from .models import ExerciseDevice, ExerciseDeviceTranslation, ExerciseTypeDevice, ExerciseDeviceAlternative
 from .models import ExerciseTypeImage
 from .models import ExerciseTypeTranslation
 from .models import ExerciseTreeTranslation
-from .models import ExerciseTree, ExerciseTreeParents
+from .models import ExerciseTree
+from .models import ExerciseTreeParents
 from .models import ExercisePlanTranslation
-from .models import ExercisePlanDetail
 from .models import ExercisePlan
 from .models import ExercisePlanTemplate, ExercisePlanTemplateTranslation, ExercisePlanTemplateDetail
 
@@ -34,6 +37,18 @@ class ExerciseTreeParentsInline(admin.TabularInline):
     extra = 0
 
 
+'''
+
+
+class ExerciseTreeParentAdmin(TreeNodeModelAdmin):
+    treenode_display_mode = TreeNodeModelAdmin.TREENODE_DISPLAY_MODE_ACCORDION
+    list_display = ('name',)
+
+    # use TreeNodeForm to automatically exclude invalid parent choices
+    form = TreeNodeForm
+'''
+
+
 class ExerciseTreeAdmin(admin.ModelAdmin):
     list_display = ('tree_id', 'name_colored', 'active')
     search_fields = ['name']
@@ -158,8 +173,10 @@ class TranslationPlanTemplateInline(admin.TabularInline):
 
 class TranslationPlanTemplateDetailInline(admin.TabularInline):
     model = ExercisePlanTemplateDetail
+    verbose_name = 'name'
     fields = ('exercise_type',)
     extra = 0
+    ordering = ('exercise_type',)
 
 
 class ExercisePlanTemplateAdmin(admin.ModelAdmin):
@@ -268,7 +285,7 @@ class ExerciseDeviceAdmin(admin.ModelAdmin):
 admin.site.register(ExerciseType, ExerciseTypeAdmin)
 admin.site.register(ExerciseTree, ExerciseTreeAdmin)
 admin.site.register(ExercisePlanTemplate, ExercisePlanTemplateAdmin)
-admin.site.register(ExercisePlan, ExercisePlanAdmin)
+#admin.site.register(ExercisePlan, ExercisePlanAdmin)
 admin.site.register(Product, ProductAdmin)
 admin.site.register(ExerciseDevice, ExerciseDeviceAdmin)
 admin.autodiscover()
diff --git a/aitrainer_backoffice/aitrainer_backoffice/models.py b/aitrainer_backoffice/aitrainer_backoffice/models.py
index 0e3c657..4e5e750 100644
--- a/aitrainer_backoffice/aitrainer_backoffice/models.py
+++ b/aitrainer_backoffice/aitrainer_backoffice/models.py
@@ -1,6 +1,7 @@
 from django.db import models
 from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext_lazy as _
+#from treenode.models import TreeNodeModel
 
 
 class LanguageTypes(models.TextChoices):
@@ -26,6 +27,7 @@ class ExerciseDevice(models.Model):
         db_table = 'exercise_device'
         verbose_name = _("Exercise Device")
         verbose_name_plural = _("Exercise Devices")
+        ordering = ['name']
 
     def image_tag(self):
         return mark_safe('<img src="/media/%s" width="30%" height="30%" />' % self.image_url)
@@ -82,6 +84,7 @@ class ExerciseTree(models.Model):
         db_table = 'exercise_tree'
         verbose_name = _("Exercise Tree")
         verbose_name_plural = _("Exercise Tree Items")
+        ordering = ['name']
 
     def __str__(self):
         return self.name
@@ -103,16 +106,17 @@ class ExerciseTreeTranslation(models.Model):
 
 
 class ExerciseTreeParents(models.Model):
+    #treenode_display_field = 'name'
     exercise_tree_parents_id = models.AutoField(primary_key=True)
     exercise_tree_parent = models.ForeignKey(ExerciseTree, on_delete=models.CASCADE,
-                                             related_name=_('exercise_tree_parent'), help_text=_('Parent menu'), blank=True)
-    exercise_tree_child = models.ForeignKey(ExerciseTree, on_delete=models.CASCADE,
-                                            related_name=_('exercise_tree_child'), help_text=_('Actual menu'))
+                                             related_name=_('exercise_tree_parent'),
+                                             help_text=_('Parent menu'), blank=True)
+    exercise_tree_child = models.ForeignKey(ExerciseTree, on_delete=models.CASCADE)
 
     class Meta:
         db_table = 'exercise_tree_parents'
-        verbose_name = _("Exercise Tree Parent")
-        verbose_name_plural = _("Exercise Tree Parents")
+        verbose_name = _("Menu Tree Representation")
+        verbose_name_plural = _("Menu Tree Representation")
         unique_together = [['exercise_tree_parent', 'exercise_tree_child']]
 
 
@@ -149,6 +153,7 @@ class ExerciseType(models.Model):
         db_table = 'exercise_type'
         verbose_name = _("Exercise")
         verbose_name_plural = _("Exercises")
+        ordering = ['name']
 
     def __str__(self):
         return self.name
diff --git a/requirements.txt b/requirements.txt
index d60b218..a311f8d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-django==3.1.5
+django==3.1.7
 asgiref==3.2.10
 certifi==2020.6.20
 chardet==3.0.4