diff --git a/universe/components.py b/universe/components.py
index 98d274a..7bba5cb 100644
--- a/universe/components.py
+++ b/universe/components.py
@@ -32,13 +32,13 @@ class Component(metaclass=MetaComponent):
 
 
 class MetadataComponent(Component):
-    name = 'metadata'
+    _name = 'metadata'
 
     type = fields.CharField(required=True)
 
 
 class PositionComponent(Component):
-    name = 'position'
+    _name = 'position'
 
     x = fields.IntField()
     y = fields.IntField()
@@ -48,7 +48,7 @@ class PositionComponent(Component):
 
 
 class QueueComponent(Component):
-    name = 'queue'
+    _name = 'queue'
 
     queue = fields.ListField()
 
@@ -57,20 +57,20 @@ class QueueComponent(Component):
 
 
 class SpeciesComponent(Component):
-    name = 'species'
+    _name = 'species'
 
-    singular_name = fields.CharField(required=True)
+    name = fields.CharField(required=True)
     plural_name = fields.CharField(required=True)
     growth_rate = fields.IntField(required=True)
 
 
 class OwnershipComponent(Component):
-    name = 'ownership'
+    _name = 'ownership'
 
     owner_id = fields.IntField(required=False)
 
 
 class PopulationComponent(Component):
-    name = 'population'
+    _name = 'population'
 
     population = fields.IntField(required=False)
diff --git a/universe/engine.py b/universe/engine.py
index 9e8d022..9158188 100644
--- a/universe/engine.py
+++ b/universe/engine.py
@@ -51,7 +51,7 @@ class Manager:
         if name in self._entity_registry:
             raise ValueError("{} is already a registered entity type.".format(name))
         _components.append(components.MetadataComponent())
-        self._entity_registry[name] = {component.name: component for component in _components}
+        self._entity_registry[name] = {component._name: component for component in _components}
 
     def get_updates(self, _id):
         return self._updates.get(_id, [])

`name` should not be a mandatory attribute on Components
Currently a Component's name is used to determine which registry dicts an Entity gets registered into, but `name` is also a very likely name for a field.  We should do something else to set up the entity registries.

Also, change `SpeciesComponent.singular_name` to `SpeciesComponent.name`.
diff --git a/tests/test_systems.py b/tests/test_systems.py
index 81cbaee..6711970 100644
--- a/tests/test_systems.py
+++ b/tests/test_systems.py
@@ -12,7 +12,7 @@ class PopulationTestCase(unittest.TestCase):
             'entities': {
                 0: {
                     'type': 'species',
-                    'singular_name': 'Human',
+                    'name': 'Human',
                     'plural_name': 'Humans',
                     'growth_rate': 15,
                 },
@@ -36,7 +36,7 @@ class PopulationTestCase(unittest.TestCase):
                           'entities': {
                               0: {
                                   'type': 'species',
-                                  'singular_name': 'Human',
+                                  'name': 'Human',
                                   'plural_name': 'Humans',
                                   'growth_rate': 15,
                                   },

pip install -e .
parse_log_pytest
pytest
tox pytest
pip install tox-travis
3.8
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
cachetools==5.5.2
chardet==5.2.0
colorama==0.4.6
distlib==0.3.9
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
filelock==3.16.1
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging==24.2
platformdirs==4.3.6
pluggy==1.5.0
py==1.11.0
pyproject-api==1.8.0
pytest @ file:///croot/pytest_1717793244625/work
six==1.17.0
tomli==2.2.1
tox==3.28.0
tox-travis==0.13
typing_extensions==4.13.0
-e git+https://github.com/jbradberry/universe.git@0227050ab01c868be9c31aedeaa3a52988619206#egg=universe
virtualenv==20.29.3

name: universe
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py38h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=24.2=py38h06a4308_0
  - pytest=7.4.4=py38h06a4308_0
  - python=3.8.20=he870216_0
  - readline=8.2=h5eee18b_0
  - setuptools=75.1.0=py38h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.44.0=py38h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - cachetools==5.5.2
      - chardet==5.2.0
      - colorama==0.4.6
      - distlib==0.3.9
      - filelock==3.16.1
      - packaging==24.2
      - platformdirs==4.3.6
      - pluggy==1.5.0
      - py==1.11.0
      - pyproject-api==1.8.0
      - six==1.17.0
      - tomli==2.2.1
      - tox==3.28.0
      - tox-travis==0.13
      - typing-extensions==4.13.0
      - virtualenv==20.29.3
prefix: /opt/conda/envs/universe

tests/test_systems.py::PopulationTestCase::test_population_growth
universe/components.py universe/engine.py
universe/components.py universe/engine.py