diff --git a/FPinFSharp.sln b/FPinFSharp.sln
index f9b480e..efa9cbc 100644
--- a/FPinFSharp.sln
+++ b/FPinFSharp.sln
@@ -5,11 +5,15 @@ VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{65D38C0C-ABFD-4864-840A-EBFCB0029E47}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Exercises", "src\FPinFSharp.Exercises\FPinFSharp.Exercises.fsproj", "{FA1E119E-E88E-40C4-B48C-E98A86D3320D}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{850A8FBE-A6C5-4DC3-B1A5-DF8B689765CA}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Exercises.UnitTests", "tests\FPinFSharp.Exercises.UnitTests\FPinFSharp.Exercises.UnitTests.fsproj", "{2327BD8E-3252-4B01-930D-6A76E9F2F5FF}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Chapter_01", "src\FPinFSharp.Chapter_01\FPinFSharp.Chapter_01.fsproj", "{350551A5-9B67-46E7-871A-C5435E1E0A5C}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Chapter_02", "src\FPinFSharp.Chapter_02\FPinFSharp.Chapter_02.fsproj", "{5110106B-8410-43BF-94C8-415BB799A284}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Chapter_01.UnitTests", "tests\FPinFSharp.Chapter_01.UnitTests\FPinFSharp.Chapter_01.UnitTests.fsproj", "{6E322C64-EE93-45B9-BC53-33F08304E2DC}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FPinFSharp.Chapter_02.UnitTests", "tests\FPinFSharp.Chapter_02.UnitTests\FPinFSharp.Chapter_02.UnitTests.fsproj", "{41CD39C3-020F-4187-BEB0-855CB3A3BE44}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -20,17 +24,27 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FA1E119E-E88E-40C4-B48C-E98A86D3320D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FA1E119E-E88E-40C4-B48C-E98A86D3320D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FA1E119E-E88E-40C4-B48C-E98A86D3320D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FA1E119E-E88E-40C4-B48C-E98A86D3320D}.Release|Any CPU.Build.0 = Release|Any CPU
- {2327BD8E-3252-4B01-930D-6A76E9F2F5FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2327BD8E-3252-4B01-930D-6A76E9F2F5FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2327BD8E-3252-4B01-930D-6A76E9F2F5FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2327BD8E-3252-4B01-930D-6A76E9F2F5FF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {350551A5-9B67-46E7-871A-C5435E1E0A5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {350551A5-9B67-46E7-871A-C5435E1E0A5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {350551A5-9B67-46E7-871A-C5435E1E0A5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {350551A5-9B67-46E7-871A-C5435E1E0A5C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5110106B-8410-43BF-94C8-415BB799A284}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5110106B-8410-43BF-94C8-415BB799A284}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5110106B-8410-43BF-94C8-415BB799A284}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5110106B-8410-43BF-94C8-415BB799A284}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6E322C64-EE93-45B9-BC53-33F08304E2DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6E322C64-EE93-45B9-BC53-33F08304E2DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E322C64-EE93-45B9-BC53-33F08304E2DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6E322C64-EE93-45B9-BC53-33F08304E2DC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {41CD39C3-020F-4187-BEB0-855CB3A3BE44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {41CD39C3-020F-4187-BEB0-855CB3A3BE44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {41CD39C3-020F-4187-BEB0-855CB3A3BE44}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {41CD39C3-020F-4187-BEB0-855CB3A3BE44}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {FA1E119E-E88E-40C4-B48C-E98A86D3320D} = {65D38C0C-ABFD-4864-840A-EBFCB0029E47}
- {2327BD8E-3252-4B01-930D-6A76E9F2F5FF} = {850A8FBE-A6C5-4DC3-B1A5-DF8B689765CA}
+ {350551A5-9B67-46E7-871A-C5435E1E0A5C} = {65D38C0C-ABFD-4864-840A-EBFCB0029E47}
+ {5110106B-8410-43BF-94C8-415BB799A284} = {65D38C0C-ABFD-4864-840A-EBFCB0029E47}
+ {6E322C64-EE93-45B9-BC53-33F08304E2DC} = {850A8FBE-A6C5-4DC3-B1A5-DF8B689765CA}
+ {41CD39C3-020F-4187-BEB0-855CB3A3BE44} = {850A8FBE-A6C5-4DC3-B1A5-DF8B689765CA}
EndGlobalSection
EndGlobal
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Description.md b/src/FPinFSharp.Chapter_01/Description.md
similarity index 100%
rename from src/FPinFSharp.Exercises/Chapter_01/Description.md
rename to src/FPinFSharp.Chapter_01/Description.md
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Exercises.fs b/src/FPinFSharp.Chapter_01/Exercises.fs
similarity index 98%
rename from src/FPinFSharp.Exercises/Chapter_01/Exercises.fs
rename to src/FPinFSharp.Chapter_01/Exercises.fs
index db58eea..a2d0ea1 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Exercises.fs
+++ b/src/FPinFSharp.Chapter_01/Exercises.fs
@@ -1,4 +1,4 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
open System;
diff --git a/src/FPinFSharp.Chapter_01/FPinFSharp.Chapter_01.fsproj b/src/FPinFSharp.Chapter_01/FPinFSharp.Chapter_01.fsproj
new file mode 100644
index 0000000..77f65ee
--- /dev/null
+++ b/src/FPinFSharp.Chapter_01/FPinFSharp.Chapter_01.fsproj
@@ -0,0 +1,22 @@
+
+
+
+ net8.0
+ true
+ FPinFSharp.Chapter_01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_01.fs b/src/FPinFSharp.Chapter_01/Section_01.fs
similarity index 82%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_01.fs
rename to src/FPinFSharp.Chapter_01/Section_01.fs
index 2d35ef0..eff359d 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_01.fs
+++ b/src/FPinFSharp.Chapter_01/Section_01.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
// 1.1 Values, types, identifiers and declarations.
-module Section_01_01 =
+module Section_01 =
// The function name is `double`, the argument is `x`, which has type `int`, and the return value is of type `int`.
let double x =
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_02.fs b/src/FPinFSharp.Chapter_01/Section_02.fs
similarity index 67%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_02.fs
rename to src/FPinFSharp.Chapter_01/Section_02.fs
index 224d508..2da2a1b 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_02.fs
+++ b/src/FPinFSharp.Chapter_01/Section_02.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
-open FPinFSharp.Exercises.Chapter_01.Section_01_01
+open FPinFSharp.Chapter_01.Section_01
// 1.2 Simple function declarations.
-module Section_01_02 =
+module Section_02 =
let calculateCircleArea (radius: int) =
System.Math.PI * float (radius * radius)
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_03.fs b/src/FPinFSharp.Chapter_01/Section_03.fs
similarity index 85%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_03.fs
rename to src/FPinFSharp.Chapter_01/Section_03.fs
index d579b48..6d57006 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_03.fs
+++ b/src/FPinFSharp.Chapter_01/Section_03.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
// 1.3 Anonymous functions. Function expressions.
-module Section_01_03 =
+module Section_03 =
let calculateCircleAreaUsingAnonymousFunction (radius: int) =
let anonymousFunction = fun r -> System.Math.PI * r * r
anonymousFunction radius
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_04.fs b/src/FPinFSharp.Chapter_01/Section_04.fs
similarity index 93%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_04.fs
rename to src/FPinFSharp.Chapter_01/Section_04.fs
index acd48e9..b0493eb 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_04.fs
+++ b/src/FPinFSharp.Chapter_01/Section_04.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
// 1.4 Recursion.
-module Section_01_04 =
+module Section_04 =
let rec factorial x =
match x with
| 0 -> 1
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_05.fs b/src/FPinFSharp.Chapter_01/Section_05.fs
similarity index 91%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_05.fs
rename to src/FPinFSharp.Chapter_01/Section_05.fs
index 5d66f02..e3a20c1 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_05.fs
+++ b/src/FPinFSharp.Chapter_01/Section_05.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
// 1.5 Pairs.
-module Section_01_05 =
+module Section_05 =
// Let's define a custom complex type that represent a point.
type Point = { X: int; Y: int }
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_06.fs b/src/FPinFSharp.Chapter_01/Section_06.fs
similarity index 88%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_06.fs
rename to src/FPinFSharp.Chapter_01/Section_06.fs
index 516dc4e..eab4bee 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_06.fs
+++ b/src/FPinFSharp.Chapter_01/Section_06.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
-open FPinFSharp.Exercises.Chapter_01.Section_01_01
+open FPinFSharp.Chapter_01.Section_01
// 1.6 Types and type checking.
-module Section_01_06 =
+module Section_06 =
// F# will try to infer a type for each value, expression and declaration entered.
// If the system can infer a type for the input, then the input is accepted by the system.
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_07.md b/src/FPinFSharp.Chapter_01/Section_07.md
similarity index 100%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_07.md
rename to src/FPinFSharp.Chapter_01/Section_07.md
diff --git a/src/FPinFSharp.Exercises/Chapter_01/Section_01_08.fs b/src/FPinFSharp.Chapter_01/Section_08.fs
similarity index 85%
rename from src/FPinFSharp.Exercises/Chapter_01/Section_01_08.fs
rename to src/FPinFSharp.Chapter_01/Section_08.fs
index 629920d..651c343 100644
--- a/src/FPinFSharp.Exercises/Chapter_01/Section_01_08.fs
+++ b/src/FPinFSharp.Chapter_01/Section_08.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_01
+namespace FPinFSharp.Chapter_01
// 1.8 Euclid’s algorithm (for computing the greatest common divisor of two natural numbers).
-module Section_01_08 =
+module Section_08 =
// Euclid's algorithm is implemented by using pattern matching to handle the base case (when `m` is 0)
// and recursively updating the values of `m` and `n` until the base case is reached.
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Description.md b/src/FPinFSharp.Chapter_02/Description.md
similarity index 100%
rename from src/FPinFSharp.Exercises/Chapter_02/Description.md
rename to src/FPinFSharp.Chapter_02/Description.md
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Exercises.fs b/src/FPinFSharp.Chapter_02/Exercises.fs
similarity index 98%
rename from src/FPinFSharp.Exercises/Chapter_02/Exercises.fs
rename to src/FPinFSharp.Chapter_02/Exercises.fs
index 78aa0de..94434b3 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Exercises.fs
+++ b/src/FPinFSharp.Chapter_02/Exercises.fs
@@ -1,4 +1,4 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
open System;
diff --git a/src/FPinFSharp.Chapter_02/FPinFSharp.Chapter_02.fsproj b/src/FPinFSharp.Chapter_02/FPinFSharp.Chapter_02.fsproj
new file mode 100644
index 0000000..2f6dbd5
--- /dev/null
+++ b/src/FPinFSharp.Chapter_02/FPinFSharp.Chapter_02.fsproj
@@ -0,0 +1,26 @@
+
+
+
+ net8.0
+ true
+ FPinFSharp.Chapter_02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_01.fs b/src/FPinFSharp.Chapter_02/Section_01.fs
similarity index 98%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_01.fs
rename to src/FPinFSharp.Chapter_02/Section_01.fs
index 1f5a9e6..b3b303f 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_01.fs
+++ b/src/FPinFSharp.Chapter_02/Section_01.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
open System
open System.Globalization
// 2.1 Numbers. Truth values. The unit type
-module Section_02_01 =
+module Section_01 =
let tryParseInt (value: string) =
match Int32.TryParse(value) with
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_02.fs b/src/FPinFSharp.Chapter_02/Section_02.fs
similarity index 80%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_02.fs
rename to src/FPinFSharp.Chapter_02/Section_02.fs
index f91ebdf..cbe4ccb 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_02.fs
+++ b/src/FPinFSharp.Chapter_02/Section_02.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.2 Operator precedence and association
-module Section_02_02 =
+module Section_02 =
let add a b =
a + b
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_03.fs b/src/FPinFSharp.Chapter_02/Section_03.fs
similarity index 91%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_03.fs
rename to src/FPinFSharp.Chapter_02/Section_03.fs
index ea72151..e6c4ec9 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_03.fs
+++ b/src/FPinFSharp.Chapter_02/Section_03.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
open System
// 2.3 Characters and strings
-module Section_02_03 =
+module Section_03 =
// A string is a sequence of characters. Strings are values of the type string.
// A string is written inside enclosing quotes that are not part of the string.
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_04.fs b/src/FPinFSharp.Chapter_02/Section_04.fs
similarity index 74%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_04.fs
rename to src/FPinFSharp.Chapter_02/Section_04.fs
index be8ba6a..971e5ac 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_04.fs
+++ b/src/FPinFSharp.Chapter_02/Section_04.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.4 If-then-else expressions
-module Section_02_04 =
+module Section_04 =
// Please see Chapter_01_08.fs for the additional information.
let rec gcd (m, n) =
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_05.fs b/src/FPinFSharp.Chapter_02/Section_05.fs
similarity index 97%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_05.fs
rename to src/FPinFSharp.Chapter_02/Section_05.fs
index 48fb330..47cec30 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_05.fs
+++ b/src/FPinFSharp.Chapter_02/Section_05.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.5 Overloaded functions and operators
-module Section_02_05 =
+module Section_05 =
// A name or symbol for a function or operator is overloaded if it has different meanings
// when applied to arguments or operands of different types.
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_06.fs b/src/FPinFSharp.Chapter_02/Section_06.fs
similarity index 95%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_06.fs
rename to src/FPinFSharp.Chapter_02/Section_06.fs
index 60024b3..74f4c71 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_06.fs
+++ b/src/FPinFSharp.Chapter_02/Section_06.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.5 Type inference
-module Section_02_06 =
+module Section_06 =
// Consider the function 'power'.
// Please note: there is already a power operator '**' in F#,
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_07.fs b/src/FPinFSharp.Chapter_02/Section_07.fs
similarity index 95%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_07.fs
rename to src/FPinFSharp.Chapter_02/Section_07.fs
index 7323678..1360e60 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_07.fs
+++ b/src/FPinFSharp.Chapter_02/Section_07.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.7 Functions are first-class citizens (higher-order functions)
-module Section_02_07 =
+module Section_07 =
// # The value of a function can be a function.
// Function application associates to the left.
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_08.fs b/src/FPinFSharp.Chapter_02/Section_08.fs
similarity index 91%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_08.fs
rename to src/FPinFSharp.Chapter_02/Section_08.fs
index 38b4d36..2a32c7d 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_08.fs
+++ b/src/FPinFSharp.Chapter_02/Section_08.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.7 Closures
-module Section_02_08 =
+module Section_08 =
// A closure gives the means of explaining a value that is a function. A closure is a triple: (x, exp, env).
// Where 'x' is an argument identifier,
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_09.fs b/src/FPinFSharp.Chapter_02/Section_09.fs
similarity index 93%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_09.fs
rename to src/FPinFSharp.Chapter_02/Section_09.fs
index fe9596d..d99a1d6 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_09.fs
+++ b/src/FPinFSharp.Chapter_02/Section_09.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.9 Declaring prefix and infix operators
-module Section_02_09 =
+module Section_09 =
// Prefix operators are expected to be placed in front of an operand or operands, much like a function.
// Infix operators are expected to be placed between the two operands.
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_10.fs b/src/FPinFSharp.Chapter_02/Section_10.fs
similarity index 92%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_10.fs
rename to src/FPinFSharp.Chapter_02/Section_10.fs
index 5ba99d0..d262df8 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_10.fs
+++ b/src/FPinFSharp.Chapter_02/Section_10.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
open System
// 2.10 Equality and ordering
-module Section_02_10 =
+module Section_10 =
// It is not defined on functions (closures):
// cos = sin;;
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_11.fs b/src/FPinFSharp.Chapter_02/Section_11.fs
similarity index 85%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_11.fs
rename to src/FPinFSharp.Chapter_02/Section_11.fs
index b6083de..5f3ad06 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_11.fs
+++ b/src/FPinFSharp.Chapter_02/Section_11.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
open System
// 2.11 Function application operators |> and <|
-module Section_02_11 =
+module Section_11 =
// `arg |> myFunction` means `myFunction arg`
// `myFunction <| arg` means `myFunction arg`
diff --git a/src/FPinFSharp.Exercises/Chapter_02/Section_02_12.fs b/src/FPinFSharp.Chapter_02/Section_12.fs
similarity index 98%
rename from src/FPinFSharp.Exercises/Chapter_02/Section_02_12.fs
rename to src/FPinFSharp.Chapter_02/Section_12.fs
index 3983c5f..6a073d1 100644
--- a/src/FPinFSharp.Exercises/Chapter_02/Section_02_12.fs
+++ b/src/FPinFSharp.Chapter_02/Section_12.fs
@@ -1,7 +1,7 @@
-namespace FPinFSharp.Exercises.Chapter_02
+namespace FPinFSharp.Chapter_02
// 2.12 Summary of the basic types
-module Section_02_12 =
+module Section_12 =
// Helpers.
let formatNumeric (values: 'T * 'T) : string * string =
diff --git a/src/FPinFSharp.Exercises/Chapter_03/Description.md b/src/FPinFSharp.Exercises/Chapter_03/Description.md
deleted file mode 100644
index 48d3e4d..0000000
--- a/src/FPinFSharp.Exercises/Chapter_03/Description.md
+++ /dev/null
@@ -1,3 +0,0 @@
-### Chapter 03: Tuples, records and tagged values
-
-// TODO: add details.
\ No newline at end of file
diff --git a/src/FPinFSharp.Exercises/FPinFSharp.Exercises.fsproj b/src/FPinFSharp.Exercises/FPinFSharp.Exercises.fsproj
deleted file mode 100644
index e48436c..0000000
--- a/src/FPinFSharp.Exercises/FPinFSharp.Exercises.fsproj
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
- net8.0
- true
- FPinFSharp.Exercises
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Exercises_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Exercises_Tests.fs
similarity index 95%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Exercises_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Exercises_Tests.fs
index 0b3f0e6..307ba12 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Exercises_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Exercises_Tests.fs
@@ -1,6 +1,6 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Exercises
+open FPinFSharp.Chapter_01.Exercises
open Xunit
module Exercises_Tests =
diff --git a/tests/FPinFSharp.Chapter_01.UnitTests/FPinFSharp.Chapter_01.UnitTests.fsproj b/tests/FPinFSharp.Chapter_01.UnitTests/FPinFSharp.Chapter_01.UnitTests.fsproj
new file mode 100644
index 0000000..ef5afd0
--- /dev/null
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/FPinFSharp.Chapter_01.UnitTests.fsproj
@@ -0,0 +1,46 @@
+
+
+
+ net8.0
+ false
+ false
+ true
+ FPinFSharp.Chapter_01.UnitTests
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_01_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_01_Tests.fs
similarity index 75%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_01_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_01_Tests.fs
index ab650b3..87a1848 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_01_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_01_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_01
+open FPinFSharp.Chapter_01.Section_01
open Xunit
-module Section_01_01_Tests =
+module Section_01_Tests =
[]
let ``Should double a number`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_02_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_02_Tests.fs
similarity index 80%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_02_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_02_Tests.fs
index ad8d416..f9a7aa2 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_02_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_02_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_02
+open FPinFSharp.Chapter_01.Section_02
open Xunit
-module Section_01_02_Tests =
+module Section_02_Tests =
[]
let ``Should calculate a circle area`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_03_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_03_Tests.fs
similarity index 84%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_03_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_03_Tests.fs
index 9d63cda..070b631 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_03_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_03_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_03
+open FPinFSharp.Chapter_01.Section_03
+open FPinFSharp.Chapter_01.UnitTests
open Xunit
-module Section_01_03_Tests =
+module Section_03_Tests =
[]
let ``Should calculate a circle area (v3)`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_04_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_04_Tests.fs
similarity index 61%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_04_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_04_Tests.fs
index 1006a79..e760642 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_04_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_04_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_04
+open FPinFSharp.Chapter_01.Section_04
open Xunit
-module Section_01_04_Tests =
+module Section_04_Tests =
[]
let ``Should calculate factorial 5`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_05_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_05_Tests.fs
similarity index 82%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_05_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_05_Tests.fs
index 550f92b..4d56f5f 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_05_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_05_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_05
+open FPinFSharp.Chapter_01.Section_05
open Xunit
-module Section_01_05_Tests =
+module Section_05_Tests =
[]
let ``Should get a pair of coordinates from a point`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_06_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_06_Tests.fs
similarity index 62%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_06_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_06_Tests.fs
index 2463206..9480ce5 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_06_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_06_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_06
+open FPinFSharp.Chapter_01.Section_06
open Xunit
-module Section_01_06_Tests =
+module Section_06_Tests =
[]
let ``Should triple 10 to get 1000`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_08_Tests.fs b/tests/FPinFSharp.Chapter_01.UnitTests/Section_08_Tests.fs
similarity index 73%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_08_Tests.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/Section_08_Tests.fs
index dc87dc9..f4b6ee5 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_01/Section_01_08_Tests.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/Section_08_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_01
+namespace FPinFSharp.Chapter_01.UnitTests
-open FPinFSharp.Exercises.Chapter_01.Section_01_08
+open FPinFSharp.Chapter_01.Section_08
open Xunit
-module Section_01_08_Tests =
+module Section_08_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/TestDataBase.fs b/tests/FPinFSharp.Chapter_01.UnitTests/TestDataBase.fs
similarity index 85%
rename from tests/FPinFSharp.Exercises.UnitTests/TestDataBase.fs
rename to tests/FPinFSharp.Chapter_01.UnitTests/TestDataBase.fs
index 4319006..3b3304e 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/TestDataBase.fs
+++ b/tests/FPinFSharp.Chapter_01.UnitTests/TestDataBase.fs
@@ -1,4 +1,4 @@
-namespace FPinFSharp.Exercises.UnitTests
+namespace FPinFSharp.Chapter_01.UnitTests
type TestDataBase(generator : obj [] seq) =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Exercises_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Exercises_Tests.fs
similarity index 96%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Exercises_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Exercises_Tests.fs
index 77b08ca..7d42468 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Exercises_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Exercises_Tests.fs
@@ -1,6 +1,6 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Exercises
+open FPinFSharp.Chapter_02.Exercises
open Shouldly
open Xunit
diff --git a/tests/FPinFSharp.Chapter_02.UnitTests/FPinFSharp.Chapter_02.UnitTests.fsproj b/tests/FPinFSharp.Chapter_02.UnitTests/FPinFSharp.Chapter_02.UnitTests.fsproj
new file mode 100644
index 0000000..84cd7d0
--- /dev/null
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/FPinFSharp.Chapter_02.UnitTests.fsproj
@@ -0,0 +1,51 @@
+
+
+
+ net8.0
+ false
+ false
+ true
+ FPinFSharp.Chapter_02.UnitTests
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_01_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_01_Tests.fs
similarity index 96%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_01_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_01_Tests.fs
index 8de097b..305932f 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_01_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_01_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
open System;
-open FPinFSharp.Exercises.Chapter_02.Section_02_01
+open FPinFSharp.Chapter_02.Section_01
open Xunit
-module Section_02_01_Tests =
+module Section_01_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_02_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_02_Tests.fs
similarity index 89%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_02_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_02_Tests.fs
index 454d97f..84b0a28 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_02_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_02_Tests.fs
@@ -1,9 +1,9 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_02
+open FPinFSharp.Chapter_02.Section_02
open Xunit
-module Section_02_02_Tests =
+module Section_02_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_03_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_03_Tests.fs
similarity index 78%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_03_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_03_Tests.fs
index a0c6fea..cbc38ff 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_03_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_03_Tests.fs
@@ -1,11 +1,11 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.UnitTests.Extensions
-open FPinFSharp.Exercises.Chapter_02.Section_02_03
+open FPinFSharp.Chapter_02.UnitTests
+open FPinFSharp.Chapter_02.Section_03
open Shouldly
open Xunit
-module Section_02_03_Tests =
+module Section_03_Tests =
[]
let ``Should get a random letter`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_04_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_04_Tests.fs
similarity index 74%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_04_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_04_Tests.fs
index aacebec..90bc3c7 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_04_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_04_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_04
+open FPinFSharp.Chapter_02.Section_04
open Shouldly
open Xunit
-module Section_02_04_Tests =
+module Section_04_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_05_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_05_Tests.fs
similarity index 92%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_05_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_05_Tests.fs
index 010c320..29719f9 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_05_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_05_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_05
+open FPinFSharp.Chapter_02.Section_05
open Shouldly
open Xunit
-module Section_02_05_Tests =
+module Section_05_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_06_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_06_Tests.fs
similarity index 71%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_06_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_06_Tests.fs
index aaa6096..2390581 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_06_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_06_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_06
+open FPinFSharp.Chapter_02.Section_06
open Shouldly
open Xunit
-module Section_02_06_Tests =
+module Section_06_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_07_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_07_Tests.fs
similarity index 95%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_07_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_07_Tests.fs
index 17d663d..b51c5fc 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_07_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_07_Tests.fs
@@ -1,11 +1,11 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
open System
-open FPinFSharp.Exercises.Chapter_02.Section_02_07
+open FPinFSharp.Chapter_02.Section_07
open Shouldly
open Xunit
-module Section_02_07_Tests =
+module Section_07_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_08_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_08_Tests.fs
similarity index 63%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_08_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_08_Tests.fs
index d197fe3..79beea8 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_08_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_08_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_08
+open FPinFSharp.Chapter_02.Section_08
open Shouldly
open Xunit
-module Section_02_08_Tests =
+module Section_08_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_09_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_09_Tests.fs
similarity index 82%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_09_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_09_Tests.fs
index 937e62f..b714b51 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_09_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_09_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_09
+open FPinFSharp.Chapter_02.Section_09
open Shouldly
open Xunit
-module Section_02_09_Tests =
+module Section_09_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_10_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_10_Tests.fs
similarity index 80%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_10_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_10_Tests.fs
index b921634..45ef461 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_10_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_10_Tests.fs
@@ -1,10 +1,10 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
-open FPinFSharp.Exercises.Chapter_02.Section_02_10
+open FPinFSharp.Chapter_02.Section_10
open Shouldly
open Xunit
-module Section_02_10_Tests =
+module Section_10_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_11_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_11_Tests.fs
similarity index 87%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_11_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_11_Tests.fs
index d66e73d..e2510c9 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_11_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_11_Tests.fs
@@ -1,11 +1,11 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
open System
-open FPinFSharp.Exercises.Chapter_02.Section_02_11
+open FPinFSharp.Chapter_02.Section_11
open Shouldly
open Xunit
-module Section_02_11_Tests =
+module Section_11_Tests =
[]
let ``GIVEN true WHEN raiseExceptionIfTrue THEN InvalidOperationException is thrown`` () =
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_12_Tests.fs b/tests/FPinFSharp.Chapter_02.UnitTests/Section_12_Tests.fs
similarity index 98%
rename from tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_12_Tests.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/Section_12_Tests.fs
index e147a64..a3b413f 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Chapter_02/Section_02_12_Tests.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/Section_12_Tests.fs
@@ -1,12 +1,12 @@
-namespace FPinFSharp.Exercises.UnitTests.Chapter_02
+namespace FPinFSharp.Chapter_02.UnitTests
open System
open System.Numerics
-open FPinFSharp.Exercises.Chapter_02.Section_02_12
+open FPinFSharp.Chapter_02.Section_12
open Shouldly
open Xunit
-module Section_02_12_Tests =
+module Section_12_Tests =
[]
[]
diff --git a/tests/FPinFSharp.Exercises.UnitTests/Extensions/ShouldlyExtensions.fs b/tests/FPinFSharp.Chapter_02.UnitTests/ShouldlyExtensions.fs
similarity index 91%
rename from tests/FPinFSharp.Exercises.UnitTests/Extensions/ShouldlyExtensions.fs
rename to tests/FPinFSharp.Chapter_02.UnitTests/ShouldlyExtensions.fs
index 930d5a2..5929e89 100644
--- a/tests/FPinFSharp.Exercises.UnitTests/Extensions/ShouldlyExtensions.fs
+++ b/tests/FPinFSharp.Chapter_02.UnitTests/ShouldlyExtensions.fs
@@ -1,4 +1,4 @@
-namespace FPinFSharp.Exercises.UnitTests.Extensions
+namespace FPinFSharp.Chapter_02.UnitTests
open System
open System.Runtime.CompilerServices
diff --git a/tests/FPinFSharp.Exercises.UnitTests/FPinFSharp.Exercises.UnitTests.fsproj b/tests/FPinFSharp.Exercises.UnitTests/FPinFSharp.Exercises.UnitTests.fsproj
deleted file mode 100644
index bcca3ad..0000000
--- a/tests/FPinFSharp.Exercises.UnitTests/FPinFSharp.Exercises.UnitTests.fsproj
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
- net8.0
- false
- false
- true
- FPinFSharp.Exercises.UnitTests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-