diff --git a/.gitignore b/.gitignore
index c27dd3b..bc44d97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -203,3 +203,5 @@
/Semester 4/Assignments/HashMapASDV_Ant/nbproject/private/
/Semester 4/Assignments/HashMapASDV_Ant/build/
/Semester 4/Assignments/HashMapASDV_Ant/dist/
+/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/target/
+/Semester 4/Assignments/Multithreading_CalebFontenot/target/
diff --git a/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/pom.xml b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/pom.xml
new file mode 100644
index 0000000..3e39986
--- /dev/null
+++ b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/pom.xml
@@ -0,0 +1,14 @@
+
+
+ 4.0.0
+ edu.slcc.asdv.caleb
+ MP1_ManyToMany_CalebFontenot
+ 1.0-SNAPSHOT
+ jar
+
+ UTF-8
+ 20
+ 20
+ edu.slcc.asdv.caleb.mp1_manytomany_calebfontenot.MP1_ManyToMany_CalebFontenot
+
+
\ No newline at end of file
diff --git a/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToMany.java b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToMany.java
new file mode 100644
index 0000000..c9c85cb
--- /dev/null
+++ b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToMany.java
@@ -0,0 +1,114 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package edu.slcc.asdv.caleb.mp1_manytomany_calebfontenot;
+
+/**
+ *
+ * @author caleb
+ */
+import java.util.List;
+import java.util.Set;
+
+/**
+ *
+ * @author A. V. Markou
+ * @param
+ * @param
+ */
+public interface ManyToMany
+{
+ /**
+ * Creates a Many to Many relationship between the parentLeft and the
+ * childrenRight. Example for ( Many1 a, Many2 1, 2, 3) it creates --> (a 1)
+ * ( a 2 ) ( a 3 ) and ( 1, a ), ( 2, a ), ( 3, a). No duplicate values of
+ * Many2 are allowed.
+ *
+ * @param parentLeft - exactly one Many1 object.
+ * @param childrenRight - one or more Many2 objects.
+ * @return the previous value associated with Many1, or null if there was no
+ * Many1 with the same "key".
+ * @throws ClassCastException - if the class of the specified Many1, or
+ * Many2 or value prevents it from being stored in this map( i,e Many1 is
+ * String and you pass an object)
+ * @throws NullPointerException - if the specified Many1 or Many2 is null
+ * and ManyToMany does not permit nulls as values.
+ * @throw IllegalArgumentException - if a duplicate exists in childrenRight
+ * list ( s1 --> p1,p2,p2 is not allowed).
+ * @return the previous value associated with parentLeft, or null if there
+ * was no childrenRight for parentLeft.
+ */
+ List add(Many1 parentLeft, Many2... childrenRight);
+
+ /**
+ * Returns the List of all left children of the parentRight.
+ *
+ * @param parentRight a parent at the RHS of the many to many relationship.
+ * @return the List of all left children of the parentRight.
+ * @throw IllegalArgumentException if the value of parameter parentRight
+ * does not exist in the RHS of the many to many relationship.
+ */
+ List getChildrenLeft(Many2 parentRight);
+
+ /**
+ * Returns the List of all right children of the parentLeft.
+ *
+ * @param parentLeft a parent at the LHS of the many to many relationship.
+ * @return the List of all right children of the parentLeft.
+ * @throws IllegalArgumentException if the value of parameter parentLeft
+ * does not exist on the LHS of the many to many relationship.
+ */
+ List getChildrenRight(Many1 parentLeft);
+
+ /**
+ * Returns a set of the Many1 elements that exist on the LHS of the many to
+ * many relationship.
+ *
+ * @return Set of Many1
+ */
+ Set getParentsLeft();
+
+ /**
+ * Returns a set of the Many2 elements that exist on the RHS of the many to
+ * many relationship.
+ *
+ * @return Set of Many2
+ */
+ Set getParentsRight();
+
+ /**
+ * Removes the many1 parameter from the LHS of the many relationship AND all
+ * its corresponding values that exist in the RHS of the many to many
+ * relationship. For example given: ( LHS e1: p1, p2 e2: p2, p3 RHS: p1: e1
+ * p2: e1, e2 p3: e2 after removing e1 from the LHS will results into: ( LHS
+ * e2: p2, p3 RHS: p2: e2 p3: e2
+ *
+ * @param many1 the unique element on the LHS to be removed.
+ * @throws NullPointerException if parameter many1 is null.
+ * @return true if the removal occurred, false if many1 does not exist in
+ * the LHS of the many to many relationship.
+ */
+ boolean removeLeft(Many1 many1);
+
+ /**
+ * Removes the many1 parameter from the RHS of the many relationship AND all
+ * its corresponding values that exist in the LHS of the many to many
+ * relationship. For example given: LHS e2: p2, p3 RHS: p2: e2 p3: e2 after
+ * removing p2 from the RHS will results into: LHS e2: p3 RHS p3: e2
+ *
+ *
+ * @param many2 the unique element on the LHS to be removed.
+ * @throws NullPointerException if parameter many1 is null.
+ * @return true if the removal occurred, false if many1 does not exist in
+ * the LHS of the many to many relationship.
+ */
+ boolean removeRight(Many2 many2);
+
+ /**
+ * Clears all.
+ *
+ */
+ void clear();
+}
+
diff --git a/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToManyFactory.java b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToManyFactory.java
new file mode 100644
index 0000000..14794bf
--- /dev/null
+++ b/Semester 4/Assignments/MP1_ManyToMany_CalebFontenot/src/main/java/edu/slcc/asdv/caleb/mp1_manytomany_calebfontenot/ManyToManyFactory.java
@@ -0,0 +1,182 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package edu.slcc.asdv.caleb.mp1_manytomany_calebfontenot;
+
+/**
+ *
+ * @author caleb
+ */
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ * @author asdv5
+ */
+public class ManyToManyFactory {
+
+ public static //generic types to be used in the method
+ ManyToMany< Many1, Many2>//return type
+ createManyToMany()
+ {
+ return new ManyToMany() {
+ private HashSet parents = new HashSet();
+
+ private Map