diff --git a/pycgtool/forcefield.py b/pycgtool/forcefield.py
index 89f2090ca483e61ec5289eee9d750318e50b03f3..be34b5727fe000f62e2a0b13ec82c766bfe0c5d6 100644
--- a/pycgtool/forcefield.py
+++ b/pycgtool/forcefield.py
@@ -8,7 +8,7 @@ import shutil
 import typing
 
 from .parsers import CFG
-from .util import any_starts_with, file_write_lines
+from .util import any_starts_with, backup_file, file_write_lines
 
 PathLike = typing.Union[pathlib.Path, str]
 
@@ -32,6 +32,7 @@ class ForceField:
         :param str name: Forcefield name to open/create
         """
         self.directory = pathlib.Path(dir_path).joinpath(f'ff{name}.ff')
+        backup_file(self.directory)
         self.directory.mkdir(parents=True, exist_ok=True)
 
         with open(self.directory.joinpath('forcefield.itp'), 'w') as itp:
diff --git a/tests/test_forcefield.py b/tests/test_forcefield.py
index 05aee8ad73ea42ff51eadf9f76892903077b21a5..57d5ed869f3d70e42f600c6627320f91158cbb56 100644
--- a/tests/test_forcefield.py
+++ b/tests/test_forcefield.py
@@ -1,6 +1,7 @@
-import unittest
-import os
 import collections
+import pathlib
+import tempfile
+import unittest
 
 from pycgtool.forcefield import ForceField
 
@@ -57,13 +58,18 @@ class ForceFieldTest(unittest.TestCase):
         self.bondset = DummyBondSet(self.bonds, "Dummy")
 
     def test_create(self):
-        name = "test"
-        dirname = "fftest.ff"
+        with tempfile.TemporaryDirectory() as t:
+            tmp_dir = pathlib.Path(t)
+
+            name = "test"
+            ff_dir = tmp_dir.joinpath('fftest.ff')
+
+            ForceField(name, dir_path=tmp_dir)
+            self.assertTrue(ff_dir.exists())
+            self.assertTrue(ff_dir.is_dir())
 
-        ForceField(name)
-        self.assertTrue(os.path.exists(dirname))
-        self.assertTrue(os.path.isdir(dirname))
-        ForceField(name)
+            # Makes a backup of the existing ff and replaces it
+            ForceField(name, dir_path=tmp_dir)
 
     def test_bond_section(self):
         expected = [