diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..5c0f15c97403164c68190f722ab1f19f39b5b0d7
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Ben Eltschig and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/client/logic/SkribblServer.js b/client/logic/SkribblServer.js
index 38c80c78742bab4e21b9e47b1366e6c6a55087a1..0db4d2e71d2275f7c954b12c300f8a8842cf7169 100644
--- a/client/logic/SkribblServer.js
+++ b/client/logic/SkribblServer.js
@@ -317,12 +317,125 @@ export default class SkribblServer {
 	}
 
 	/**
-	 * Checks whether a given guess is close to the given word.
+	 * Checks whether a given guess is close to the given word. A guess counts as close, if one letter is wrong,
+	 * two letters are swapped or the guess has one letter too much or too little.
 	 * @param {string} guess
 	 * @param {string} word
-	 * @todo implement
 	 */
-	static _isClose(guess,word){
+	static _isClose(guess,word) {
+		guess = guess.toLowerCase();
+		word = word.toLowerCase();
+		word.replace(/-/g," ");
+		guess.replace(/-/g," ");
+	
+		//if equal
+		if (guess == word) { 
+			return true;
+		}
+		
+		//either one letter wrong or two letters swapped
+		if (guess.length == word.length) {
+			let wordArray = [];
+			let guessArray = [];
+	
+			//makes the string into an array
+			for (var i = 0; i < word.length; i++) {
+				wordArray[i] = word.charAt(i);
+				guessArray[i] = guess.charAt(i);
+			}
+			
+			//Counts the mistakes and their position
+			let errorCounter = 0;
+			let errorPos = 0;
+	
+			for (var i = 0; i < wordArray.length; i++) {
+				if (wordArray[i] != guessArray[i]) {
+					if (errorCounter == 0) {
+						errorPos = i;
+					} if (errorCounter == 1) { //if a second mistake occurs, either the letters are swapped or it is not correct
+												//but there could be a third mistake, so in the case of a swap, true is not directly returned.
+						if ((wordArray[i] != guessArray[errorPos]) || (wordArray[errorPos] != guessArray[i])) {
+							return false;
+						}
+					} if (errorCounter >= 2) { //with two or more mistakes, the word is not close
+						return false;
+					}
+					errorCounter++;
+				}
+			}
+			
+			//if it hasnt returned false by now, the guess is close
+			return true;
+		}
+	
+		//if one letter too much
+		if (guess.length - 1 == word.length)  {
+			let wordArray = [];
+			let guessArray = [];
+	
+			for (var i = 0; i < word.length; i++) {
+				wordArray[i] = word.charAt(i);
+				guessArray[i] = guess.charAt(i);
+			}
+			guessArray[guessArray.length] = guess.charAt(guessArray.length);
+	
+			let errorCounter = 0; //also the offset
+			
+			for (var i = 0; i < wordArray.length; i++) {
+				if (wordArray[i] != guessArray[i + errorCounter]) {
+					errorCounter++;
+					if (errorCounter >= 2) {
+						return false;
+					}
+				}
+			}
+			
+			return true;
+		}
+	
+		//if one letter too little
+		if (guess.length + 1 == word.length) {
+			let wordArray = [];
+			let guessArray = [];
+	
+			for (var i = 0; i < guess.length; i++) {
+				wordArray[i] = word.charAt(i);
+				guessArray[i] = guess.charAt(i);
+			}
+			wordArray[wordArray.length] = word.charAt(wordArray.length);
+	
+			let errorCounter = 0; //also the offset
+			
+			for (var i = 0; i < guessArray.length; i++) {
+				if (wordArray[i + errorCounter] != guessArray[i]) {
+					errorCounter++;
+					if (errorCounter >= 2) {
+						return false;
+					}
+				}
+			}
+			
+			return true;
+		}
+	
 		return false;
 	}
+
+	/**
+	 * Checks if the guess is correct. It is not case-sensitive.
+	 * @param {string} guess
+	 * @param {string} word
+	 */
+	static _isCorrect(guess, word) {
+		guess = guess.toLowerCase();
+		word = word.toLowerCase();
+		word.replace(/-/g," ");
+		guess.replace(/-/g," ");
+
+		if (guess == word) { 
+			return true;
+		} else {
+			return true;
+		}
+	}
 }
\ No newline at end of file