diff --git a/Implementace/controllers/distribution_overview_controller.py b/Implementace/controllers/distribution_overview_controller.py
index 65581c6629a9d77a9aca342b37daf422ce46290b..deb7206ee5427e91605844a2edba4f74bbd62ab8 100644
--- a/Implementace/controllers/distribution_overview_controller.py
+++ b/Implementace/controllers/distribution_overview_controller.py
@@ -8,10 +8,11 @@ from utils.members_drag_drop_table import MembersDragDropTable
 from windows import distribution_overview
 
 class DistributionOverview(Qt.QWidget, distribution_overview.Ui_Form):
-    def __init__(self, main_window, teams, parent=None):
+    def __init__(self, main_window, teams, group, parent=None):
         super(DistributionOverview, self).__init__(parent)
         self.setupUi(self)
         self.main_window = main_window
+        self.group = group
         self._editName = QLineEdit()
         self.teamTables = []
         for i, team_name in enumerate(teams):
@@ -95,7 +96,7 @@ class DistributionOverview(Qt.QWidget, distribution_overview.Ui_Form):
         for table in self.teamTables:
             team = Team(table.id_, table.name, table.getAllData())
             teams.append(team)
-        distribution = Distribution(self.lblDistName.text(), teams)
+        distribution = Distribution(self.lblDistName.text(), teams, self.group.id_)
         start = timer()
         distribution.saveToDb()
         print('total time:', timer() - start)
diff --git a/Implementace/controllers/group_edit_controller.py b/Implementace/controllers/group_edit_controller.py
index d77166fc67c757eefcebda506f2d51afa460f290..2f0e86e49015994d02e3d698ae0cedf66517a233 100644
--- a/Implementace/controllers/group_edit_controller.py
+++ b/Implementace/controllers/group_edit_controller.py
@@ -1,6 +1,7 @@
 from PyQt5.QtCore import pyqtSlot
 from PyQt5.QtWidgets import QLineEdit
 from utils.members_table import MembersTable
+from utils.qtmodels.distributions_tree_model import DistributionTreeModel
 from windows import groupedit
 from PyQt5 import QtWidgets as Qt
 
@@ -35,8 +36,9 @@ class GroupEdit(Qt.QWidget, groupedit.Ui_Form):
         self.group = group
         self.membersTable = MembersTable(num_of_buttons=2, button_titles=("View", "-",), data=group.members)
         self.updateMemberCount()
-        self.layoutMembers.insertWidget(1, self.membersTable)
+        self.layoutMembers.addWidget(self.membersTable)
         self.lblName.setText(group.name)
+        self.treeDistributions.setModel(DistributionTreeModel(group.distributions))
 
     @pyqtSlot()
     def editName(self):
diff --git a/Implementace/controllers/mainwindow_controller.py b/Implementace/controllers/mainwindow_controller.py
index c15f51672efcd32e6cc968a0f7a1b6a662244427..e6050761cdade1396ba15ec5e7d7d41f16ba3e83 100644
--- a/Implementace/controllers/mainwindow_controller.py
+++ b/Implementace/controllers/mainwindow_controller.py
@@ -65,7 +65,7 @@ class MainWindow(Qt.QMainWindow, mainwindow.Ui_MainWindow):
                 "team 4": [members[5]],
                 "team 5": [members[6], members[7]],
                  }
-        self._goToWidget(DistributionOverview(self, teams))
+        self._goToWidget(DistributionOverview(self, teams, group))
 
     def goToMemberOverview(self, member):
         """
diff --git a/Implementace/controllers/member_overview.py b/Implementace/controllers/member_overview.py
index 5c6f3af98dafd73596ca8800871dd047276c4175..581eefecc962f8e81908403b0295536a6e02a7ff 100644
--- a/Implementace/controllers/member_overview.py
+++ b/Implementace/controllers/member_overview.py
@@ -17,5 +17,5 @@ class MemberOverview(QWidget, member_overview.Ui_Form):
         self.lblSurname.setText(self.member.surname)
         self.lblGroup.setText(self.member.group_name)
 
-        self.tableCount = HistoryCountTable(data=Global.db.getHistoryCount(self.member.id_), parent=self)
+        self.tableCount = HistoryCountTable(data=member.history_count, parent=self)
         self.tab2_layout.addWidget(self.tableCount)
diff --git a/Implementace/database.py b/Implementace/database.py
index 814e6833bca0ede912d8a78546d0aaa35ccc6f1e..44679b6ce8f93a764f233bfd59796f98276e0a84 100644
--- a/Implementace/database.py
+++ b/Implementace/database.py
@@ -106,13 +106,13 @@ class Database:
             return None
         return Member(member_id, row['name'], row['surname'], row['group_id'])
 
-    def createDistribution(self, name):
+    def createDistribution(self, name, group_id):
         """
         create new distribution
         :param name: 
         :return: id of the newly created distribution
         """
-        curs = self.connection.execute('''INSERT INTO distribution (name) VALUES (?)''', (name,))
+        curs = self.connection.execute('''INSERT INTO distribution (name, group_id) VALUES (?, ?)''', (name, group_id,))
         return curs.lastrowid
 
     def createTeam(self, name, distribution_id):
@@ -162,11 +162,11 @@ class Database:
         :param group_id: 
         :return: list of all Distribution(s) of given group  
         """
-        curs = self.connection.execute('''SELECT * FROM distribution WHERE group_id = ?''', (group_id,))
+        curs = self.connection.execute('''SELECT * FROM distribution WHERE group_id = ? ORDER BY creation_time''', (group_id,))
         res = []
         for row in curs:
             teams = self.getTeamsByDistributionID(row['distribution_id'])
-            res.append(Distribution(row['name'], teams, row['distribution_id']))
+            res.append(Distribution(row['name'], teams, row['group_id'], row['distribution_id']))
         return res
 
     def getTeamsByDistributionID(self, distribution_id):
diff --git a/Implementace/model/distribution.py b/Implementace/model/distribution.py
index 6fdc115b088d593e55431094331660cec881c717..142be7e51c7d6bb700064379c84942e6927fb38e 100644
--- a/Implementace/model/distribution.py
+++ b/Implementace/model/distribution.py
@@ -3,13 +3,14 @@ from timeit import default_timer as timer
 
 
 class Distribution:
-    def __init__(self, name, teams, id_=None):
+    def __init__(self, name, teams, group_id=None, id_=None):
         self.id_ = id_
         self.name = name
         self.teams = teams
+        self.group_id = group_id
 
     def saveToDb(self):
-        self.id_ = Global.db.createDistribution(self.name)
+        self.id_ = Global.db.createDistribution(self.name, self.group_id)
         for team in self.teams:
             start = timer()
             team_id = Global.db.createTeam(team.name, self.id_)
diff --git a/Implementace/model/group.py b/Implementace/model/group.py
index ee62e11890fc97214f6cf006ac5f532f7abdc361..228a2bf4b07abe93d8e3b99410964c17cbba69e2 100644
--- a/Implementace/model/group.py
+++ b/Implementace/model/group.py
@@ -34,6 +34,10 @@ class Group:
             self.members  # to force initialization
         return len(self._members)
 
+    @property
+    def distributions(self):
+        return Global.db.getDistributionsByGroupID(self.id_)
+
     def delete(self):
         Global.db.deleteGroup(self.id_)
 
diff --git a/Implementace/model/member.py b/Implementace/model/member.py
index 302f3bb5cede4ac63e0f4ea2d6be6c1faaeb7acd..7e1b2e846752fad47bb913e4e3636f541cf1bb99 100644
--- a/Implementace/model/member.py
+++ b/Implementace/model/member.py
@@ -1,5 +1,6 @@
 from globals import Global
 
+
 class Member:
     def __init__(self, id_, name, surname, group_id):
         self.id_ = id_
@@ -10,3 +11,7 @@ class Member:
     @property
     def group_name(self):
         return Global.db.getGroupName(self.group_id)
+
+    @property
+    def history_count(self):
+        return Global.db.getHistoryCount(self.id_)
diff --git a/Implementace/utils/qtmodels/distributions_tree_model.py b/Implementace/utils/qtmodels/distributions_tree_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..1929f74fffc2dabb4ec7c62abc519c62589fb48e
--- /dev/null
+++ b/Implementace/utils/qtmodels/distributions_tree_model.py
@@ -0,0 +1,74 @@
+from PyQt5.QtCore import QAbstractItemModel, QModelIndex
+from PyQt5.QtCore import Qt
+
+from model.member import Member
+
+
+class DistributionTreeModel(QAbstractItemModel):
+    def __init__(self, distributions, parent=None):
+        super(DistributionTreeModel, self).__init__(parent)
+        self._rootNode = self.buildTree(distributions)
+
+    def buildTree(self, distributions):
+        root_node = Node(None, None)
+        for dist in distributions:
+            dist_node = Node(dist, root_node)
+            for team in dist.teams:
+                team_node = Node(team, dist_node)
+                for member in team.members:
+                    member_node = Node(member, team_node)
+                    team_node.children.append(member_node)
+                dist_node.children.append(team_node)
+            root_node.children.append(dist_node)
+        return root_node
+
+    def parent(self, index=None):
+        node = index.internalPointer()
+        parentNode = node.parent
+        if parentNode == self._rootNode:
+            return QModelIndex()
+
+        if parentNode.parent is not None:
+            row = parentNode.parent.children.index(parentNode)
+        else:
+            row = None
+
+        return self.createIndex(row, 0, parentNode)
+
+    def index(self, row, column, parent):
+        if not parent.isValid():
+            parentNode = self._rootNode
+        else:
+            parentNode = parent.internalPointer()
+
+        childItem = parentNode.children[row]
+        return self.createIndex(row, column, childItem)
+
+    def columnCount(self, parent):
+        return 1
+
+    def rowCount(self, parent):
+        if not parent.isValid():
+            parentNode = self._rootNode
+        else:
+            parentNode = parent.internalPointer()
+
+        return len(parentNode.children)
+
+    def data(self, index, role):
+        if not index.isValid():
+            return None
+
+        value = index.internalPointer().data
+
+        if role == Qt.DisplayRole:
+            if isinstance(value, Member):
+                return value.surname + " " + value.name
+            return value.name
+
+
+class Node:
+    def __init__(self, data, parent):
+        self.data = data
+        self.children = []
+        self.parent = parent
diff --git a/Implementace/windows/groupedit.py b/Implementace/windows/groupedit.py
index 1e1aa71e8650d325938440324cecea60f701b875..9d5e9d2666224e5723d7980826020f00aa1b0a27 100644
--- a/Implementace/windows/groupedit.py
+++ b/Implementace/windows/groupedit.py
@@ -73,26 +73,50 @@ class Ui_Form(object):
         self.verticalLayout_3 = QtWidgets.QVBoxLayout()
         self.verticalLayout_3.setSpacing(0)
         self.verticalLayout_3.setObjectName("verticalLayout_3")
-        self.layoutMembers = QtWidgets.QHBoxLayout()
-        self.layoutMembers.setObjectName("layoutMembers")
-        self.label_2 = QtWidgets.QLabel(Form)
-        self.label_2.setMinimumSize(QtCore.QSize(80, 0))
-        self.label_2.setMaximumSize(QtCore.QSize(80, 16777215))
+        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
+        spacerItem5 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_3.addItem(spacerItem5)
+        self.tabWidget = QtWidgets.QTabWidget(Form)
         font = QtGui.QFont()
-        font.setPointSize(10)
         font.setBold(True)
         font.setWeight(75)
-        self.label_2.setFont(font)
-        self.label_2.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
-        self.label_2.setObjectName("label_2")
-        self.layoutMembers.addWidget(self.label_2)
-        spacerItem5 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
-        self.layoutMembers.addItem(spacerItem5)
-        self.verticalLayout_3.addLayout(self.layoutMembers)
+        self.tabWidget.setFont(font)
+        self.tabWidget.setObjectName("tabWidget")
+        self.tabMembers = QtWidgets.QWidget()
+        font = QtGui.QFont()
+        font.setBold(False)
+        font.setWeight(50)
+        self.tabMembers.setFont(font)
+        self.tabMembers.setObjectName("tabMembers")
+        self.layoutMembers = QtWidgets.QVBoxLayout(self.tabMembers)
+        self.layoutMembers.setContentsMargins(0, 0, 0, 0)
+        self.layoutMembers.setObjectName("layoutMembers")
+        self.tabWidget.addTab(self.tabMembers, "")
+        self.tabDistributions = QtWidgets.QWidget()
+        font = QtGui.QFont()
+        font.setBold(False)
+        font.setWeight(50)
+        self.tabDistributions.setFont(font)
+        self.tabDistributions.setObjectName("tabDistributions")
+        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tabDistributions)
+        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
+        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+        self.treeDistributions = QtWidgets.QTreeView(self.tabDistributions)
+        self.treeDistributions.setAnimated(True)
+        self.treeDistributions.setHeaderHidden(True)
+        self.treeDistributions.setObjectName("treeDistributions")
+        self.treeDistributions.header().setVisible(False)
+        self.horizontalLayout_2.addWidget(self.treeDistributions)
+        self.tabWidget.addTab(self.tabDistributions, "")
+        self.horizontalLayout_3.addWidget(self.tabWidget)
+        spacerItem6 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_3.addItem(spacerItem6)
+        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
         self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
         self.horizontalLayout_4.setObjectName("horizontalLayout_4")
-        spacerItem6 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_4.addItem(spacerItem6)
+        spacerItem7 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_4.addItem(spacerItem7)
         self.editNewMemberName = QtWidgets.QLineEdit(Form)
         self.editNewMemberName.setObjectName("editNewMemberName")
         self.horizontalLayout_4.addWidget(self.editNewMemberName)
@@ -104,12 +128,13 @@ class Ui_Form(object):
         self.btnAddNew.setDefault(False)
         self.btnAddNew.setObjectName("btnAddNew")
         self.horizontalLayout_4.addWidget(self.btnAddNew)
-        spacerItem7 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
-        self.horizontalLayout_4.addItem(spacerItem7)
+        spacerItem8 = QtWidgets.QSpacerItem(80, 20, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum)
+        self.horizontalLayout_4.addItem(spacerItem8)
         self.verticalLayout_3.addLayout(self.horizontalLayout_4)
         self.verticalLayout.addLayout(self.verticalLayout_3)
 
         self.retranslateUi(Form)
+        self.tabWidget.setCurrentIndex(0)
         QtCore.QMetaObject.connectSlotsByName(Form)
 
     def retranslateUi(self, Form):
@@ -121,7 +146,8 @@ class Ui_Form(object):
         self.btnDistribute.setText(_translate("Form", "Rozdělit"))
         self.label.setText(_translate("Form", "PoÄŤet ÄŤlenĹŻ:"))
         self.lblMemberCount.setText(_translate("Form", "0"))
-        self.label_2.setText(_translate("Form", "Členové:"))
+        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabMembers), _translate("Form", "Členové"))
+        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabDistributions), _translate("Form", "Historie"))
         self.editNewMemberName.setPlaceholderText(_translate("Form", "Jméno"))
         self.editNewMemberSurname.setPlaceholderText(_translate("Form", "Příjmení"))
         self.btnAddNew.setText(_translate("Form", "Přidat"))
diff --git a/Implementace/windows/qt/groupedit.ui b/Implementace/windows/qt/groupedit.ui
index b250fb51c8fb70d222b6f43b0f24b9842e844135..30a91dcd15a78cd00772f0379ceb940ac4ea53e5 100644
--- a/Implementace/windows/qt/groupedit.ui
+++ b/Implementace/windows/qt/groupedit.ui
@@ -181,34 +181,72 @@
       <number>0</number>
      </property>
      <item>
-      <layout class="QHBoxLayout" name="layoutMembers">
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
        <item>
-        <widget class="QLabel" name="label_2">
-         <property name="minimumSize">
-          <size>
-           <width>80</width>
-           <height>0</height>
-          </size>
+        <spacer name="horizontalSpacer_9">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Maximum</enum>
          </property>
-         <property name="maximumSize">
+         <property name="sizeHint" stdset="0">
           <size>
            <width>80</width>
-           <height>16777215</height>
+           <height>20</height>
           </size>
          </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QTabWidget" name="tabWidget">
          <property name="font">
           <font>
-           <pointsize>10</pointsize>
            <weight>75</weight>
            <bold>true</bold>
           </font>
          </property>
-         <property name="text">
-          <string>Členové:</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignHCenter|Qt::AlignTop</set>
+         <property name="currentIndex">
+          <number>0</number>
          </property>
+         <widget class="QWidget" name="tabMembers">
+          <property name="font">
+           <font>
+            <weight>50</weight>
+            <bold>false</bold>
+           </font>
+          </property>
+          <attribute name="title">
+           <string>Členové</string>
+          </attribute>
+          <layout class="QVBoxLayout" name="layoutMembers"/>
+         </widget>
+         <widget class="QWidget" name="tabDistributions">
+          <property name="font">
+           <font>
+            <weight>50</weight>
+            <bold>false</bold>
+           </font>
+          </property>
+          <attribute name="title">
+           <string>Historie</string>
+          </attribute>
+          <layout class="QHBoxLayout" name="horizontalLayout_2">
+           <item>
+            <widget class="QTreeView" name="treeDistributions">
+             <property name="animated">
+              <bool>true</bool>
+             </property>
+             <property name="headerHidden">
+              <bool>true</bool>
+             </property>
+             <attribute name="headerVisible">
+              <bool>false</bool>
+             </attribute>
+            </widget>
+           </item>
+          </layout>
+         </widget>
         </widget>
        </item>
        <item>