diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1ddfbbc029bcab630581847471d7f238ec53..38781555edf5f3a26edb9f21ef928e2eda156f1f 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/StringCalculator" vcs="Git" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/__pycache__/interfaces.cpython-310.pyc b/src/__pycache__/interfaces.cpython-310.pyc
index 95e7981751754055c5e10944cc00468b50941e10..d7953f25e6f8b9e6f58dfc3cdb55b061b176f472 100644
Binary files a/src/__pycache__/interfaces.cpython-310.pyc and b/src/__pycache__/interfaces.cpython-310.pyc differ
diff --git a/src/__pycache__/romannumerals.cpython-310.pyc b/src/__pycache__/romannumerals.cpython-310.pyc
index f6197cf9b2af49383222064fa3d7a160c943eea6..24f836671a9a8436497583973509848b92b6dc91 100644
Binary files a/src/__pycache__/romannumerals.cpython-310.pyc and b/src/__pycache__/romannumerals.cpython-310.pyc differ
diff --git a/src/__pycache__/stringcalculator.cpython-310.pyc b/src/__pycache__/stringcalculator.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..938708f3482e2cedde5ca28d3caf0cfceea2ad7f
Binary files /dev/null and b/src/__pycache__/stringcalculator.cpython-310.pyc differ
diff --git a/src/interfaces.py b/src/interfaces.py
index fc645736ebe7edf2091db66c3738825f50fd923f..386cace279b05d126d9b5ed73ee758a43ae5223b 100644
--- a/src/interfaces.py
+++ b/src/interfaces.py
@@ -1,6 +1,6 @@
 from abc import ABC, abstractmethod
 
-class IRomanNumerals(ABC):
+class IRomanNumber(ABC):
     @abstractmethod
-    def to_roman(self, num):
-        pass
\ No newline at end of file
+    def convert(self, n: int) -> str:
+        pass
diff --git a/src/romannumerals.py b/src/romannumerals.py
index 3f3eaf1e8e956ca023c64ae71e38caefb1198940..2507532728391ee0523da6172527a5482d3a5148 100644
--- a/src/romannumerals.py
+++ b/src/romannumerals.py
@@ -1,11 +1,10 @@
-from src.interfaces import IRomanNumerals
+from src.interfaces import IRomanNumber
 
-
-class RomanNumerals(IRomanNumerals):
-    def to_roman(self, num):
-        if not isinstance(num, int):
+class RomanNumber(IRomanNumber):
+    def convert(self, n: int) -> str:
+        if not isinstance(n, int):
             raise ValueError("Eingabe muss eine ganze Zahl sein")
-        if num <= 0 or num >= 4000:
+        if n <= 0 or n >= 4000:
             raise ValueError("Zahl muss zwischen 1 und 3999 liegen")
 
         val = [
@@ -17,7 +16,7 @@ class RomanNumerals(IRomanNumerals):
 
         result = ""
         for (value, numeral) in val:
-            while num >= value:
+            while n >= value:
                 result += numeral
-                num -= value
+                n -= value
         return result
\ No newline at end of file
diff --git a/tests/__pycache__/test_romannumerals.cpython-310.pyc b/tests/__pycache__/test_romannumerals.cpython-310.pyc
index e14f2572a91805d1b33f9c03c0890bd6a036010c..1809b2b966feaa1479662587eca1207db19195ad 100644
Binary files a/tests/__pycache__/test_romannumerals.cpython-310.pyc and b/tests/__pycache__/test_romannumerals.cpython-310.pyc differ
diff --git a/tests/__pycache__/test_stringcalculator.cpython-310.pyc b/tests/__pycache__/test_stringcalculator.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..31a224455e3a18f535acc76eafba13b427a27f89
Binary files /dev/null and b/tests/__pycache__/test_stringcalculator.cpython-310.pyc differ
diff --git a/tests/test_romannumerals.py b/tests/test_romannumerals.py
index 9a774cc92787102f3ef685b0c6a80138e5bbcedf..35e2af35f754d89a2da55ab9537741a29fd40960 100644
--- a/tests/test_romannumerals.py
+++ b/tests/test_romannumerals.py
@@ -18,7 +18,7 @@
 # Bei Eingabe der Zahl 3 erhalte ich das Ergebnis "III"
 # Bei Eingabe der Zahl 6 erhalte ich das Ergebnis "VI"
 # Bei Eingabe der Zahl 8 erhalte ich das Ergebnis "VIII"
-# Bei Eingabe der Zahl 30 erhalte ich das Ergebnis "XXX"
+# Bei Eingabe der Zahl 30 erhalte ich das Ergebnis "XXXX"
 # Bei Eingabe der Zahl 80 erhalte ich das Ergebnis "LXXX"
 # Kombination aus Addition und Subtraktion
 # Bei Eingabe der Zahl 14 erhalte ich das Ergebnis "XIV"
@@ -42,67 +42,60 @@
 # Bei Eingabe der Zahl 3.14 erhalte ich eine Fehlermeldung
 
 import unittest
-from src.romannumerals import RomanNumerals
+from src.romannumerals import RomanNumber
+from src.interfaces import IRomanNumber
 
-
-class TestRomanNumerals(unittest.TestCase):
+class TestRomanNumber(unittest.TestCase):
     def setUp(self):
-        self.converter = RomanNumerals()
-
-    def test_to_roman_basic(self):
-        self.assertEqual(self.converter.to_roman(1), "I")
-        self.assertEqual(self.converter.to_roman(5), "V")
-        self.assertEqual(self.converter.to_roman(10), "X")
-        self.assertEqual(self.converter.to_roman(50), "L")
-        self.assertEqual(self.converter.to_roman(100), "C")
-        self.assertEqual(self.converter.to_roman(500), "D")
-        self.assertEqual(self.converter.to_roman(1000), "M")
+        self.converter: IRomanNumber = RomanNumber()
 
-    def test_to_roman_subtraction(self):
-        self.assertEqual(self.converter.to_roman(4), "IV")
-        self.assertEqual(self.converter.to_roman(9), "IX")
-        self.assertEqual(self.converter.to_roman(40), "XL")
-        self.assertEqual(self.converter.to_roman(90), "XC")
-        self.assertEqual(self.converter.to_roman(400), "CD")
-        self.assertEqual(self.converter.to_roman(900), "CM")
+    def test_convert_subtraction(self):
+        self.assertEqual(self.converter.convert(4), "IV")
+        self.assertEqual(self.converter.convert(9), "IX")
+        self.assertEqual(self.converter.convert(40), "XL")
+        self.assertEqual(self.converter.convert(90), "XC")
+        self.assertEqual(self.converter.convert(400), "CD")
+        self.assertEqual(self.converter.convert(900), "CM")
 
-    def test_to_roman_addition(self):
-        self.assertEqual(self.converter.to_roman(2), "II")
-        self.assertEqual(self.converter.to_roman(3), "III")
-        self.assertEqual(self.converter.to_roman(6), "VI")
-        self.assertEqual(self.converter.to_roman(8), "VIII")
-        self.assertEqual(self.converter.to_roman(30), "XXX")
-        self.assertEqual(self.converter.to_roman(80), "LXXX")
+    def test_convert_addition(self):
+        self.assertEqual(self.converter.convert(2), "II")
+        self.assertEqual(self.converter.convert(3), "III")
+        self.assertEqual(self.converter.convert(6), "VI")
+        self.assertEqual(self.converter.convert(8), "VIII")
+        self.assertEqual(self.converter.convert(30), "XXX")
+        self.assertEqual(self.converter.convert(80), "LXXX")
 
-    def test_to_roman_mixed(self):
-        self.assertEqual(self.converter.to_roman(14), "XIV")
-        self.assertEqual(self.converter.to_roman(19), "XIX")
-        self.assertEqual(self.converter.to_roman(29), "XXIX")
-        self.assertEqual(self.converter.to_roman(44), "XLIV")
-        self.assertEqual(self.converter.to_roman(99), "XCIX")
-        self.assertEqual(self.converter.to_roman(444), "CDXLIV")
-        self.assertEqual(self.converter.to_roman(999), "CMXCIX")
+    def test_convert_mixed(self):
+        self.assertEqual(self.converter.convert(14), "XIV")
+        self.assertEqual(self.converter.convert(19), "XIX")
+        self.assertEqual(self.converter.convert(29), "XXIX")
+        self.assertEqual(self.converter.convert(44), "XLIV")
+        self.assertEqual(self.converter.convert(99), "XCIX")
+        self.assertEqual(self.converter.convert(444), "CDXLIV")
+        self.assertEqual(self.converter.convert(999), "CMXCIX")
 
-    def test_to_roman_large_numbers(self):
-        self.assertEqual(self.converter.to_roman(1001), "MI")
-        self.assertEqual(self.converter.to_roman(1987), "MCMLXXXVII")
-        self.assertEqual(self.converter.to_roman(2023), "MMXXIII")
-        self.assertEqual(self.converter.to_roman(3999), "MMMCMXCIX")
+    def test_convert_large_numbers(self):
+        self.assertEqual(self.converter.convert(1001), "MI")
+        self.assertEqual(self.converter.convert(1987), "MCMLXXXVII")
+        self.assertEqual(self.converter.convert(2023), "MMXXIII")
+        self.assertEqual(self.converter.convert(3999), "MMMCMXCIX")
 
-    def test_to_roman_invalid(self):
+    def test_convert_invalid(self):
         with self.assertRaises(ValueError):
-            self.converter.to_roman(0)
+            self.converter.convert(0)
         with self.assertRaises(ValueError):
-            self.converter.to_roman(-1)
+            self.converter.convert(-1)
         with self.assertRaises(ValueError):
-            self.converter.to_roman(4000)
+            self.converter.convert(4000)
         with self.assertRaises(ValueError):
-            self.converter.to_roman("ABC")
+            self.converter.convert("ABC")
         with self.assertRaises(ValueError):
-            self.converter.to_roman(None)
+            self.converter.convert(None)
         with self.assertRaises(ValueError):
-            self.converter.to_roman(3.14)
-
+            self.converter.convert(3.14)
 
 if __name__ == "__main__":
-    unittest.main()
\ No newline at end of file
+    unittest.main()
+
+# python -m unittest tests.test_romannumerals
+# python -m unittest discover -s tests
\ No newline at end of file