diff --git a/gala/potential/common.py b/gala/potential/common.py
index <HASH>..<HASH> 100644
--- a/gala/potential/common.py
+++ b/gala/potential/common.py
@@ -83,6 +83,13 @@ class CommonBase:
     def _parse_parameter_values(self, *args, **kwargs):
         expected_parameter_keys = list(self._parameters.keys())
 
+        if len(args) > len(expected_parameter_keys):
+            raise ValueError("Too many positional arguments passed in to "
+                             f"{self.__class__}: Potential and Frame classes "
+                             "only accept parameters as positional arguments, "
+                             "all other arguments (e.g., units) must now be "
+                             "passed in as keyword argument.")
+
         parameter_values = dict()
 
         # Get any parameters passed as positional arguments
diff --git a/gala/potential/potential/tests/helpers.py b/gala/potential/potential/tests/helpers.py
index <HASH>..<HASH> 100644
--- a/gala/potential/potential/tests/helpers.py
+++ b/gala/potential/potential/tests/helpers.py
@@ -65,7 +65,7 @@ class PotentialTestBase(object):
     def setup(self):
         # set up hamiltonian
         if self.frame is None:
-            self.frame = StaticFrame(self.potential.units)
+            self.frame = StaticFrame(units=self.potential.units)
         self.H = Hamiltonian(self.potential, self.frame)
 
     def test_unitsystem(self):
frames must now take units as a keyword argument