diff --git a/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache b/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache
index de3e3dc56b3f067a9917313ddd455227431c3248..14a5c34bada98649481229c8762402687adcd32d 100644
--- a/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache
+++ b/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-6dbd88745d59fa151ec2b15eaaf1ea837c62dd6e
+9c56342d8d0782585dfb5a8f145b7388446bfec3
diff --git a/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache b/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache
index e254cb66747a75cdef819599c1502b7666335de9..31ceece9a93e9f4390f2c97b676c835609f78207 100644
Binary files a/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache and b/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache differ
diff --git a/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache b/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache
index 548aebadef402014a6cfe8edc074acecb859d308..8ec9cabf84c61390d17139e208b06a1c2e561174 100644
Binary files a/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache and b/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache differ
diff --git a/obj/Debug/net5.0-windows/TournamentManager.dll b/obj/Debug/net5.0-windows/TournamentManager.dll
index 78fa5521844df9e3162bd1306b99a113c2fc37ea..6f2e7ea04114681f6c484e26bd9ee857a8935216 100644
Binary files a/obj/Debug/net5.0-windows/TournamentManager.dll and b/obj/Debug/net5.0-windows/TournamentManager.dll differ
diff --git a/obj/Debug/net5.0-windows/TournamentManager.pdb b/obj/Debug/net5.0-windows/TournamentManager.pdb
index 4821a48d2ebe34c5fa11a61df2481eae986fafe0..4fdd009cb254323a4be9c0d595a2999cc8946f1c 100644
Binary files a/obj/Debug/net5.0-windows/TournamentManager.pdb and b/obj/Debug/net5.0-windows/TournamentManager.pdb differ
diff --git a/obj/Debug/net5.0-windows/ref/TournamentManager.dll b/obj/Debug/net5.0-windows/ref/TournamentManager.dll
index 83052901726b04117b977803cd68016e9b3efa9a..f000f0cdf3bd0f08d98f3b1120648e6c45d7ecb9 100644
Binary files a/obj/Debug/net5.0-windows/ref/TournamentManager.dll and b/obj/Debug/net5.0-windows/ref/TournamentManager.dll differ
diff --git a/obj/TournamentManager.csproj.nuget.dgspec.json b/obj/TournamentManager.csproj.nuget.dgspec.json
index 8193c420661e33e564749b3c09b80ebdfb856ae4..e77d8e92becc933da122a5ed2968a364b9596ec6 100644
--- a/obj/TournamentManager.csproj.nuget.dgspec.json
+++ b/obj/TournamentManager.csproj.nuget.dgspec.json
@@ -22,7 +22,7 @@
           "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
         ],
         "originalTargetFrameworks": [
-          "net5.0-windows7.0"
+          "net5.0-windows"
         ],
         "sources": {
           "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
diff --git a/obj/TournamentManager.csproj.nuget.g.props b/obj/TournamentManager.csproj.nuget.g.props
index fd44c976c105a4b30c1199cf048f8c2e5fd704c2..4411bfa3095a41919a54414b7f894488d2711854 100644
--- a/obj/TournamentManager.csproj.nuget.g.props
+++ b/obj/TournamentManager.csproj.nuget.g.props
@@ -7,11 +7,10 @@
     <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
     <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\micha\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
     <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
-    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.9.1</NuGetToolVersion>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion>
   </PropertyGroup>
   <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
-    <SourceRoot Include="C:\Users\micha\.nuget\packages\" />
-    <SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
+    <SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
   </ItemGroup>
   <PropertyGroup>
     <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
diff --git a/obj/project.assets.json b/obj/project.assets.json
index ee563469de198cd0ab5482ac1bf514e5fd784553..9e36234e71f12b941720b79e28d0b6445267f9b6 100644
--- a/obj/project.assets.json
+++ b/obj/project.assets.json
@@ -74,7 +74,7 @@
         "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
       ],
       "originalTargetFrameworks": [
-        "net5.0-windows7.0"
+        "net5.0-windows"
       ],
       "sources": {
         "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache
index f18c7ee364890660cc14f8786af4d8ab8f2e3e09..b2ac104cc0ff2b934e2161280895de53226766b9 100644
--- a/obj/project.nuget.cache
+++ b/obj/project.nuget.cache
@@ -1,6 +1,6 @@
 {
   "version": 2,
-  "dgSpecHash": "umcWTwWm5FWSLXrCLi1hAiSKMk34e+8HmDyYsi0ix1KwxZS3E/m1Qv9UliO6bACM5E/u5fBHvrSo9PIkJD0wTA==",
+  "dgSpecHash": "H71bVF2tvvTKiX1pmF6aHb9K3KX+isneTQJ5VfOpVIgT/zpQhwsdigl9to5pbHKJjGW9eAmRAA+cQgirv1ofvA==",
   "success": true,
   "projectFilePath": "C:\\Users\\micha\\School\\RiderProjects\\c-sharp-semestral-project-1\\TournamentManager.csproj",
   "expectedPackageFiles": [
diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info
index c114ea24721db3ce29cd1300f7d0ea1c3c731836..d820c47ca79fafdeda233a59374f8ad43d39bde2 100644
--- a/obj/rider.project.restore.info
+++ b/obj/rider.project.restore.info
@@ -1 +1 @@
-16225471957581258
\ No newline at end of file
+16225768046431808
\ No newline at end of file
diff --git a/src/CbItemSelectedEventArgs.cs b/src/CbItemSelectedEventArgs.cs
deleted file mode 100644
index 2340e71da20f7bb7fd9204c3c9a9fc3955d805a3..0000000000000000000000000000000000000000
--- a/src/CbItemSelectedEventArgs.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace TournamentManager
-{
-    public class CbItemSelectedEventArgs
-    {
-        public string ItemName { get; }
-
-        public CbItemSelectedEventArgs(string itemName)
-        {
-            ItemName = itemName;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/GroupControl.Designer.cs b/src/GroupControl.Designer.cs
index 4816a3095ae2febddcf7900191c425148817b8fc..ebe463378dcd8b6213bea7edfedfd752dcab8fbc 100644
--- a/src/GroupControl.Designer.cs
+++ b/src/GroupControl.Designer.cs
@@ -117,6 +117,7 @@ namespace TournamentManager.src
             this.btnSubmit.TabIndex = 7;
             this.btnSubmit.Text = "Submit";
             this.btnSubmit.UseVisualStyleBackColor = true;
+            this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
             // 
             // GroupControl
             // 
diff --git a/src/GroupControl.cs b/src/GroupControl.cs
index 2a785a302b05257c6565783c5bbe9c9ff3bf4a92..bdfe91e0f16d8b6c41ead9714b3a889e0c77b600 100644
--- a/src/GroupControl.cs
+++ b/src/GroupControl.cs
@@ -14,17 +14,19 @@ namespace TournamentManager.src
 {
     public partial class GroupControl : UserControl
     {
-        public delegate void CbItemSelectedDelegate(object sender, CbItemSelectedEventArgs e);
+        public delegate void CbGroupItemSelectedDelegate(object sender, GroupSelectedEventArgs e);
+        public delegate void OpponentItemsSelectedDelegate(object sender, OpponentsSelectedEventArgs e);
+        public delegate void MatchSelectedDelegate(object sender, MatchSelectedEventArgs e);
 
-        public event CbItemSelectedDelegate CbGroupItemSelected;
-        public event CbItemSelectedDelegate CbFirstOpponentSelected;
-        public event CbItemSelectedDelegate CbSecondOpponentSelected;
 
-        protected void OnGroupSelected(CbItemSelectedEventArgs e) => CbGroupItemSelected?.Invoke(this, e);
-        protected void OnFirstOpponentSelected(CbItemSelectedEventArgs e) =>
-            CbFirstOpponentSelected?.Invoke(this, e);
-        protected void OnSecondOpponentSelected(CbItemSelectedEventArgs e) =>
-            CbSecondOpponentSelected?.Invoke(this, e);
+        public event CbGroupItemSelectedDelegate CbGroupItemSelected;
+        public event OpponentItemsSelectedDelegate OpponentsSelected;
+        public event MatchSelectedDelegate SubmitClicked;
+
+        protected void OnGroupSelected(GroupSelectedEventArgs e) => CbGroupItemSelected?.Invoke(this, e);
+        protected void OnOpponentsSelected(OpponentsSelectedEventArgs e) => OpponentsSelected?.Invoke(this, e);
+        protected void OnSubmitClicked(MatchSelectedEventArgs e) => SubmitClicked?.Invoke(this, e);
+        
         
         public GroupControl()
         {
@@ -51,23 +53,70 @@ namespace TournamentManager.src
 
         private void cbGroup_SelectedIndexChanged(object sender, EventArgs e)
         {
-            ClearComboBox(ref cbFirstOpponent);
-            ClearComboBox(ref cbSecondOpponent);
-            ClearTextBoxes();
-            OnGroupSelected(new CbItemSelectedEventArgs(cbGroup.SelectedItem.ToString()));
+            ClearInputData();
+            OnGroupSelected(new GroupSelectedEventArgs(cbGroup.SelectedItem.ToString()));
         }
 
         private void cbFirstOpponent_SelectedIndexChanged(object sender, EventArgs e)
         {
-            ClearComboBox(ref cbSecondOpponent);
-            ClearTextBoxes();
-            OnFirstOpponentSelected(new CbItemSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString()));
+            OnOpponentsSelected();
         }
 
         private void cbSecondOpponent_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            OnOpponentsSelected();
+        }
+        
+        private void btnSubmit_Click(object sender, EventArgs e)
+        {
+            if (cbFirstOpponent.SelectedItem == null || cbSecondOpponent.SelectedItem == null)
+            {
+                return;
+            }
+
+            if (cbGroup.SelectedItem == null || !int.TryParse(cbGroup.SelectedItem.ToString(), out var index))
+            {
+                return;
+            }
+            
+            if (!int.TryParse(tbFirstOpponentScore.Text, out var firstScore) ||
+                !int.TryParse(tbFirstOpponentScore.Text, out var secondScore))
+            {
+                return;
+            }
+            
+            OnSubmitClicked(new MatchSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString(),
+                cbSecondOpponent.SelectedItem.ToString(), (firstScore, secondScore), index));
+        }
+        
+        protected void OnOpponentsSelected()
         {
             ClearTextBoxes();
-            OnSecondOpponentSelected(new CbItemSelectedEventArgs(cbSecondOpponent.SelectedItem.ToString()));
+            if (cbFirstOpponent.SelectedItem == null || cbSecondOpponent.SelectedItem == null)
+            {
+                return;
+            }
+
+            if (cbGroup.SelectedItem == null || !int.TryParse(cbGroup.SelectedItem.ToString(), out var index))
+            {
+                return;
+            }
+            
+            OnOpponentsSelected(new OpponentsSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString(),
+                cbSecondOpponent.SelectedItem.ToString(), index));
+        }
+
+        public void ClearInputData()
+        {
+            ClearTextBoxes();
+            ClearComboBox(ref cbFirstOpponent);
+            ClearComboBox(ref cbSecondOpponent);
+        }
+
+        public void SetTextBoxes((int first, int second) scores)
+        {
+            tbFirstOpponentScore.Text = scores.first.ToString();
+            tbSecondOpponentScore.Text = scores.second.ToString();
         }
 
         #region HelperFunctions
diff --git a/src/GroupSelectedEventArgs.cs b/src/GroupSelectedEventArgs.cs
new file mode 100644
index 0000000000000000000000000000000000000000..577945f7a6c13611f92773faa008e8c5729467af
--- /dev/null
+++ b/src/GroupSelectedEventArgs.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace TournamentManager
+{
+    public class GroupSelectedEventArgs : EventArgs
+    {
+        public string ItemName { get; }
+
+        public GroupSelectedEventArgs(string itemName)
+        {
+            ItemName = itemName;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/ManageTournamentForm.cs b/src/ManageTournamentForm.cs
index 807adbbe7406d14c5c1d0ffdfec986ec5d5ef653..92e89ff05e941f30cc2f1a7d1cb928aa22b0a5d4 100644
--- a/src/ManageTournamentForm.cs
+++ b/src/ManageTournamentForm.cs
@@ -20,15 +20,17 @@ namespace TournamentManager
             InitializeComponent();
             enterantCntrl.SubmitParticipantClick += OnSubmitParticipantClicked;
             _participants.CollectionChanged += HandleParticipantsChanged;
-            manageParticipantsControl.ParticipantsModified += HandleParticipantRemoved;
-            calculateControl.CalculateGroups += HandleCalculateGroups;
-            groupControl.CbGroupItemSelected += HandleGroupItemSelected;
+            manageParticipantsControl.ParticipantsModified += HandleOnParticipantRemovedClicked;
+            calculateControl.CalculateGroups += HandleOnCalculateGroupsClicked;
+            groupControl.CbGroupItemSelected += HandleOnGroupSelected;
+            groupControl.OpponentsSelected += HandleOnGroupOpponentsSelected;
+            groupControl.SubmitClicked += HandleOnGroupControlSubmitClicked;
             foreach (var p in _participants)
             {
                 manageParticipantsControl.CbAddParticipant($"{p.FirstName} {p.Surname}");
             }
         }
-
+        
         protected void OnSubmitParticipantClicked(object sender, EventArgs e)
         {
             if (_participants.Any(x =>
@@ -53,7 +55,7 @@ namespace TournamentManager
             }
         }
 
-        private void HandleParticipantRemoved(object sender, ParticipantsModifiedEventArgs e)
+        private void HandleOnParticipantRemovedClicked(object sender, ParticipantsModifiedEventArgs e)
         {
             if (e.Type != OperationType.Remove)
                 return;
@@ -74,7 +76,7 @@ namespace TournamentManager
             
         }
 
-        private void HandleCalculateGroups(object sender, CalculateGroupsEventArgs e)
+        private void HandleOnCalculateGroupsClicked(object sender, CalculateGroupsEventArgs e)
         {
             var numberOfGroups = (_participants.Count - 1) / e.GroupSize + 1;
             var groupIndex = 0;
@@ -99,14 +101,54 @@ namespace TournamentManager
             }
         }
 
-        private void HandleGroupItemSelected(object sender, CbItemSelectedEventArgs e)
+        private void HandleOnGroupSelected(object sender, GroupSelectedEventArgs e)
         {
             if (!int.TryParse(e.ItemName.Split(" ")[1], out var result))
             {
                 return;
             }
-            groupControl.AddToFirstOpponentList(_groups[result - 1].Members
-                .Select(x => $"{x.FirstName} {x.Surname}").ToArray());
+
+            var groupMembers = _groups[result - 1].Members
+                .Select(x => $"{x.FirstName} {x.Surname}").ToArray();
+            groupControl.AddToFirstOpponentList(groupMembers);
+            groupControl.AddToSecondOpponentList(groupMembers);
+        }
+        
+        private void HandleOnGroupOpponentsSelected(object sender, OpponentsSelectedEventArgs e)
+        {
+            if (e.FirstOpponent.Equals(e.SecondOpponent))
+            {
+                //TODO: throw some message
+                return;
+            }
+
+            var match = _groups[e.GroupIndex].Matches.FirstOrDefault(m =>
+                e.FirstOpponent.Equals($"{m.Opponents.Item1.FirstName} {m.Opponents.Item1.Surname}") &&
+                e.SecondOpponent.Equals($"{m.Opponents.Item2.FirstName} {m.Opponents.Item2.Surname}"));
+            if (match == null )
+            {
+                return;
+            }
+            groupControl.SetTextBoxes(match.Scores);
+        }
+        
+        private void HandleOnGroupControlSubmitClicked(object sender, MatchSelectedEventArgs e)
+        {
+            if (e.FirstOpponent.Equals(e.SecondOpponent))
+            {
+                //TODO:ERROR MESSAGE
+                return;
+            }
+            var group = _groups[e.GroupIndex];
+            Func<string[], Participant> matchOpponent = x => group.Members
+                .FirstOrDefault(p => p.FirstName.Equals(x[0]) && p.Surname.Equals(x[1]));
+
+            var firstOpponentName = e.FirstOpponent.Split(" ");
+            var secondOpponentName = e.SecondOpponent.Split(" ");
+            group.Matches.Add(new Match(new Tuple<Participant, Participant>
+                (matchOpponent(firstOpponentName), matchOpponent(secondOpponentName)),
+                e.Score ));
+            
         }
     }
 }
\ No newline at end of file
diff --git a/src/Match.cs b/src/Match.cs
index 44f2140715754cf5dfbb6b18cd51d1c54c32e726..a3858392d159555246c13a88316fa087885b1306 100644
--- a/src/Match.cs
+++ b/src/Match.cs
@@ -4,7 +4,22 @@ namespace TournamentManager
 {
     public class Match
     {
-        public Tuple<Participant, Participant> Opponent { get; set; }
-        public (int first, int second) Score { get; set; }
+        public Tuple<Participant, Participant> Opponents { get; set; }
+        public (int first, int second) Scores { get; set; }
+
+        public Match(Tuple<Participant, Participant> opponents, (int first, int second) scores)
+        {
+            if (opponents.Item1.Equals(opponents.Item2))
+            {
+                throw new Exception();
+            }
+
+            Opponents = opponents;
+            Scores = scores;
+
+
+        }
     }
+    
+    
 }
\ No newline at end of file
diff --git a/src/MatchSelectedEventArgs.cs b/src/MatchSelectedEventArgs.cs
new file mode 100644
index 0000000000000000000000000000000000000000..92554161f7a0f9807d7d6bf263733b40d381db34
--- /dev/null
+++ b/src/MatchSelectedEventArgs.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace TournamentManager
+{
+    public class MatchSelectedEventArgs : OpponentsSelectedEventArgs
+    {
+        public (int first, int second) Score { get; }
+
+        public MatchSelectedEventArgs(string firstOpponentName, string secondOpponentName,
+            (int first, int second) score, int groupIndex) : 
+            base(firstOpponentName, secondOpponentName, groupIndex)
+        {
+            Score = score;
+        }
+        
+    }
+}
\ No newline at end of file
diff --git a/src/OpponentsSelectedEventArgs.cs b/src/OpponentsSelectedEventArgs.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0d9beb977bef6830712b1b14565bc0503f20852a
--- /dev/null
+++ b/src/OpponentsSelectedEventArgs.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace TournamentManager
+{
+    public class OpponentsSelectedEventArgs : EventArgs
+    {
+        public string FirstOpponent { get; }
+        public string SecondOpponent { get; }
+        
+        public int GroupIndex { get; }
+
+        public OpponentsSelectedEventArgs(string firstOpponentName, string secondOpponentName, int groupIndex)
+        {
+            FirstOpponent = firstOpponentName;
+            SecondOpponent = secondOpponentName;
+            GroupIndex = groupIndex;
+        }
+
+    }
+}
\ No newline at end of file