Repository: mechmotum/symbrim (language: python)

Issue:
Releasing brim on pypi
When trying to publish brim on pypi I ran into the following issue:
```
HTTP Error 400: Invalid value for requires_dist. Error: Can't have direct dependency: 'sympy @ git+https://github.com/sympy/sympy.git' | b"<html>\n <head>\n  <title>400 Invalid value for requires_dist. Error: Can't have direct depen
dency: 'sympy @ git+https://github.com/sympy/sympy.git'\n \n <body>\n  <h1>400 Invalid value for requires_dist. Error: Can't have direct dependency: 'sympy @ git+https://github.com/sympy/sympy.git'\n  The server could not comply wit
h the request since it is either malformed or otherwise incorrect.<br/><br/>\nInvalid value for requires_dist. Error: Can&#x27;t have direct dependency: &#x27;sympy @ git+https://github.com/sympy/sympy.git&#x27;\n\n\n \n"
```


Discussion / hints:
The above issue has been solved by giving installation instructions in the README and temporary removing those from the `pyproject.toml` file. I've succeeded to publish `brim` on [PyPi testing](https://test.pypi.org/project/brim/). The problem that however remains is that it PyPi says that the name is not allowed:
```
$ poetry publish

Publishing brim (0.0.1) to PyPI
 - Uploading brim-0.0.1-py3-none-any.whl FAILED

HTTP Error 400: The name 'brim' isn't allowed. See https://pypi.org/help/#project-name for more information. | b"<html>\n <head>\n  <title>400 The name 'brim' isn't allowed. See https://pypi.org/help/#project-name for more information.\n \n <body>\
n  <h1>400 The name 'brim' isn't allowed. See https://pypi.org/help/#project-name for more information.\n  The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/>\nThe name &#x27;brim&#x27; isn&#x
27;t allowed. See https://pypi.org/help/#project-name for more information.\n\n\n \n"
```
Some names are taken on pypi but that isn't apparent from a search. For example, cyipopt was taken but didn't show up in a search. I then had to put in a request for the name and they eventually gave it to me because it was found it was never used and someone was just parking on it.
It seems you are depending on dev versions of software. For pip installs to work I think you really need to depend on released versions of dependencies. If we need to make a BicycleParameters release, etc. then I can help with that. The whole pypi and conda systems rely on released versions with specific version numbers, otherwise things can be resolved with dependency resolvers in the installation tools.
the problem is that it is depedent on `System` from sympy
I've opened [a request](https://github.com/pypi/support/issues/2843)
> I've opened https://github.com/pypi/support/issues/2843

I think it took quite some months when I made the cyipopt request, fyi.
> the problem is that it is depedent on System from sympy

Quite annoying that these things didn't get into 1.12. We should have tagged these prs as needing to go into 1.12.

Maybe we should try to do a new release for sympy soon.
they are experimental and so is `brim`, so I do agree with them not being in 1.12
Then it's probably best not to release to pypi yet.

Fix patch:
diff --git a/README.md b/README.md
index 76cef4a2..6e8bb36c 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,23 @@
-# BRiM
-A Modular and Extensible Open-Source Framework for Creating Bicycle-Rider Models.
+# SymBRiM
+A Modular and Extensible Open-Source Framework for Creating Symbolic Bicycle-Rider
+Models.
+
+As of October 2024, BRiM has been renamed to SymBRiM.
 
 Links with more information:
 
-- [Online documentation](https://mechmotum.github.io/brim/)
-- [BRiM paper publication](https://doi.org/10.59490/6504c5a765e8118fc7b106c3) ([source](https://github.com/TJStienstra/brim-bmd-2023-paper))
+- [Online documentation](https://mechmotum.github.io/symbrim/)
+- [SymBRiM paper publication](https://doi.org/10.59490/6504c5a765e8118fc7b106c3) ([source](https://github.com/TJStienstra/brim-bmd-2023-paper))
 - [BMD 2023 conference PowerPoint](https://docs.google.com/presentation/d/1ogz0Qs-t8bQT-2uk8gyYo40WmO387zIf/edit?usp=share_link&ouid=104124211006373398120&rtpof=true&sd=true)
 
 This package is still under development, therefore there is no guarantee on backward
 compatibility.
 
 ## Installation
-`BRiM` is currently not available on `PyPI`. Therefore, you'll need to install the
+`SymBRiM` is currently not available on `PyPI`. Therefore, you'll need to install the
 development version from GitHub using:
 ```bash
-pip install git+https://github.com/mechmotum/brim.git
+pip install git+https://github.com/mechmotum/symbrim.git
 ```
 The optional dependencies can be installed with:
 ```bash
@@ -26,7 +29,7 @@ pip install symmeplot
 Contributions are welcome! Please refer to the [contributing page] for more information.
 
 ## Citing
-If you use `BRiM` in your research, please cite the following paper:
+If you use `SymBRiM` in your research, please cite the following paper:
 ```bibtex
 @inproceedings{stienstra_2023_brim,
     title = {BRiM: A Modular Bicycle-Rider Modeling Framework},
@@ -40,4 +43,4 @@ If you use `BRiM` in your research, please cite the following paper:
 }
 ```
 
-[contributing page]: https://mechmotum.github.io/brim/contributing/index.html
+[contributing page]: https://mechmotum.github.io/symbrim/contributing/index.html
diff --git a/docs/api_reference.rst b/docs/api_reference.rst
index d278bda6..d44a3b10 100644
--- a/docs/api_reference.rst
+++ b/docs/api_reference.rst
@@ -8,9 +8,9 @@ API Reference
    :toctree: _autosummary
    :recursive:
 
-   brim.brim
-   brim.bicycle
-   brim.rider
-   brim.core
-   brim.other
-   brim.utilities
+   symbrim.brim
+   symbrim.bicycle
+   symbrim.rider
+   symbrim.core
+   symbrim.other
+   symbrim.utilities
diff --git a/docs/conf.py b/docs/conf.py
index 25ac24e6..85e8434d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -15,7 +15,7 @@
 # -- Project information -----------------------------------------------------
 # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
 
-project = "BRiM"
+project = "SymBRiM"
 copyright = "2023, Timo Stienstra"  # noqa: A001
 author = "Timo Stienstra"
 
diff --git a/docs/contributing/index.rst b/docs/contributing/index.rst
index 4e746a94..3ee6189e 100644
--- a/docs/contributing/index.rst
+++ b/docs/contributing/index.rst
@@ -4,13 +4,14 @@
 Contributing
 ============
 
-BRiM has been designed to be extended by the community. If you have a bug or a feature
-request, please open an issue on GitHub. If you would like to contribute, feel free to
-fork the repository and submit a pull request. To establish an effective development
-environment, we've taken inspiration from `Hypermodern Python`_ by Claudio Jolowicz and
-`Setting up Python Projects`_ by Johannes Schmidt. This page provides a brief overview
-of the various tools used in the development process. For the installation of the
-development environment, please refer to the :doc:`/guides/installation` page.
+SymBRiM has been designed to be extended by the community. If you have a bug or a
+feature request, please open an issue on GitHub. If you would like to contribute, feel
+free to fork the repository and submit a pull request. To establish an effective
+development environment, we've taken inspiration from `Hypermodern Python`_ by Claudio
+Jolowicz and `Setting up Python Projects`_ by Johannes Schmidt. This page provides a
+brief overview of the various tools used in the development process. For the
+installation of the development environment, please refer to the
+:doc:`/guides/installation` page.
 
 Linting
 =======
@@ -40,11 +41,11 @@ When generating a coverage report locally, we recommend using: ::
 
 Documentation
 =============
-The documentation is build using `sphinx`_. As BRiM is expected to expand quite a lot we
-have chosen to use `sphinx.ext.autodoc`_ in combination with `sphinx.ext.autosummary`_
-to generate the entire API reference including its structure from the source code.
-Therefore, it is important to document classes properly. To build the documentation you
-can use: ::
+The documentation is build using `sphinx`_. As SymBRiM is expected to expand quite a lot
+we have chosen to use `sphinx.ext.autodoc`_ in combination with
+`sphinx.ext.autosummary`_ to generate the entire API reference including its structure
+from the source code. Therefore, it is important to document classes properly. To build
+the documentation you can use: ::
 
     docs/make.bat html
 
diff --git a/docs/guides/component_implementation.rst b/docs/guides/component_implementation.rst
index cff55150..eca90dc5 100644
--- a/docs/guides/component_implementation.rst
+++ b/docs/guides/component_implementation.rst
@@ -5,12 +5,12 @@ Guidelines on Implementing Components
 =====================================
 
 This document describes the guidelines on implementing components. It assumes
-familiarity with the component structure used in BRiM :cite:`stienstra_2023_brim` and
-the usage of SymPy mechanics and BRiM, as explained in the first two tutorials
+familiarity with the component structure used in SymBRiM :cite:`stienstra_2023_brim` and
+the usage of SymPy mechanics and SymBRiM, as explained in the first two tutorials
 :ref:`tutorials`.
 
-BRiM Components
----------------
+SymBRiM Components
+------------------
 
 .. raw:: html
 
@@ -18,24 +18,24 @@ BRiM Components
         <use xlink:href="../_static/core_uml.svg#coreUML"></use>
     </svg>
 
-The above figure shows the UML diagram of the core components of BRiM. The three core
-components all inherit from :class:`brim.core.base_classes.BrimBase`, as they share a
+The above figure shows the UML diagram of the core components of SymBRiM. The three core
+components all inherit from :class:`symbrim.core.base_classes.BrimBase`, as they share a
 similar define structure. The three core components are:
 
-- :class:`Models<brim.core.base_classes.ModelBase>` - a system with its own respective
-  system boundaries, which can be made up of other models.
-- :class:`Connections<brim.core.base_classes.ConnectionBase>` - a utility of models in
-  describing the interaction between submodels.
-- :class:`Load groups<brim.core.base_classes.LoadGroupBase>` - a collection of forces
+- :class:`Models<symbrim.core.base_classes.ModelBase>` - a system with its own
+  respective system boundaries, which can be made up of other models.
+- :class:`Connections<symbrim.core.base_classes.ConnectionBase>` - a utility of models
+  in describing the interaction between submodels.
+- :class:`Load groups<symbrim.core.base_classes.LoadGroupBase>` - a collection of forces
   and torques associated with a model or connection.
 
 A large part of what is being shared between these components are the definition steps.
 The definition steps are decoupled steps that are used to define the component. The
 definition steps are:
 
-0. **Define connections** (only in :class:`models<brim.core.base_classes.ModelBase>`):
-   Associate the submodels with the connections, such that the connections know the
-   submodels they will operate on.
+0. **Define connections** (only in
+   :class:`models<symbrim.core.base_classes.ModelBase>`): Associate the submodels with
+   the connections, such that the connections know the submodels they will operate on.
 1. **Define objects**: Create the objects, such as symbols reference frames, without
    defining any relationships between them.
 2. **Define kinematics**: Establish relationships between the objects'
@@ -55,27 +55,27 @@ The image below shows a schematic visualization of these steps for a rolling dis
 Usage of Base Classes
 ---------------------
 
-BRiM uses base classes for components to specify a common structure of a component.
-:class:`brim.bicycle.grounds.GroundBase` is an example of a base class. The advantage of
-using base classes is that it allows for a common interface between components, which
+SymBRiM uses base classes for components to specify a common structure of a component.
+:class:`symbrim.bicycle.grounds.GroundBase` is an example of a base class. The advantage
+of using base classes is that it allows for a common interface between components, which
 makes it possible to swap out components without having to change the code. For example,
 one can swap out the ground model for a different ground model without having to change
 the code of the bicycle model.
 
-In case of :class:`brim.bicycle.grounds.GroundBase` some of the commonly shared
+In case of :class:`symbrim.bicycle.grounds.GroundBase` some of the commonly shared
 properties are defined in the base class, such as a rigid body to represent the ground.
 Apart from those it also prescribes several properties using :class:`abc.ABCMeta` and
 :class:`abc.abstractmethod`. An example is the
-:meth:`brim.bicycle.grounds.GroundBase.get_normal` method. These kind of abstract
+:meth:`symbrim.bicycle.grounds.GroundBase.get_normal` method. These kind of abstract
 methods have to be implemented by subclasses, such as
-:class:`brim.bicycle.grounds.FlatGround`.
+:class:`symbrim.bicycle.grounds.FlatGround`.
 
 Setting Submodels and Connections
 ---------------------------------
 
 To specify the submodels a model or connection requires, one should specify the class
 property ``required_models``. This property should be a tuple of
-:class:`brim.core.requirement.ModelRequirement`. Based on these requirements, the
+:class:`symbrim.core.requirement.ModelRequirement`. Based on these requirements, the
 metaclass automatically creates properties for each of the required submodels on
 runtime. The following simple class shows how to specify the required submodels. ::
 
@@ -108,7 +108,8 @@ The property created for ``"ground"`` will be like the following: ::
         self._ground = model
 
 Connections should be specified similarly with the class property
-``required_connections``, using :class:`brim.core.requirement.ConnectionRequirement`. ::
+``required_connections``, using
+:class:`symbrim.core.requirement.ConnectionRequirement`. ::
 
     class MyModel(ModelBase):
         """My model."""
@@ -151,7 +152,7 @@ To implement the "define" steps in a model, connection, or load group, a leading
 underscore is added to the method name. For example, ``_define_<step>``. These methods
 solely implement the "define" step for the component itself without traversing the
 submodels and load groups. The base classes, like
-:class:`brim.core.base_classes.BrimBase`, contain the implementation of the "define"
+:class:`symbrim.core.base_classes.BrimBase`, contain the implementation of the "define"
 methods, including traversal, which should be called by the user. These methods follow
 the format ``define_<step>``.
 
@@ -182,10 +183,11 @@ Define Objects
 - Generalized speeds must be set/added to the mutable ``self.u`` matrix.
 - Auxiliary speeds must be set/added to the mutable ``self.uaux`` matrix.
 - The name of each symbol, generalized coordinate, and generalized speed must be created
-  using :meth:`brim.core.base_classes.BrimBase._add_prefix`. This method puts the name
-  of the component in front of the symbol name, such that the symbol name is unique.
+  using :meth:`symbrim.core.base_classes.BrimBase._add_prefix`. This method puts the
+  name of the component in front of the symbol name, such that the symbol name is
+  unique.
 - Each symbol, generalized coordinate, and generalized speed must have a description in
-  the :meth:`brim.core.base_classes.BrimBase.descriptions` property.
+  the :meth:`symbrim.core.base_classes.BrimBase.descriptions` property.
 - The define objects step for each connection should be called manually because there
   could be dependencies between the define step of a connection and its parent model,
   it is utility after all.
@@ -286,13 +288,13 @@ Define Constraints
 - For holonomic constraints a loop is being closed most of the time using a dot product.
   Just make sure to have some method to prevent the creation of constraint which are
   already satisfied. Optionally, you can use
-  :class:`brim.utilities.utilities.check_zero`.
+  :class:`symbrim.utilities.utilities.check_zero`.
 - For nonholonomic constraints the major difficulty is in the fact that one cannot
   assume anything about the already defined velocities. Especially points are
   susceptible to have multiple possible velocity definitions. Therefore, it is advised
   to compute the velocity based on the position graph of the points and the orientation
   and angular velocity graph of the reference frames. A good example of this is in the
-  :class:`brim.bicycle.tires.NonHolonomicTire` class.
+  :class:`symbrim.bicycle.tires.NonHolonomicTire` class.
 - To support usage of the object in a system with noncontributing forces it is also
   necessary to account for the auxiliary speeds. This can be done by specifically
   requesting the auxiliary velocity of a point and adding that to the constraint. Do
@@ -316,23 +318,23 @@ Define Constraints
 Auxiliary Data Handler
 ----------------------
 
-The :class:`brim.core.auxiliary.AuxiliaryDataHandler` is a utility class that is used to
-compute noncontributing forces and optimize the computation of the velocity of points.
-An instance of the auxiliary data handler is automatically created at the end of the
-``define_objects`` step. This instance is shared by the root model, i.e. the uppermost
-parent model, with all submodels, connections, and load groups. This makes the auxiliary
-data handler accessible from all components through the ``self.auxiliary_handler``
-attribute.
+The :class:`symbrim.core.auxiliary.AuxiliaryDataHandler` is a utility class that is used
+to compute noncontributing forces and optimize the computation of the velocity of
+points. An instance of the auxiliary data handler is automatically created at the end of
+the ``define_objects`` step. This instance is shared by the root model, i.e. the
+uppermost parent model, with all submodels, connections, and load groups. This makes the
+auxiliary data handler accessible from all components through the
+``self.auxiliary_handler`` attribute.
 
 In the ``define_kinematics`` step modelers can register noncontributing forces that
 should be computed using the
-:meth:`brim.core.auxiliary.AuxiliaryDataHandler.add_noncontributing_force` method. This
-method requires the point, the axis of the force, the auxiliary speed, and the force
-symbol as arguments. From this information the auxiliary data handler can do the rest.
-When defining the other kinematics it is best practise to define the velocity of a point
-based on the point w.r.t. which it has been positioned. This is because the auxiliary
-data handler propagates the auxiliary velocities of points to other points based on how
-points are defined w.r.t. to each other.
+:meth:`symbrim.core.auxiliary.AuxiliaryDataHandler.add_noncontributing_force` method.
+This method requires the point, the axis of the force, the auxiliary speed, and the
+force symbol as arguments. From this information the auxiliary data handler can do the
+rest. When defining the other kinematics it is best practise to define the velocity of a
+point based on the point w.r.t. which it has been positioned. This is because the
+auxiliary data handler propagates the auxiliary velocities of points to other points
+based on how points are defined w.r.t. to each other.
 
 At the end of the ``define_kinematics`` step the auxiliary data handler automatically
 computes the velocity of each point in the inertial frame, while adding the auxiliary
@@ -345,5 +347,5 @@ When computing the constraints in the ``define_constraints`` step it is importan
 take the auxiliary speeds into account, even if you didn't define any in you component.
 In many cases it is possible that other components may have defined auxiliary speeds
 that do affect your constraints. To get the auxiliary velocity of a point of intereset
-you can use the :meth:`brim.core.auxiliary.AuxiliaryDataHandler.get_auxiliary_velocity`
-method.
+you can use the
+:meth:`symbrim.core.auxiliary.AuxiliaryDataHandler.get_auxiliary_velocity` method.
diff --git a/docs/guides/installation.rst b/docs/guides/installation.rst
index fb0f7164..41a2d742 100644
--- a/docs/guides/installation.rst
+++ b/docs/guides/installation.rst
@@ -7,10 +7,10 @@ Installation
 Installation Users
 ==================
 
-BRiM is currently not available on PyPI. Therefore, you'll need to install the
+SymBRiM is currently not available on PyPI. Therefore, you'll need to install the
 development version from GitHub using: ::
 
-    pip install git+https://github.com/mechmotum/brim.git
+    pip install git+https://github.com/mechmotum/symbrim.git
 
 The optional dependencies can be installed with: ::
 
@@ -20,12 +20,12 @@ The optional dependencies can be installed with: ::
 Installation Developers
 =======================
 
-BRiM uses `poetry`_ as package manager. To install BRiM after installing `poetry`_ and
-cloning the repository, run: ::
+SymBRiM uses `poetry`_ as package manager. To install SymBRiM after installing `poetry`_
+and cloning the repository, run: ::
 
     poetry install
 
-BRiM offers dependency groups to assist developers:
+SymBRiM offers dependency groups to assist developers:
 
 - ``lint``: packages required for linting.
 - ``test``: packages required for testing.
diff --git a/docs/guides/introduction.rst b/docs/guides/introduction.rst
index a7503a32..05735f12 100644
--- a/docs/guides/introduction.rst
+++ b/docs/guides/introduction.rst
@@ -1,25 +1,25 @@
 .. _introduction_to_brim:
 
-====================
-Introduction to BRiM
-====================
+=======================
+Introduction to SymBRiM
+=======================
 ..
-    Paragraph: Quick introduction on what BRiM is and does.
+    Paragraph: Quick introduction on what SymBRiM is and does.
 
-BRiM :cite:`stienstra_2023_brim` is a Python package to model bicycle-riders
+SymBRiM :cite:`stienstra_2023_brim` is a Python package to model bicycle-riders
 symbolically. It offers a modular and extendable framework that empowers users to easily
 compose a custom bicycle-rider model. These models are build from a library of
 components, such as knife-edge wheels or toroidal-shaped wheels. The components serve as
 the building blocks of the system. Leveraging the open-source Python package
-:mod:`sympy` :cite:`Meurer2017`, a computer algebra system, BRiM allows the usage of
+:mod:`sympy` :cite:`Meurer2017`, a computer algebra system, SymBRiM allows the usage of
 :mod:`sympy`'s bodies and joints interface to modify the model and other tools to
 manipulate the equations. The equations of motion (EOMs) for the system are derived
 using Kane's method :cite:`kane_dynamics_1985`, which can be further analysed and used
 in simulation and optimization tasks.
 
-For a more in-depth academic introduction to BRiM and its application in trajectory
+For a more in-depth academic introduction to SymBRiM and its application in trajectory
 tracking problems, refer to :cite:`stienstra_2023_brim`. The rest of this page will
-focus on the practical usage of BRiM.
+focus on the practical usage of SymBRiM.
 
 Defining a Model Using SymPy
 ----------------------------
@@ -32,7 +32,7 @@ an interface for defining systems and deriving their EOMs. It has an interface t
 reference frames, points, bodies and joints to describe a system. For a comprehensive
 guide on the low-level interface to describe dynamical systems, refer to
 :cite:`moore_learn_2022`. An example of defining a simple system, which follows a
-similar workflow as BRiM, can be found in the docstring of
+similar workflow as SymBRiM, can be found in the docstring of
 :class:`sympy.physics.mechanics.system.System`.
 
 Composing a Model
@@ -40,7 +40,7 @@ Composing a Model
 ..
     Paragraph: Show image and explain the tree structure.
 
-BRiM divides the bicycle-rider system into smaller subsystems called submodels. Each
+SymBRiM divides the bicycle-rider system into smaller subsystems called submodels. Each
 submodel is modeled separately and aggregated to create the complete bicycle-rider. This
 results in a tree structure, where the root is the entire bicycle-rider system, and the
 bicycle and rider are its children. The bicycle model can be further divided as
@@ -60,17 +60,17 @@ Core Components
 ..
     Paragraph: List of core components and their purpose.
 
-BRiM makes use of three core components: models, connections and loads groups. The
+SymBRiM makes use of three core components: models, connections and loads groups. The
 models are the main components, where each model describes a (sub)system following a
 tree structure. The connections can be seen as an utility of parent models to describe a
 modular and reusable interaction between submodels. The load groups are predefined sets
 of actuators and loads, which are commonly associated with a specific model or
 connection.
 
-Defining a Model Using BRiM
----------------------------
+Defining a Model Using SymBRiM
+------------------------------
 ..
-    Paragraph: Create the default Whipple bicycle model using BRiM.
+    Paragraph: Create the default Whipple bicycle model using SymBRiM.
 
 The default Whipple bicycle model :cite:`whipple1899stability`, also visualized as a
 tree in the image above, can be constructed as follows. The first step is to configure
@@ -79,7 +79,7 @@ the model by choosing the components. ::
     from sympy import symbols
     from sympy.physics.mechanics._actuator import TorqueActuator
     from sympy.physics.mechanics import dynamicsymbols
-    from brim import *
+    from symbrim import *
 
     bicycle = WhippleBicycle("bicycle")
     bicycle.rear_frame = RigidRearFrame("rear_frame")
@@ -89,7 +89,7 @@ the model by choosing the components. ::
     bicycle.rear_tire = NonHolonomicTire("rear_tire")
     bicycle.front_tire = NonHolonomicTire("front_tire")
 
-With the model configured, the next step is to let BRiM construct all the relationships
+With the model configured, the next step is to let SymBRiM construct all the relationships
 in the model by calling :meth:`~.ModelBase.define_all`. After this, the model can be
 exported to a single :class:`sympy.physics.mechanics.system.System` object. ::
 
@@ -132,7 +132,8 @@ See Also
 
 Here are some useful reference to get started:
 
-- The :ref:`tutorials` page contains a collection of tutorials to get started with BRiM.
+- The :ref:`tutorials` page contains a collection of tutorials to get started with
+  SymBRiM.
 - The `brim-bmd-2023-paper <https://github.com/TJStienstra/brim-bmd-2023-paper>`_
   repository contains a ``src`` directory with various trajectory tracking examples
   discussed in :cite:`stienstra_2023_brim`.
diff --git a/docs/index.rst b/docs/index.rst
index 22e514d9..fe0bd929 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,8 +1,8 @@
-==================
-BRiM Documentation
-==================
-BRiM: a Modular and Extensible Open-Source Framework for Creating Bicycle-Rider
-Models.
+=====================
+SymBRiM Documentation
+=====================
+SymBRiM: a Modular and Extensible Open-Source Framework for Creating Symbolic
+Bicycle-Rider Models.
 
 .. image:: ./_static/lane_change.gif
    :align: center
diff --git a/docs/process_tutorials.py b/docs/process_tutorials.py
index 7b106da9..3aa81e8a 100644
--- a/docs/process_tutorials.py
+++ b/docs/process_tutorials.py
@@ -61,8 +61,9 @@ def _replace_solution_regions(self, cell: nbformat.NotebookNode) -> None:
             raise ValueError("Solution region not closed")
         cell.source = "\n".join(new_lines)
 
-    def preprocess_cell(self, cell: nbformat.NotebookNode, resources: ResourcesDict,
-                        index: int) -> tuple[nbformat.NotebookNode, ResourcesDict]:  # noqa: ARG002
+    def preprocess_cell(
+        self, cell: nbformat.NotebookNode, resources: ResourcesDict, index: int  # noqa: ARG002
+    ) -> tuple[nbformat.NotebookNode, ResourcesDict]:
         """Preprocess a cell."""
         self._replace_solution_regions(cell)
         return cell, resources
@@ -77,8 +78,9 @@ def preprocess(self, nb: nbformat.NotebookNode, resources: ResourcesDict
         resources["required_files"] = {}
         return super().preprocess(nb, resources)
 
-    def preprocess_cell(self, cell: nbformat.NotebookNode, resources: ResourcesDict,
-                        index: int) -> tuple[nbformat.NotebookNode, ResourcesDict]:  # noqa: ARG002
+    def preprocess_cell(
+        self, cell: nbformat.NotebookNode, resources: ResourcesDict, index: int  # noqa: ARG002
+    ) -> tuple[nbformat.NotebookNode, ResourcesDict]:
         """Preprocess a cell."""
 
         def replace(match: re.Match) -> str:
@@ -229,9 +231,9 @@ def get_command_environment() -> str:
 
 
 def install_local_brim_version(command: str) -> None:
-    """Install a local version of BRiM."""
+    """Install a local version of SymBRiM."""
     env = get_tutorials_environment_name()
-    subprocess.run([command, "uninstall", "-n", env, "brim", "-y"], check=False)
+    subprocess.run([command, "uninstall", "-n", env, "symbrim", "-y"], check=False)
     subprocess.run(
         [command, "run", "-n", env, "pip", "install", "-e", MAIN_DIR], check=True
     )
diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md
index b3d5df33..11336b00 100644
--- a/docs/tutorials/README.md
+++ b/docs/tutorials/README.md
@@ -1,20 +1,20 @@
 Tutorials
 =========
 
-BRiM has several available tutorials. Each tutorial is a Jupyter notebook, which can be
-downloaded as exercise locally and run on your own computer. The web version of the
+SymBRiM has several available tutorials. Each tutorial is a Jupyter notebook, which can
+be downloaded as exercise locally and run on your own computer. The web version of the
 tutorials each show the full solution, so you can also just read through them.
 
 The tutorials are ordered with increasing depth and complexity. The tutorials are:
 
 - `four_bar_linkage.ipynb`: Hands-on introduction to SymPy by modeling and simulating a
   four-bar linkage.
-- `my_first_bicycle.ipynb`: Hands-on introduction to BRiM by modeling and simulating a
-  bicycle and bicycle-rider model using the implemented components in BRiM.
+- `my_first_bicycle.ipynb`: Hands-on introduction to SymBRiM by modeling and simulating
+  a bicycle and bicycle-rider model using the implemented components in SymBRiM.
 
 Installation
 ------------
-To run the tutorials locally, you need to install BRiM and various dependencies. The
+To run the tutorials locally, you need to install SymBRiM and various dependencies. The
 easiest way to do this is to use the provided `tutorials_environment.yml>`. The
 environment can be created using conda or mamba:
 
diff --git a/docs/tutorials/four_bar_linkage.ipynb b/docs/tutorials/four_bar_linkage.ipynb
index 992287c1..4434f8c5 100644
--- a/docs/tutorials/four_bar_linkage.ipynb
+++ b/docs/tutorials/four_bar_linkage.ipynb
@@ -8,12 +8,12 @@
     "\n",
     "Welcome to this tutorial on using SymPy to derive the equations of motion (EoMs) of a four-bar linkage!\n",
     "\n",
-    "This notebook provides a hands-on introduction to using SymPy in a workflow, which is similar to the internals of BRiM. which also follows [the four-bar linkage example in SymPy](https://docs.sympy.org/dev/modules/physics/mechanics/examples/four_bar_linkage_example.html). In doing so it aims to satisfy the following learning objectives:\n",
+    "This notebook provides a hands-on introduction to using SymPy in a workflow, which is similar to the internals of SymBRiM. which also follows [the four-bar linkage example in SymPy](https://docs.sympy.org/dev/modules/physics/mechanics/examples/four_bar_linkage_example.html). In doing so it aims to satisfy the following learning objectives:\n",
     "\n",
     "- Learn some of the basic syntax of SymPy for creating symbols and expressions.\n",
     "- Learn how to create bodies and joints in `sympy.physics.mechanics`.\n",
     "- Learn how to define a system in a systematic approach such that the EoMs can automatically be formed using Kane's method.\n",
-    "- Learn about the underlying workflow utilized in BRiM.\n",
+    "- Learn about the underlying workflow utilized in SymBRiM.\n",
     "- Learn to perform a simple simulation using `solve_ivp` from SciPy and visualize the results using SymMePlot.\n",
     "\n",
     "[Learn Multibody Dynamics by Moore](https://moorepants.github.io/learn-multibody-dynamics/index.html) is a great resource for learning about multibody dynamics while using the more lower-level API of the mechanics module. It should be noted that this book is part of a university course, so it does not use a lot of the high-level API of `sympy.physics.mechanics`. The following chapters are recommendable for learning more about the basics:\n",
@@ -29,7 +29,7 @@
     "- Other chapters cover things like how vector differentiation is defined and how to derive the EoMs using your own manually written Kane's method and Lagrange's method.\n",
     "\n",
     "## Overview of the Workflow\n",
-    "When forming the EoMs of a system in SymPy, one typically first describes the model after which an algorithmic implementation of Kane's method or Lagrange's method is used to derive the EoMs. In this tutorial, we will use Kane's method. BRiM breaks the model description into four parts:\n",
+    "When forming the EoMs of a system in SymPy, one typically first describes the model after which an algorithmic implementation of Kane's method or Lagrange's method is used to derive the EoMs. In this tutorial, we will use Kane's method. SymBrim breaks the model description into four parts:\n",
     "\n",
     "1. **Define objects**: Create the objects, such as symbols reference frames, without defining any relationships between them.\n",
     "2. **Define kinematics**: Establish relationships between the objects' orientations/positions, velocities, and accelerations.\n",
@@ -727,7 +727,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.8"
+   "version": "3.11.10"
   }
  },
  "nbformat": 4,
diff --git a/docs/tutorials/index.rst b/docs/tutorials/index.rst
index 0d60310c..8c5a5181 100644
--- a/docs/tutorials/index.rst
+++ b/docs/tutorials/index.rst
@@ -4,8 +4,8 @@
 Tutorials
 =========
 
-BRiM has several available tutorials. Each tutorial is a Jupyter notebook, which can be
-downloaded as exercise locally and run on your own computer. The web version of the
+SymBRiM has several available tutorials. Each tutorial is a Jupyter notebook, which can
+be downloaded as exercise locally and run on your own computer. The web version of the
 tutorials each show the full solution, so you can also just read through them.
 
 The tutorials are ordered with increasing depth and complexity.
@@ -20,7 +20,7 @@ The tutorials are ordered with increasing depth and complexity.
 
 Installation
 ------------
-To run the tutorials locally, you need to install BRiM and various dependencies. The
+To run the tutorials locally, you need to install SymBRiM and various dependencies. The
 easiest way to do this is to use the provided
 :download:`yml file <./tutorials_environment.yml>`. The environment can be created using
 conda or mamba:
@@ -28,7 +28,7 @@ conda or mamba:
 .. code-block:: bash
 
     conda env create -f tutorials_environment.yml
-    conda activate brim-tutorials
+    conda activate symbrim-tutorials
 
 
 .. _general SymPy tutorials: https://docs.sympy.org/dev/tutorial/index.html
diff --git a/docs/tutorials/my_first_bicycle.ipynb b/docs/tutorials/my_first_bicycle.ipynb
index 8fb25db2..74ec775a 100644
--- a/docs/tutorials/my_first_bicycle.ipynb
+++ b/docs/tutorials/my_first_bicycle.ipynb
@@ -4,24 +4,24 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Building Bicycle-Rider Models with BRiM\n",
+    "# Building Bicycle-Rider Models with SymBRiM\n",
     "\n",
-    "Welcome to this tutorial on creating **B**icycle-**Ri**der **M**odels using BRiM!\n",
+    "Welcome to this tutorial on creating **Sym**bolic **B**icycle-**Ri**der **M**odels using SymBRiM!\n",
     "\n",
-    "In this notebook, we'll embark on a hands-on journey into BRiM, focusing on the practical aspects from a model user's perspective. By the end of this tutorial, you'll have achieved the following learning goals:\n",
+    "In this notebook, we'll embark on a hands-on journey into SymBRiM, focusing on the practical aspects from a model user's perspective. By the end of this tutorial, you'll have achieved the following learning goals:\n",
     "\n",
-    "- Create a Carvallo-Whipple bicycle model using BRiM.\n",
+    "- Create a Carvallo-Whipple bicycle model using SymBRiM.\n",
     "- Create a custom bicycle model to suit specific needs.\n",
     "- Extend a bicycle model to include a rider.\n",
     "- Parameterize a model using the [BicycleParameters](https://github.com/moorepants/BicycleParameters) library.\n",
     "- Simulate models using a simple `Simulator` utility.\n",
     "- Visualize a model's behavior with ease using the integrated plotting utility powered by [SymMePlot](https://github.com/TJStienstra/symmeplot).\n",
     "\n",
-    "Before diving into this tutorial, it's recommended that you familiarize yourself with [the introduction](https://mechmotum.github.io/brim/guides/introduction.html) and read through the sections on _Software Overview_ to _BRiM Models_ in [the BRiM paper](https://doi.org/10.59490/6504c5a765e8118fc7b106c3). This background information will provide valuable context for what we'll cover here.\n",
+    "Before diving into this tutorial, it's recommended that you familiarize yourself with [the introduction](https://mechmotum.github.io/symbrim/guides/introduction.html) and read through the sections on _Software Overview_ to _BRiM Models_ in [the SymBRiM paper](https://doi.org/10.59490/6504c5a765e8118fc7b106c3). This background information will provide valuable context for what we'll cover here.\n",
     "\n",
     "## Tutorial Overview\n",
     "\n",
-    "This tutorial is structured as follows: We'll begin by working with the default Carvallo-Whipple bicycle model, adhering to [Moore's convention](https://moorepants.github.io/dissertation/eom.html). Our journey will encompass configuring the model in BRiM, exporting it, and deriving the equations of motion (EoMs). Subsequently, we'll venture into configuring a new bicycle model, this time incorporating fork suspension. This model will be further extended to include an upper-body rider. Next, we'll parametrize these models, enabling us to conduct multiple simulations. Finally, we'll visualize our results as captivating animations.\n",
+    "This tutorial is structured as follows: We'll begin by working with the default Carvallo-Whipple bicycle model, adhering to [Moore's convention](https://moorepants.github.io/dissertation/eom.html). Our journey will encompass configuring the model in SymBRiM, exporting it, and deriving the equations of motion (EoMs). Subsequently, we'll venture into configuring a new bicycle model, this time incorporating fork suspension. This model will be further extended to include an upper-body rider. Next, we'll parametrize these models, enabling us to conduct multiple simulations. Finally, we'll visualize our results as captivating animations.\n",
     "\n",
     "## The Default Bicycle Model\n",
     "\n",
@@ -33,7 +33,7 @@
     "\n",
     "<center><img width=800px src=\"../_static/configuration_overview_whipple_default.svg\" alt=\"Configuration overview Carvallo-Whipple bicycle SVG\"/></center>\n",
     "\n",
-    "When configuring a bicycle in BRiM, each component must be assigned a unique name. Symbol names are derived from component names, so using distinct names is essential. For example, if you would provide `\"wheel\"` as the name for both the front wheel and the rear wheel then the symbol for the radius will also be the same symbol. Additionally, BRiM applies conventions for certain components. For instance, rear and front frames follow Moore's convention by default.\n",
+    "When configuring a bicycle in SymBRiM, each component must be assigned a unique name. Symbol names are derived from component names, so using distinct names is essential. For example, if you would provide `\"wheel\"` as the name for both the front wheel and the rear wheel then the symbol for the radius will also be the same symbol. Additionally, SymBRiM applies conventions for certain components. For instance, rear and front frames follow Moore's convention by default.\n",
     "\n",
     "_Note: You can explicitly specify convention usage by employing `RigidRearFrame.from_convention(\"moore\", \"rear_frame\")`._\n",
     "\n",
@@ -51,10 +51,10 @@
     "import sympy as sm\n",
     "import sympy.physics.mechanics as me\n",
     "\n",
-    "import brim as bm\n",
-    "from brim.bicycle import RigidRearFrameMoore, WhippleBicycleMoore\n",
-    "from brim.brim import SideLeanSeatSpringDamper\n",
-    "from brim.rider import PinElbowTorque, SphericalShoulderTorque"
+    "import symbrim as sb\n",
+    "from symbrim.bicycle import RigidRearFrameMoore, WhippleBicycleMoore\n",
+    "from symbrim.brim import SideLeanSeatSpringDamper\n",
+    "from symbrim.rider import PinElbowTorque, SphericalShoulderTorque"
    ]
   },
   {
@@ -63,17 +63,17 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "bicycle_def = bm.WhippleBicycle(\"my_bike\")\n",
+    "bicycle_def = sb.WhippleBicycle(\"my_bike\")\n",
     "assert type(bicycle_def) is WhippleBicycleMoore\n",
-    "bicycle_def.rear_frame = bm.RigidRearFrame.from_convention(\"moore\", \"rear_frame\")\n",
+    "bicycle_def.rear_frame = sb.RigidRearFrame.from_convention(\"moore\", \"rear_frame\")\n",
     "assert type(bicycle_def.rear_frame) is RigidRearFrameMoore\n",
-    "bicycle_def.rear_wheel = bm.KnifeEdgeWheel(\"rear_wheel\")\n",
-    "bicycle_def.rear_tire = bm.NonHolonomicTire(\"rear_tire\")\n",
+    "bicycle_def.rear_wheel = sb.KnifeEdgeWheel(\"rear_wheel\")\n",
+    "bicycle_def.rear_tire = sb.NonHolonomicTire(\"rear_tire\")\n",
     "### BEGIN SOLUTION\n",
-    "bicycle_def.ground = bm.FlatGround(\"ground\")\n",
-    "bicycle_def.front_frame = bm.RigidFrontFrame(\"front_frame\")\n",
-    "bicycle_def.front_wheel = bm.KnifeEdgeWheel(\"front_wheel\")\n",
-    "bicycle_def.front_tire = bm.NonHolonomicTire(\"front_tire\")\n",
+    "bicycle_def.ground = sb.FlatGround(\"ground\")\n",
+    "bicycle_def.front_frame = sb.RigidFrontFrame(\"front_frame\")\n",
+    "bicycle_def.front_wheel = sb.KnifeEdgeWheel(\"front_wheel\")\n",
+    "bicycle_def.front_tire = sb.NonHolonomicTire(\"front_tire\")\n",
     "### END SOLUTION\n",
     "assert len(bicycle_def.submodels) == 5\n",
     "assert len(bicycle_def.connections) == 2"
@@ -83,7 +83,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "With the model configured we can now let BRiM define the entire model using [define_all](https://mechmotum.github.io/brim/_autosummary/brim.core.base_classes.ModelBase.html#brim.core.base_classes.ModelBase.define_all). This method actually calls five other methods in order, of which the last four were also discussed in the four-bar linkage tutorial:\n",
+    "With the model configured we can now let SymBRiM define the entire model using [define_all](https://mechmotum.github.io/symbrim/_autosummary/symbrim.core.base_classes.ModelBase.html#symbrim.core.base_classes.ModelBase.define_all). This method actually calls five other methods in order, of which the last four were also discussed in the four-bar linkage tutorial:\n",
     "\n",
     "1. `define_connections`: All models associate the connections with their required submodels.\n",
     "2. `define_objects`: Create the objects, such as symbols reference frames, without defining any relationships between them.\n",
@@ -207,10 +207,10 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Congratulations you've just created your first bicycle model using BRiM!\n",
+    "Congratulations you've just created your first bicycle model using SymBRiM!\n",
     "\n",
     "## Modifying a Bicycle\n",
-    "Now that you've got a handle on creating a basic bicycle model, let's start modifying it to include some fork suspension. The best method is to create a new `WhippleBicycle` object to prevent possible clashes. The model we will use is [SuspensionRigidFrontFrame](https://mechmotum.github.io/brim/_autosummary/brim.bicycle.front_frames.SuspensionRigidFrontFrame.html).\n",
+    "Now that you've got a handle on creating a basic bicycle model, let's start modifying it to include some fork suspension. The best method is to create a new `WhippleBicycle` object to prevent possible clashes. The model we will use is [SuspensionRigidFrontFrame](https://mechmotum.github.io/symbrim/_autosummary/symbrim.bicycle.front_frames.SuspensionRigidFrontFrame.html).\n",
     "\n",
     "**Exercise**: Complete the configuration of the bicycle model with fork suspension below."
    ]
@@ -221,19 +221,19 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "bicycle = bm.WhippleBicycle(\"bicycle\")\n",
+    "bicycle = sb.WhippleBicycle(\"bicycle\")\n",
     "### BEGIN SOLUTION\n",
-    "bicycle.ground = bm.FlatGround(\"ground\")\n",
-    "bicycle.rear_wheel = bm.KnifeEdgeWheel(\"rear_wheel\")\n",
-    "bicycle.rear_frame = bm.RigidRearFrame(\"rear_frame\")\n",
-    "bicycle.front_frame = bm.SuspensionRigidFrontFrame(\"front_frame\")\n",
-    "bicycle.front_wheel = bm.KnifeEdgeWheel(\"front_wheel\")\n",
-    "bicycle.rear_tire = bm.NonHolonomicTire(\"rear_tire\")\n",
-    "bicycle.front_tire = bm.NonHolonomicTire(\"front_tire\")\n",
+    "bicycle.ground = sb.FlatGround(\"ground\")\n",
+    "bicycle.rear_wheel = sb.KnifeEdgeWheel(\"rear_wheel\")\n",
+    "bicycle.rear_frame = sb.RigidRearFrame(\"rear_frame\")\n",
+    "bicycle.front_frame = sb.SuspensionRigidFrontFrame(\"front_frame\")\n",
+    "bicycle.front_wheel = sb.KnifeEdgeWheel(\"front_wheel\")\n",
+    "bicycle.rear_tire = sb.NonHolonomicTire(\"rear_tire\")\n",
+    "bicycle.front_tire = sb.NonHolonomicTire(\"front_tire\")\n",
     "### END SOLUTION\n",
     "assert len(bicycle.submodels) == 5\n",
     "assert len(bicycle.connections) == 2\n",
-    "assert isinstance(bicycle.front_frame, bm.SuspensionRigidFrontFrame)"
+    "assert isinstance(bicycle.front_frame, sb.SuspensionRigidFrontFrame)"
    ]
   },
   {
@@ -256,14 +256,14 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "rider = bm.Rider(\"rider\")\n",
-    "rider.pelvis = bm.PlanarPelvis(\"pelvis\")\n",
-    "rider.torso = bm.PlanarTorso(\"torso\")\n",
-    "rider.left_arm = bm.PinElbowStickLeftArm(\"left_arm\")\n",
-    "rider.right_arm = bm.PinElbowStickRightArm(\"right_arm\")\n",
-    "rider.sacrum = bm.FixedSacrum(\"sacrum\")\n",
-    "rider.left_shoulder = bm.FlexRotLeftShoulder(\"left_shoulder\")\n",
-    "rider.right_shoulder = bm.FlexRotRightShoulder(\"right_shoulder\")"
+    "rider = sb.Rider(\"rider\")\n",
+    "rider.pelvis = sb.PlanarPelvis(\"pelvis\")\n",
+    "rider.torso = sb.PlanarTorso(\"torso\")\n",
+    "rider.left_arm = sb.PinElbowStickLeftArm(\"left_arm\")\n",
+    "rider.right_arm = sb.PinElbowStickRightArm(\"right_arm\")\n",
+    "rider.sacrum = sb.FixedSacrum(\"sacrum\")\n",
+    "rider.left_shoulder = sb.FlexRotLeftShoulder(\"left_shoulder\")\n",
+    "rider.right_shoulder = sb.FlexRotRightShoulder(\"right_shoulder\")"
    ]
   },
   {
@@ -283,12 +283,12 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "bicycle_rider = bm.BicycleRider(\"bicycle_rider\")\n",
+    "bicycle_rider = sb.BicycleRider(\"bicycle_rider\")\n",
     "### BEGIN SOLUTION\n",
     "bicycle_rider.bicycle = bicycle\n",
     "bicycle_rider.rider = rider\n",
-    "bicycle_rider.seat = bm.FixedSeat(\"seat\")\n",
-    "bicycle_rider.hand_grips = bm.HolonomicHandGrips(\"hand_grips\")\n",
+    "bicycle_rider.seat = sb.FixedSeat(\"seat\")\n",
+    "bicycle_rider.hand_grips = sb.HolonomicHandGrips(\"hand_grips\")\n",
     "### END SOLUTION\n",
     "assert len(bicycle_rider.submodels) == 2\n",
     "assert len(bicycle_rider.connections) == 2"
@@ -298,9 +298,9 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "To control the bicycle we can make the rider torque-driven by applying torques with the elbows. For this purpose BRiM has already dedicated load groups, e.g. [PinElbowTorque](https://mechmotum.github.io/brim/_autosummary/brim.rider.arms.PinElbowTorque.html).\n",
+    "To control the bicycle we can make the rider torque-driven by applying torques with the elbows. For this purpose SymBRiM has already dedicated load groups, e.g. [PinElbowTorque](https://mechmotum.github.io/symbrim/_autosummary/symbrim.rider.arms.PinElbowTorque.html).\n",
     "\n",
-    "**Exercise**: Instantiate a load group for each arm with a unique name and assign them to the variables `left_arm_lg` and `right_arm_lg`. Next, add each load group to the corresponding arm using [add_load_groups](https://mechmotum.github.io/brim/_autosummary/brim.rider.arms.ArmBase.html#brim.rider.arms.ArmBase.add_load_groups)."
+    "**Exercise**: Instantiate a load group for each arm with a unique name and assign them to the variables `left_arm_lg` and `right_arm_lg`. Next, add each load group to the corresponding arm using [add_load_groups](https://mechmotum.github.io/symbrim/_autosummary/symbrim.rider.arms.ArmBase.html#symbrim.rider.arms.ArmBase.add_load_groups)."
    ]
   },
   {
@@ -325,7 +325,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "With the model configured we can let BRiM define the model.\n",
+    "With the model configured we can let SymBRiM define the model.\n",
     "\n",
     "_Note: to simplify the EoMs we can set the yaw and roll angles of the rider with respect to the rear frame to zero._"
    ]
@@ -432,7 +432,7 @@
     "Congratulations! You have just built your (first) bicycle-rider model.\n",
     "\n",
     "## Parametrization\n",
-    "While it is possible to manually figure out all parameters and create a dictionary to map all symbols accordingly, BRiM integrates support for the [BicycleParameters](https://github.com/moorepants/BicycleParameters) package.\n",
+    "While it is possible to manually figure out all parameters and create a dictionary to map all symbols accordingly, SymBRiM integrates support for the [BicycleParameters](https://github.com/moorepants/BicycleParameters) package.\n",
     "The `BicycleParameters` package is designed to generate, manipulate, and visualize the parameters of the Whipple-Carvallo bicycle model. The [repository](https://github.com/moorepants/BicycleParameters/tree/master/data) provides several measured parametrizations.\n",
     "For instructions on measuring your own bicycle and/or rider refer to [Moore's dissertation](https://moorepants.github.io/dissertation/physicalparameters.html).\n",
     "\n",
@@ -575,7 +575,7 @@
    "source": [
     "## Simulation Bicycle Model\n",
     "\n",
-    "Now that we have a parametrized model we can simulate it. BRiM does not provide a simulation utility (yet), but a separate module has here been provided implementing a simple simulation utility. The code below imports this utility and initializes a simulation object for the bicycle model."
+    "Now that we have a parametrized model we can simulate it. SymBRiM does not provide a simulation utility (yet), but a separate module has here been provided implementing a simple simulation utility. The code below imports this utility and initializes a simulation object for the bicycle model."
    ]
   },
   {
@@ -696,7 +696,7 @@
    "source": [
     "## Visualizing the Bicycle Simulation Results\n",
     "\n",
-    "Using the [Plotter](https://mechmotum.github.io/brim/_autosummary/brim.utilities.plotting.Plotter.html) from `BRiM` we can easily visualize the model and create an animation based on the simulation results."
+    "Using the [Plotter](https://mechmotum.github.io/symbrim/_autosummary/symbrim.utilities.plotting.Plotter.html) from `SymBRiM` we can easily visualize the model and create an animation based on the simulation results."
    ]
   },
   {
@@ -714,7 +714,7 @@
     "from matplotlib.animation import FuncAnimation\n",
     "from scipy.interpolate import CubicSpline\n",
     "\n",
-    "from brim.utilities.plotting import Plotter\n",
+    "from symbrim.utilities.plotting import Plotter\n",
     "\n",
     "# Create some functions to interpolate the results.\n",
     "x_eval = CubicSpline(sim_def.t, sim_def.x.T)\n",
@@ -940,7 +940,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.8"
+   "version": "3.11.10"
   }
  },
  "nbformat": 4,
diff --git a/docs/tutorials/rolling_disc_from_scratch.ipynb b/docs/tutorials/rolling_disc_from_scratch.ipynb
index 5e2b85ca..ecddc30a 100644
--- a/docs/tutorials/rolling_disc_from_scratch.ipynb
+++ b/docs/tutorials/rolling_disc_from_scratch.ipynb
@@ -2,14 +2,14 @@
  "cells": [
   {
    "cell_type": "markdown",
-   "id": "5515b607",
+   "id": "0",
    "metadata": {},
    "source": [
     "# Rolling Disc From Scratch\n",
     "\n",
-    "Welcome to this model developers tutorial on creating a rolling disc model from scratch using BRiM!\n",
+    "Welcome to this model developers tutorial on creating a rolling disc model from scratch using SymBRiM!\n",
     "\n",
-    "This notebook is a hands-on tutorial on your own models, connections, and load groups in BRiM. By the end of this tutorial, you'll have achieved the following learning goals:\n",
+    "This notebook is a hands-on tutorial on your own models, connections, and load groups in SymBRiM. By the end of this tutorial, you'll have achieved the following learning goals:\n",
     "\n",
     "- Create base classes for models and connections.\n",
     "- Create a submodel.\n",
@@ -17,9 +17,9 @@
     "- Create a connection.\n",
     "- Create a load group.\n",
     "\n",
-    "The setup of this tutorial also aims to follow the style guide used in BRiM's source code to acustom you with the style expected by BRiM developers. An example is the obligated usage of docstrings and type hints in function signatures.\n",
+    "The setup of this tutorial also aims to follow the style guide used in SymBRiM's source code to acustom you with the style expected by SymBRiM developers. An example is the obligated usage of docstrings and type hints in function signatures.\n",
     "\n",
-    "Before diving into this tutorial, it's recommended that you familiarize yourself with Objected Oriented Programming (OOP), SymPy, the architecture of BRiM (refer to the sections on _Software Overview_ to _BRiM Models_ in [the BRiM paper](https://doi.org/10.59490/6504c5a765e8118fc7b106c3)), and the [guidelines on implementing components in BRiM](https://mechmotum.github.io/brim/guides/component_implementation.html). This background information will provide valuable context for what we'll cover here.\n",
+    "Before diving into this tutorial, it's recommended that you familiarize yourself with Objected Oriented Programming (OOP), SymPy, the architecture of SymBRiM (refer to the sections on _Software Overview_ to _BRiM Models_ in [the SymBRiM paper](https://doi.org/10.59490/6504c5a765e8118fc7b106c3)), and the [guidelines on implementing components in SymBRiM](https://mechmotum.github.io/symbrim/guides/component_implementation.html). This background information will provide valuable context for what we'll cover here.\n",
     "\n",
     "\n",
     "## Rolling Disc Model\n",
@@ -36,9 +36,9 @@
     "\n",
     "## Tutorial Overview\n",
     "\n",
-    "This tutorial is structured as follows. We start with an explanation of the implementation of both the abstract base class of the ground model as well as the implementation of the flat ground. Next, we continue with the implementation of the knife-edge wheel, while inheriting the abstract base class, `WheelBase`, from BRiM. With both submodels implemented, we will implement the tire base class and tire model, which uses nonholonomic constraints to enforce pure-rolling. Next, we will implement the overarching rolling disc model class. After which we create a load group to control the rolling disc. Finally, we will use our code to form the equations of motion (EoMs) of the rolling disc model.\n",
+    "This tutorial is structured as follows. We start with an explanation of the implementation of both the abstract base class of the ground model as well as the implementation of the flat ground. Next, we continue with the implementation of the knife-edge wheel, while inheriting the abstract base class, `WheelBase`, from SymBRiM. With both submodels implemented, we will implement the tire base class and tire model, which uses nonholonomic constraints to enforce pure-rolling. Next, we will implement the overarching rolling disc model class. After which we create a load group to control the rolling disc. Finally, we will use our code to form the equations of motion (EoMs) of the rolling disc model.\n",
     "\n",
-    "Note that the classes implemented in this tutorial are simplified w.r.t. their implemention in the source code of BRiM. However, we will try to follow standards used in the development of BRiM, like type hinting.\n",
+    "Note that the classes implemented in this tutorial are simplified w.r.t. their implemention in the source code of SymBRiM. However, we will try to follow standards used in the development of SymBRiM, like type hinting.\n",
     "\n",
     "## Imports\n",
     "Below we import the classes and functions we will require in this tutorial. Feel free to add any if your missing some."
@@ -47,7 +47,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "f0877722",
+   "id": "1",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -65,8 +65,8 @@
     "    verify_tire_base,\n",
     ")\n",
     "\n",
-    "from brim.bicycle.wheels import WheelBase\n",
-    "from brim.core import (\n",
+    "from symbrim.bicycle.wheels import WheelBase\n",
+    "from symbrim.core import (\n",
     "    ConnectionBase,\n",
     "    ConnectionRequirement,\n",
     "    LoadGroupBase,\n",
@@ -77,16 +77,16 @@
   },
   {
    "cell_type": "markdown",
-   "id": "02331a87",
+   "id": "2",
    "metadata": {},
    "source": [
     "## GroundBase Implementation\n",
     "\n",
-    "In this section, we will delve into the implementation of the `GroundBase` class, which serves as the base class for defining the properties and methods shared by various ground models in BRiM.\n",
+    "In this section, we will delve into the implementation of the `GroundBase` class, which serves as the base class for defining the properties and methods shared by various ground models in SymBRiM.\n",
     "\n",
     "### What is a Base Class?\n",
     "\n",
-    "A base class, such as `GroundBase`, plays a crucial role in BRiM by providing a common structure for related components. In the case of ground models, they share three essential properties and three methods.\n",
+    "A base class, such as `GroundBase`, plays a crucial role in SymBRiM by providing a common structure for related components. In the case of ground models, they share three essential properties and three methods.\n",
     "\n",
     "The three attributes defined in `GroundBase` are as follows:\n",
     "\n",
@@ -102,13 +102,13 @@
     "\n",
     "These common attributes streamline the creation of different ground models. Subclasses, like the flat ground model we'll discuss, only need to implement specific methods.\n",
     "\n",
-    "_Note: The actual implementation of the [GroundBase](https://mechmotum.github.io/brim/_autosummary/brim.bicycle.grounds.GroundBase.html) in BRiM is a bit different, as the normal vector and tangent vectors are positional dependent._\n",
+    "_Note: The actual implementation of the [GroundBase](https://mechmotum.github.io/symbrim/_autosummary/symbrim.bicycle.grounds.GroundBase.html) in SymBRiM is a bit different, as the normal vector and tangent vectors are positional dependent._\n",
     "\n",
-    "Additionally, `GroundBase` creates a [System](https://docs.sympy.org/dev/modules/physics/mechanics/api/system.html#sympy.physics.mechanics.system.System) instance in the define objects stage, as any model or connection in BRiM must do. This [System](https://docs.sympy.org/dev/modules/physics/mechanics/api/system.html#sympy.physics.mechanics.system.System) instance is used to store all information, like bodies, joint, and generalized coordinates, such that these can later be retrieved in the [ModelBase.to_system()](https://mechmotum.github.io/brim/_autosummary/brim.core.base_classes.ModelBase.html#brim.core.base_classes.ModelBase.to_system) method.\n",
+    "Additionally, `GroundBase` creates a [System](https://docs.sympy.org/dev/modules/physics/mechanics/api/system.html#sympy.physics.mechanics.system.System) instance in the define objects stage, as any model or connection in SymBRiM must do. This [System](https://docs.sympy.org/dev/modules/physics/mechanics/api/system.html#sympy.physics.mechanics.system.System) instance is used to store all information, like bodies, joint, and generalized coordinates, such that these can later be retrieved in the [ModelBase.to_system()](https://mechmotum.github.io/symbrim/_autosummary/symbrim.core.base_classes.ModelBase.html#symbrim.core.base_classes.ModelBase.to_system) method.\n",
     "\n",
     "### Define Steps\n",
     "\n",
-    "In BRiM, the definition of a model is divided into several stages, ensuring the proper decoupling between components. These steps are as follows:\n",
+    "In SymBRiM, the definition of a model is divided into several stages, ensuring the proper decoupling between components. These steps are as follows:\n",
     "\n",
     "1. **Define connections**: This step enables parent models to associate submodels with their respective connections.\n",
     "2. **Define objects**: In this step, we create objects, such as symbols and reference frames, without defining any relationships between them.\n",
@@ -118,9 +118,9 @@
     "\n",
     "To implement the \"define\" steps in a model, connection, or load group, a leading underscore is added to the method name. For example, `_define_<step>`. These methods solely implement the \"define\" step for the component itself without traversing the submodels and load groups.\n",
     "\n",
-    "[BrimBase](https://mechmotum.github.io/brim/_autosummary/brim.core.base_classes.BrimBase.html) contains the implementation of the \"define\" methods, including traversal, which should be called by the user. These methods follow the format `define_<step>`.\n",
+    "[BrimBase](https://mechmotum.github.io/symbrim/_autosummary/symbrim.core.base_classes.BrimBase.html) contains the implementation of the \"define\" methods, including traversal, which should be called by the user. These methods follow the format `define_<step>`.\n",
     "\n",
-    "For more information refer to [the guidelines on implementing components](https://mechmotum.github.io/brim/guides/component_implementation.html#implementation-define-steps).\n",
+    "For more information refer to [the guidelines on implementing components](https://mechmotum.github.io/symbrim/guides/component_implementation.html#implementation-define-steps).\n",
     "\n",
     "### Exercise\n",
     "\n",
@@ -130,7 +130,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "70fe15e9",
+   "id": "3",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -197,12 +197,12 @@
   },
   {
    "cell_type": "markdown",
-   "id": "ded2d5d1",
+   "id": "4",
    "metadata": {},
    "source": [
     "## FlatGround Implementation\n",
     "\n",
-    "In the context of BRiM, the flat ground model (`FlatGround`) needs to implement the abstract methods defined in the `GroundBase` class. Specifically, this involves defining the behavior of the ground in terms of the normal vector, tangent vectors, and the ability to set the position of points in the ground plane.\n",
+    "In the context of SymBRiM, the flat ground model (`FlatGround`) needs to implement the abstract methods defined in the `GroundBase` class. Specifically, this involves defining the behavior of the ground in terms of the normal vector, tangent vectors, and the ability to set the position of points in the ground plane.\n",
     "\n",
     "- The normal vector represents the unit vector in the negative Z-direction, defining the orientation of the ground plane.\n",
     "- The tangent vectors returns the X- and Y-unit vectors as a tuple, providing a basis for relationships between objects.\n",
@@ -219,7 +219,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "924086e5",
+   "id": "5",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -250,16 +250,16 @@
   },
   {
    "cell_type": "markdown",
-   "id": "45ff7159",
+   "id": "6",
    "metadata": {},
    "source": [
     "## KnifeEdgeWheel Implementation\n",
     "\n",
-    "In many cases, we don't need to create our own base classes; instead, we can leverage the existing ones provided by BRiM. In this section, we will implement a knife-edge wheel, which builds upon the [WheelBase](https://mechmotum.github.io/brim/_autosummary/brim.bicycle.wheels.WheelBase.html) class from BRiM.\n",
+    "In many cases, we don't need to create our own base classes; instead, we can leverage the existing ones provided by SymBRiM. In this section, we will implement a knife-edge wheel, which builds upon the [WheelBase](https://mechmotum.github.io/symbrim/_autosummary/symbrim.bicycle.wheels.WheelBase.html) class from SymBRiM.\n",
     "\n",
     "### Inheriting from WheelBase\n",
     "\n",
-    "Similar to the flat ground, the knife-edge wheel inherits from an abstract class, `WheelBase`. This time we will just use the one defined already in BRiM. `WheelBase` already defines a rigid body (`body`) and a body-fixed frame (`frame`) to represent the wheel. Additionally, it prescribes the implementation of two properties:\n",
+    "Similar to the flat ground, the knife-edge wheel inherits from an abstract class, `WheelBase`. This time we will just use the one defined already in SymBRiM. `WheelBase` already defines a rigid body (`body`) and a body-fixed frame (`frame`) to represent the wheel. Additionally, it prescribes the implementation of two properties:\n",
     "\n",
     "- `rotation_axis`: A `Vector` representing the rotation axis.\n",
     "- `center`: A `Point` representing the wheel's center.\n",
@@ -268,7 +268,7 @@
     "\n",
     "### Symbol Handling\n",
     "\n",
-    "Apart from defining these properties, we need to introduce a `radius` symbol to describe the shape of the wheel. In BRiM, we store symbols in the `symbols` dictionary created by [BrimBase](https://mechmotum.github.io/brim/_autosummary/brim.core.base_classes.BrimBase.html). This dictionary allows users to change a symbol after the \"define object\" stage, providing flexibility in symbol definitions. Here is a short example:\n",
+    "Apart from defining these properties, we need to introduce a `radius` symbol to describe the shape of the wheel. In SymBRiM, we store symbols in the `symbols` dictionary created by [BrimBase](https://mechmotum.github.io/symbrim/_autosummary/symbrim.core.base_classes.BrimBase.html). This dictionary allows users to change a symbol after the \"define object\" stage, providing flexibility in symbol definitions. Here is a short example:\n",
     "\n",
     "```python\n",
     "wheel = KnifeEdgeWheel(\"wheel\")\n",
@@ -280,7 +280,7 @@
     "\n",
     "Additionally, descriptions for symbols are stored in the `descriptions` property, which can be used for documentation purposes. `BrimBase.get_description` uses these properties to allow a user to request the definition of a symbol, e.g. `bicycle.get_description(wheel.symbols[\"r\"])` should return something like `Radius of the wheel.`.\n",
     "\n",
-    "Within BRiM's source code we use `BrimBase._add_prefix` to add the name of the instantiated model as a prefix to each symbol. This ensures that the symbols created among different models stay unique, assuming the user instantiates the models with unique names. For example:\n",
+    "Within SymBRiM's source code we use `BrimBase._add_prefix` to add the name of the instantiated model as a prefix to each symbol. This ensures that the symbols created among different models stay unique, assuming the user instantiates the models with unique names. For example:\n",
     "\n",
     "```python\n",
     "wheel_rear = KnifeEdgeWheel(\"wheel_rear\")\n",
@@ -290,7 +290,7 @@
     "assert wheel_rear.symbols[\"r\"] != wheel_front.symbols[\"r\"]\n",
     "```\n",
     "\n",
-    "For more information refer to [the guidelines on implementing components](https://mechmotum.github.io/brim/guides/component_implementation.html#define-objects).\n",
+    "For more information refer to [the guidelines on implementing components](https://mechmotum.github.io/symbrim/guides/component_implementation.html#define-objects).\n",
     "\n",
     "### Exercise\n",
     "\n",
@@ -304,7 +304,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "ed11021c",
+   "id": "7",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -343,7 +343,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "819020b2",
+   "id": "8",
    "metadata": {},
    "source": [
     "## TireBase Implementation\n",
@@ -365,7 +365,7 @@
     "\n",
     "### Creation of Submodel Properties\n",
     "\n",
-    "In BRiM, the class property `required_models` is used to specify submodel properties. `required_models` should be a tuple of `ModelRequirements`. Refer to [the implementation guidelines](https://mechmotum.github.io/brim/guides/component_implementation.html#setting-submodels-and-connections) for more information.\n",
+    "In SymBRiM, the class property `required_models` is used to specify submodel properties. `required_models` should be a tuple of `ModelRequirements`. Refer to [the implementation guidelines](https://mechmotum.github.io/symbrim/guides/component_implementation.html#setting-submodels-and-connections) for more information.\n",
     "\n",
     "### Contact Point Computation\n",
     "\n",
@@ -384,7 +384,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "50ed9a57",
+   "id": "9",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -448,7 +448,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "c723d3ea",
+   "id": "10",
    "metadata": {},
    "source": [
     "## NonHolonomicTire Implementation\n",
@@ -465,7 +465,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "b6accded",
+   "id": "11",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -503,7 +503,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "d7f1035c",
+   "id": "12",
    "metadata": {},
    "source": [
     "## Rolling Disc Model Implementation\n",
@@ -533,7 +533,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "15524fbf",
+   "id": "13",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -613,7 +613,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "f97213b2",
+   "id": "14",
    "metadata": {},
    "source": [
     "## Control Load Group Implementation\n",
@@ -628,7 +628,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "fa043f3f",
+   "id": "15",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -676,7 +676,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "9f0a55fd",
+   "id": "16",
    "metadata": {},
    "source": [
     "## Build Rolling Disc\n",
@@ -691,7 +691,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "id": "b8e4ea81",
+   "id": "17",
    "metadata": {},
    "outputs": [],
    "source": [
@@ -719,7 +719,7 @@
   },
   {
    "cell_type": "markdown",
-   "id": "6bc5639a",
+   "id": "18",
    "metadata": {},
    "source": [
     "## What's Next?\n",
@@ -748,7 +748,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.8"
+   "version": "3.11.10"
   }
  },
  "nbformat": 4,
diff --git a/docs/tutorials/tutorials_environment.yml b/docs/tutorials/tutorials_environment.yml
index c18e0387..a865e4f4 100644
--- a/docs/tutorials/tutorials_environment.yml
+++ b/docs/tutorials/tutorials_environment.yml
@@ -1,4 +1,4 @@
-name: brim-tutorials
+name: symbrim-tutorials
 channels:
   - conda-forge
 dependencies:
@@ -11,4 +11,4 @@ dependencies:
   - symmeplot
   - pip:
       - git+https://github.com/moorepants/BicycleParameters.git
-      - git+https://github.com/mechmotum/brim.git
+      - git+https://github.com/mechmotum/symbrim.git
diff --git a/docs/tutorials/utils.py b/docs/tutorials/utils.py
index 3489c2d1..a43df1b0 100644
--- a/docs/tutorials/utils.py
+++ b/docs/tutorials/utils.py
@@ -10,8 +10,8 @@
 import sympy.physics.mechanics as me
 from sympy.core.function import AppliedUndef
 
-from brim.bicycle import WheelBase
-from brim.utilities.utilities import check_zero
+from symbrim.bicycle import WheelBase
+from symbrim.utilities.utilities import check_zero
 
 BICYCLE_PARAMETERS_ZIP_URL = (
     "https://github.com/moorepants/BicycleParameters/archive/refs/heads/master.zip"
diff --git a/pyproject.toml b/pyproject.toml
index ae098c2e..c7750be2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,11 +1,11 @@
 [tool.poetry]
-name = "brim"
+name = "symbrim"
 version = "0.0.1"
-description = "A Modular and Extensible Open-Source Framework for Creating Bicycle-Rider Models"
+description = "A Modular and Extensible Open-Source Framework for Symbolic Creating Bicycle-Rider Models"
 authors = ["tjstienstra <T.J.Stienstra@tudelft.nl>"]
 license = "CC0-1.0"
 readme = "README.md"
-repository = "https://github.com/mechmotum/brim"
+repository = "https://github.com/mechmotum/symbrim"
 
 [tool.poetry.dependencies]
 python = "^3.9"
@@ -107,7 +107,7 @@ source = ["src"]
 
 [tool.coverage.run]
 branch = true
-source = ["brim"]
+source = ["symbrim"]
 
 [tool.coverage.report]
 show_missing = true
@@ -120,8 +120,8 @@ exclude_also = [
     "def set_plot_objects"
 ]
 omit = [
-    "src/brim/utilities/benchmarking.py",
-    "src/brim/utilities/parametrize.py",
-    "src/brim/utilities/plotting.py",
-    "src/brim/utilities/testing.py"
+    "src/symbrim/utilities/benchmarking.py",
+    "src/symbrim/utilities/parametrize.py",
+    "src/symbrim/utilities/plotting.py",
+    "src/symbrim/utilities/testing.py"
 ]
diff --git a/src/brim/utilities/__init__.py b/src/brim/utilities/__init__.py
deleted file mode 100644
index faec0542..00000000
--- a/src/brim/utilities/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-"""Utilities for brim."""
diff --git a/src/brim/__init__.py b/src/symbrim/__init__.py
similarity index 88%
rename from src/brim/__init__.py
rename to src/symbrim/__init__.py
index b62a831e..fee8bca1 100644
--- a/src/brim/__init__.py
+++ b/src/symbrim/__init__.py
@@ -1,6 +1,7 @@
-"""BRiM.
+"""SymBRiM.
 
-A Modular and Extensible Open-Source Framework for Creating Bicycle-Rider Models.
+A Modular and Extensible Open-Source Framework for Creating Symbolic Bicycle-Rider
+Models.
 """
 __all__ = [
     "WhippleBicycle", "StationaryBicycle",
@@ -44,7 +45,7 @@
     "HolonomicPedals",
 ]
 
-from brim.bicycle import (
+from symbrim.bicycle import (
     FlatGround,
     InContactTire,
     KnifeEdgeWheel,
@@ -57,14 +58,14 @@
     ToroidalWheel,
     WhippleBicycle,
 )
-from brim.brim import (
+from symbrim.brim import (
     BicycleRider,
     FixedSeat,
     HolonomicHandGrips,
     HolonomicPedals,
     SideLeanSeat,
 )
-from brim.rider import (
+from symbrim.rider import (
     FixedSacrum,
     FlexAddLeftShoulder,
     FlexAddRightShoulder,
diff --git a/src/brim/bicycle/__init__.py b/src/symbrim/bicycle/__init__.py
similarity index 50%
rename from src/brim/bicycle/__init__.py
rename to src/symbrim/bicycle/__init__.py
index 67307590..4c62028a 100644
--- a/src/brim/bicycle/__init__.py
+++ b/src/symbrim/bicycle/__init__.py
@@ -12,18 +12,22 @@
     "CranksBase", "MasslessCranks",
 ]
 
-from brim.bicycle.bicycle_base import BicycleBase
-from brim.bicycle.cranks import CranksBase, MasslessCranks
-from brim.bicycle.front_frames import (
+from symbrim.bicycle.bicycle_base import BicycleBase
+from symbrim.bicycle.cranks import CranksBase, MasslessCranks
+from symbrim.bicycle.front_frames import (
     FrontFrameBase,
     RigidFrontFrame,
     RigidFrontFrameMoore,
     SuspensionRigidFrontFrame,
     SuspensionRigidFrontFrameMoore,
 )
-from brim.bicycle.grounds import FlatGround, GroundBase
-from brim.bicycle.rear_frames import RearFrameBase, RigidRearFrame, RigidRearFrameMoore
-from brim.bicycle.stationary_bicycle import StationaryBicycle
-from brim.bicycle.tires import InContactTire, NonHolonomicTire, TireBase
-from brim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
-from brim.bicycle.whipple_bicycle import WhippleBicycle, WhippleBicycleMoore
+from symbrim.bicycle.grounds import FlatGround, GroundBase
+from symbrim.bicycle.rear_frames import (
+    RearFrameBase,
+    RigidRearFrame,
+    RigidRearFrameMoore,
+)
+from symbrim.bicycle.stationary_bicycle import StationaryBicycle
+from symbrim.bicycle.tires import InContactTire, NonHolonomicTire, TireBase
+from symbrim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
+from symbrim.bicycle.whipple_bicycle import WhippleBicycle, WhippleBicycleMoore
diff --git a/src/brim/bicycle/bicycle_base.py b/src/symbrim/bicycle/bicycle_base.py
similarity index 86%
rename from src/brim/bicycle/bicycle_base.py
rename to src/symbrim/bicycle/bicycle_base.py
index 47fbeb1f..8def9fc4 100644
--- a/src/brim/bicycle/bicycle_base.py
+++ b/src/symbrim/bicycle/bicycle_base.py
@@ -3,11 +3,11 @@
 
 from typing import TYPE_CHECKING
 
-from brim.bicycle.cranks import CranksBase
-from brim.bicycle.front_frames import FrontFrameBase
-from brim.bicycle.rear_frames import RearFrameBase
-from brim.bicycle.wheels import WheelBase
-from brim.core import ModelBase, ModelRequirement
+from symbrim.bicycle.cranks import CranksBase
+from symbrim.bicycle.front_frames import FrontFrameBase
+from symbrim.bicycle.rear_frames import RearFrameBase
+from symbrim.bicycle.wheels import WheelBase
+from symbrim.core import ModelBase, ModelRequirement
 
 if TYPE_CHECKING:
     import contextlib
diff --git a/src/brim/bicycle/cranks.py b/src/symbrim/bicycle/cranks.py
similarity index 97%
rename from src/brim/bicycle/cranks.py
rename to src/symbrim/bicycle/cranks.py
index c99d606f..374e958d 100644
--- a/src/brim/bicycle/cranks.py
+++ b/src/symbrim/bicycle/cranks.py
@@ -7,12 +7,12 @@
 from sympy import Symbol
 from sympy.physics.mechanics import Point, ReferenceFrame, System, Vector
 
-from brim.core import ModelBase
+from symbrim.core import ModelBase
 
 if TYPE_CHECKING:
     import contextlib
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["CranksBase"]
 
diff --git a/src/brim/bicycle/front_frames.py b/src/symbrim/bicycle/front_frames.py
similarity index 98%
rename from src/brim/bicycle/front_frames.py
rename to src/symbrim/bicycle/front_frames.py
index 1195d9f9..1ea604f2 100644
--- a/src/brim/bicycle/front_frames.py
+++ b/src/symbrim/bicycle/front_frames.py
@@ -15,7 +15,7 @@
     inertia,
 )
 
-from brim.core import Attachment, Hub, ModelBase, set_default_convention
+from symbrim.core import Attachment, Hub, ModelBase, set_default_convention
 
 with contextlib.suppress(ImportError):
     import numpy as np
@@ -23,14 +23,14 @@
     from dtk.bicycle import benchmark_to_moore
     from scipy.optimize import fsolve
 
-    from brim.utilities.parametrize import get_inertia_vals
+    from symbrim.utilities.parametrize import get_inertia_vals
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["FrontFrameBase", "RigidFrontFrame", "RigidFrontFrameMoore",
            "SuspensionRigidFrontFrame", "SuspensionRigidFrontFrameMoore"]
diff --git a/src/brim/bicycle/grounds.py b/src/symbrim/bicycle/grounds.py
similarity index 98%
rename from src/brim/bicycle/grounds.py
rename to src/symbrim/bicycle/grounds.py
index b1f594db..3d5968bc 100644
--- a/src/brim/bicycle/grounds.py
+++ b/src/symbrim/bicycle/grounds.py
@@ -13,7 +13,7 @@
     cross,
 )
 
-from brim.core import ModelBase
+from symbrim.core import ModelBase
 
 if TYPE_CHECKING:
     import contextlib
@@ -23,7 +23,7 @@
     T_position = Point | Vector | tuple[Expr, ...]
 
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["GroundBase", "FlatGround"]
 
diff --git a/src/brim/bicycle/rear_frames.py b/src/symbrim/bicycle/rear_frames.py
similarity index 98%
rename from src/brim/bicycle/rear_frames.py
rename to src/symbrim/bicycle/rear_frames.py
index 631c19a5..df255980 100644
--- a/src/brim/bicycle/rear_frames.py
+++ b/src/symbrim/bicycle/rear_frames.py
@@ -8,7 +8,7 @@
 from sympy import Symbol, symbols
 from sympy.physics.mechanics import Point, RigidBody, System, inertia
 
-from brim.core import Attachment, Hub, ModelBase, set_default_convention
+from symbrim.core import Attachment, Hub, ModelBase, set_default_convention
 
 with contextlib.suppress(ImportError):
     import numpy as np
@@ -17,14 +17,14 @@
     from bicycleparameters.rider import yeadon_vec_to_bicycle_vec
     from dtk.bicycle import benchmark_to_moore
 
-    from brim.utilities.parametrize import get_inertia_vals
+    from symbrim.utilities.parametrize import get_inertia_vals
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["RearFrameBase", "RigidRearFrame", "RigidRearFrameMoore"]
 
diff --git a/src/brim/bicycle/stationary_bicycle.py b/src/symbrim/bicycle/stationary_bicycle.py
similarity index 98%
rename from src/brim/bicycle/stationary_bicycle.py
rename to src/symbrim/bicycle/stationary_bicycle.py
index b933b9b8..74d21867 100644
--- a/src/brim/bicycle/stationary_bicycle.py
+++ b/src/symbrim/bicycle/stationary_bicycle.py
@@ -4,7 +4,7 @@
 from sympy import Matrix, Symbol
 from sympy.physics.mechanics import PinJoint, System, dynamicsymbols
 
-from brim.bicycle.bicycle_base import BicycleBase
+from symbrim.bicycle.bicycle_base import BicycleBase
 
 __all__ = ["StationaryBicycle"]
 
diff --git a/src/brim/bicycle/tires.py b/src/symbrim/bicycle/tires.py
similarity index 98%
rename from src/brim/bicycle/tires.py
rename to src/symbrim/bicycle/tires.py
index ade41f9a..e77257aa 100644
--- a/src/brim/bicycle/tires.py
+++ b/src/symbrim/bicycle/tires.py
@@ -13,10 +13,10 @@
     dynamicsymbols,
 )
 
-from brim.bicycle.grounds import FlatGround, GroundBase
-from brim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
-from brim.core import ConnectionBase, ModelRequirement
-from brim.utilities.utilities import check_zero
+from symbrim.bicycle.grounds import FlatGround, GroundBase
+from symbrim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
+from symbrim.core import ConnectionBase, ModelRequirement
+from symbrim.utilities.utilities import check_zero
 
 __all__ = ["TireBase", "InContactTire", "NonHolonomicTire"]
 
diff --git a/src/brim/bicycle/wheels.py b/src/symbrim/bicycle/wheels.py
similarity index 97%
rename from src/brim/bicycle/wheels.py
rename to src/symbrim/bicycle/wheels.py
index 7c025f19..9248c145 100644
--- a/src/brim/bicycle/wheels.py
+++ b/src/symbrim/bicycle/wheels.py
@@ -8,19 +8,19 @@
 from sympy import Symbol, symbols
 from sympy.physics.mechanics import Point, Vector, inertia
 
-from brim.core import ModelBase, NewtonianBodyMixin
+from symbrim.core import ModelBase, NewtonianBodyMixin
 
 with contextlib.suppress(ImportError):
     from bicycleparameters.io import remove_uncertainties
 
-    from brim.utilities.parametrize import get_inertia_vals
+    from symbrim.utilities.parametrize import get_inertia_vals
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["WheelBase", "KnifeEdgeWheel", "ToroidalWheel"]
 
diff --git a/src/brim/bicycle/whipple_bicycle.py b/src/symbrim/bicycle/whipple_bicycle.py
similarity index 95%
rename from src/brim/bicycle/whipple_bicycle.py
rename to src/symbrim/bicycle/whipple_bicycle.py
index 86efcf95..16797f3f 100644
--- a/src/brim/bicycle/whipple_bicycle.py
+++ b/src/symbrim/bicycle/whipple_bicycle.py
@@ -12,13 +12,13 @@
     dynamicsymbols,
 )
 
-from brim.bicycle.bicycle_base import BicycleBase
-from brim.bicycle.front_frames import FrontFrameBase
-from brim.bicycle.grounds import GroundBase
-from brim.bicycle.rear_frames import RearFrameBase
-from brim.bicycle.tires import TireBase
-from brim.bicycle.wheels import WheelBase
-from brim.core import ConnectionRequirement, ModelRequirement, set_default_convention
+from symbrim.bicycle.bicycle_base import BicycleBase
+from symbrim.bicycle.front_frames import FrontFrameBase
+from symbrim.bicycle.grounds import GroundBase
+from symbrim.bicycle.rear_frames import RearFrameBase
+from symbrim.bicycle.tires import TireBase
+from symbrim.bicycle.wheels import WheelBase
+from symbrim.core import ConnectionRequirement, ModelRequirement, set_default_convention
 
 __all__ = ["WhippleBicycle", "WhippleBicycleMoore"]
 
diff --git a/src/brim/brim/__init__.py b/src/symbrim/brim/__init__.py
similarity index 65%
rename from src/brim/brim/__init__.py
rename to src/symbrim/brim/__init__.py
index 6b13b05f..73ffad38 100644
--- a/src/brim/brim/__init__.py
+++ b/src/symbrim/brim/__init__.py
@@ -13,15 +13,15 @@
     "HolonomicHandGrips", "SpringDamperHandGrips",
 ]
 
-from brim.brim.base_connections import (
+from symbrim.brim.base_connections import (
     HandGripsBase,
     PedalsBase,
     SeatBase,
 )
-from brim.brim.bicycle_rider import BicycleRider
-from brim.brim.hand_grips import HolonomicHandGrips, SpringDamperHandGrips
-from brim.brim.pedals import HolonomicPedals, SpringDamperPedals
-from brim.brim.seats import (
+from symbrim.brim.bicycle_rider import BicycleRider
+from symbrim.brim.hand_grips import HolonomicHandGrips, SpringDamperHandGrips
+from symbrim.brim.pedals import HolonomicPedals, SpringDamperPedals
+from symbrim.brim.seats import (
     FixedSeat,
     PelvisInterPointMixin,
     SideLeanSeat,
diff --git a/src/brim/brim/base_connections.py b/src/symbrim/brim/base_connections.py
similarity index 81%
rename from src/brim/brim/base_connections.py
rename to src/symbrim/brim/base_connections.py
index 65e2c615..ffa193b5 100644
--- a/src/brim/brim/base_connections.py
+++ b/src/symbrim/brim/base_connections.py
@@ -1,13 +1,13 @@
 """Module containing the base connection classes between the rider and bicycle."""
 from __future__ import annotations
 
-from brim.bicycle.cranks import CranksBase
-from brim.bicycle.front_frames import FrontFrameBase
-from brim.bicycle.rear_frames import RearFrameBase
-from brim.core import ConnectionBase, ModelRequirement
-from brim.rider.arms import LeftArmBase, RightArmBase
-from brim.rider.legs import LeftLegBase, RightLegBase
-from brim.rider.pelvis import PelvisBase
+from symbrim.bicycle.cranks import CranksBase
+from symbrim.bicycle.front_frames import FrontFrameBase
+from symbrim.bicycle.rear_frames import RearFrameBase
+from symbrim.core import ConnectionBase, ModelRequirement
+from symbrim.rider.arms import LeftArmBase, RightArmBase
+from symbrim.rider.legs import LeftLegBase, RightLegBase
+from symbrim.rider.pelvis import PelvisBase
 
 __all__ = ["HandGripsBase", "PedalsBase", "SeatBase"]
 
diff --git a/src/brim/brim/bicycle_rider.py b/src/symbrim/brim/bicycle_rider.py
similarity index 94%
rename from src/brim/brim/bicycle_rider.py
rename to src/symbrim/brim/bicycle_rider.py
index f8c484a8..31d76dcf 100644
--- a/src/brim/brim/bicycle_rider.py
+++ b/src/symbrim/brim/bicycle_rider.py
@@ -3,14 +3,14 @@
 
 from sympy.physics.mechanics import System
 
-from brim.bicycle import BicycleBase
-from brim.brim.base_connections import (
+from symbrim.bicycle import BicycleBase
+from symbrim.brim.base_connections import (
     HandGripsBase,
     PedalsBase,
     SeatBase,
 )
-from brim.core import ConnectionRequirement, ModelBase, ModelRequirement
-from brim.rider import Rider
+from symbrim.core import ConnectionRequirement, ModelBase, ModelRequirement
+from symbrim.rider import Rider
 
 __all__ = ["BicycleRider"]
 
diff --git a/src/brim/brim/hand_grips.py b/src/symbrim/brim/hand_grips.py
similarity index 96%
rename from src/brim/brim/hand_grips.py
rename to src/symbrim/brim/hand_grips.py
index ad8e0c77..73818c6d 100644
--- a/src/brim/brim/hand_grips.py
+++ b/src/symbrim/brim/hand_grips.py
@@ -13,11 +13,11 @@
     dynamicsymbols,
 )
 
-from brim.brim.base_connections import HandGripsBase
-from brim.utilities.utilities import check_zero
+from symbrim.brim.base_connections import HandGripsBase
+from symbrim.utilities.utilities import check_zero
 
 if TYPE_CHECKING:
-    from brim.core import Attachment
+    from symbrim.core import Attachment
 
 __all__ = ["HolonomicHandGrips", "SpringDamperHandGrips"]
 
diff --git a/src/brim/brim/pedals.py b/src/symbrim/brim/pedals.py
similarity index 97%
rename from src/brim/brim/pedals.py
rename to src/symbrim/brim/pedals.py
index eb2a3732..755b75bc 100644
--- a/src/brim/brim/pedals.py
+++ b/src/symbrim/brim/pedals.py
@@ -11,8 +11,8 @@
     dynamicsymbols,
 )
 
-from brim.brim.base_connections import PedalsBase
-from brim.utilities.utilities import check_zero
+from symbrim.brim.base_connections import PedalsBase
+from symbrim.utilities.utilities import check_zero
 
 __all__ = ["HolonomicPedals", "SpringDamperPedals"]
 
diff --git a/src/brim/brim/seats.py b/src/symbrim/brim/seats.py
similarity index 99%
rename from src/brim/brim/seats.py
rename to src/symbrim/brim/seats.py
index e13aad3f..6f008eb2 100644
--- a/src/brim/brim/seats.py
+++ b/src/symbrim/brim/seats.py
@@ -13,8 +13,8 @@
     dynamicsymbols,
 )
 
-from brim.brim.base_connections import SeatBase
-from brim.core import LoadGroupBase
+from symbrim.brim.base_connections import SeatBase
+from symbrim.core import LoadGroupBase
 
 __all__ = ["PelvisInterPointMixin",
            "SideLeanSeat", "SideLeanSeatTorque", "SideLeanSeatSpringDamper",
diff --git a/src/brim/core/__init__.py b/src/symbrim/core/__init__.py
similarity index 51%
rename from src/brim/core/__init__.py
rename to src/symbrim/core/__init__.py
index 3ed697d8..21d7e05e 100644
--- a/src/brim/core/__init__.py
+++ b/src/symbrim/core/__init__.py
@@ -1,4 +1,4 @@
-"""Module containing the core elements of BRiM."""
+"""Module containing the core elements of SymBRiM."""
 
 __all__ = [
     "Attachment", "Hub",
@@ -12,9 +12,9 @@
     "AuxiliaryDataHandler", "AuxiliaryData",
 ]
 
-from brim.core.attachment import Attachment, Hub
-from brim.core.auxiliary import AuxiliaryData, AuxiliaryDataHandler
-from brim.core.base_classes import (
+from symbrim.core.attachment import Attachment, Hub
+from symbrim.core.auxiliary import AuxiliaryData, AuxiliaryDataHandler
+from symbrim.core.base_classes import (
     ConnectionBase,
     ConnectionMeta,
     LoadGroupBase,
@@ -23,7 +23,7 @@
     ModelMeta,
     set_default_convention,
 )
-from brim.core.mixins import NewtonianBodyMixin
-from brim.core.registry import Registry
-from brim.core.requirement import ConnectionRequirement, ModelRequirement
-from brim.core.singleton import Singleton
+from symbrim.core.mixins import NewtonianBodyMixin
+from symbrim.core.registry import Registry
+from symbrim.core.requirement import ConnectionRequirement, ModelRequirement
+from symbrim.core.singleton import Singleton
diff --git a/src/brim/core/attachment.py b/src/symbrim/core/attachment.py
similarity index 98%
rename from src/brim/core/attachment.py
rename to src/symbrim/core/attachment.py
index 2f760b9f..bab6e5f1 100644
--- a/src/brim/core/attachment.py
+++ b/src/symbrim/core/attachment.py
@@ -124,8 +124,8 @@ class Hub(Attachment):
     Explanation
     -----------
     This class is used to define the attachment points of pin joints. It extends
-    :class:`brim.core.attachment.Attachment` by specifying an additional rotation axis
-    property.
+    :class:`symbrim.core.attachment.Attachment` by specifying an additional rotation
+    axis property.
     """
 
     def __init__(self, frame: ReferenceFrame, point: Point, axis: str | Vector) -> None:
diff --git a/src/brim/core/auxiliary.py b/src/symbrim/core/auxiliary.py
similarity index 100%
rename from src/brim/core/auxiliary.py
rename to src/symbrim/core/auxiliary.py
diff --git a/src/brim/core/base_classes.py b/src/symbrim/core/base_classes.py
similarity index 97%
rename from src/brim/core/base_classes.py
rename to src/symbrim/core/base_classes.py
index 31e19c7d..d001428e 100644
--- a/src/brim/core/base_classes.py
+++ b/src/symbrim/core/base_classes.py
@@ -1,4 +1,4 @@
-"""Module containing the base class for all models in BRiM."""
+"""Module containing the base class for all models in SymBRiM."""
 from __future__ import annotations
 
 from abc import ABCMeta
@@ -8,8 +8,8 @@
 from sympy import Basic, MutableDenseMatrix, Symbol, symbols
 from sympy.physics.mechanics import System, dynamicsymbols, find_dynamicsymbols
 
-from brim.core.auxiliary import AuxiliaryDataHandler
-from brim.core.registry import Registry
+from symbrim.core.auxiliary import AuxiliaryDataHandler
+from symbrim.core.registry import Registry
 
 try:  # pragma: no cover
     from bicycleparameters import Bicycle
@@ -23,7 +23,7 @@
 if TYPE_CHECKING:
     from collections.abc import Callable
 
-    from brim.core.requirement import ConnectionRequirement, ModelRequirement
+    from symbrim.core.requirement import ConnectionRequirement, ModelRequirement
 
 __all__ = ["ConnectionBase", "ConnectionMeta", "LoadGroupBase", "LoadGroupMeta",
            "ModelBase", "ModelMeta", "set_default_convention"]
@@ -77,7 +77,7 @@ def setter(self: BrimBase, conn: ConnectionBase) -> None:
 
 
 class ModelMeta(ABCMeta):
-    """Metaclass for the :class:`brim.core.model_base.ModelBase`."""
+    """Metaclass for the :class:`symbrim.core.model_base.ModelBase`."""
 
     def __new__(mcs, name, bases, namespace, **kwargs):  # noqa: ANN001, ANN003, ANN204, N804
         """Create a new class."""
@@ -97,7 +97,7 @@ def __new__(mcs, name, bases, namespace, **kwargs):  # noqa: ANN001, ANN003, ANN
 
 
 class ConnectionMeta(ABCMeta):
-    """Metaclass for the :class:`brim.core.model_base.ConnectionBase`."""
+    """Metaclass for the :class:`symbrim.core.model_base.ConnectionBase`."""
 
     def __new__(mcs, name, bases, namespace, **kwargs):  # noqa: ANN001, ANN003, ANN204, N804
         """Create a new class."""
@@ -112,7 +112,7 @@ def __new__(mcs, name, bases, namespace, **kwargs):  # noqa: ANN001, ANN003, ANN
 
 
 class LoadGroupMeta(ABCMeta):
-    """Metaclass for the :class:`brim.core.model_base.LoadGroupBase`."""
+    """Metaclass for the :class:`symbrim.core.model_base.LoadGroupBase`."""
 
     def __new__(mcs, name, bases, namespace, **kwargs):  # noqa: ANN001, ANN003, ANN204, N804
         """Create a new class."""
@@ -275,7 +275,7 @@ def define_constraints(self) -> None:
 
 
 class ModelBase(BrimBase, metaclass=ModelMeta):
-    """Base class for all objects in brim."""
+    """Base class for all models in SymBRiM."""
 
     required_models: tuple[ModelRequirement, ...] = ()
     required_connections: tuple[ConnectionRequirement, ...] = ()
@@ -433,7 +433,7 @@ def get_systems(model: ModelBase) -> list[System]:
 
 
 class ConnectionBase(BrimBase, metaclass=ConnectionMeta):
-    """Base class for all connections in brim."""
+    """Base class for all connections in SymBRiM."""
 
     required_models: tuple[ModelRequirement, ...] = ()
 
diff --git a/src/brim/core/mixins.py b/src/symbrim/core/mixins.py
similarity index 97%
rename from src/brim/core/mixins.py
rename to src/symbrim/core/mixins.py
index 5ab08af0..220f3443 100644
--- a/src/brim/core/mixins.py
+++ b/src/symbrim/core/mixins.py
@@ -8,7 +8,7 @@
 if TYPE_CHECKING:
     import contextlib
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 
 class NewtonianBodyMixin:
diff --git a/src/brim/core/registry.py b/src/symbrim/core/registry.py
similarity index 95%
rename from src/brim/core/registry.py
rename to src/symbrim/core/registry.py
index 53604889..a5dd366a 100644
--- a/src/brim/core/registry.py
+++ b/src/symbrim/core/registry.py
@@ -1,19 +1,19 @@
-"""Registry to keep track of all existing model and connection types in BRiM."""
+"""Registry to keep track of all existing model and connection types in SymBRiM."""
 from __future__ import annotations
 
 from typing import TYPE_CHECKING
 
-from brim.core.requirement import ConnectionRequirement, ModelRequirement
-from brim.core.singleton import Singleton
+from symbrim.core.requirement import ConnectionRequirement, ModelRequirement
+from symbrim.core.singleton import Singleton
 
 if TYPE_CHECKING:
-    from brim.core.base_classes import ConnectionBase, ModelBase
+    from symbrim.core.base_classes import ConnectionBase, ModelBase
 
 __all__ = ["Registry"]
 
 
 class Registry(Singleton):
-    """Registry to keep track of all existing model and connection types in BRiM."""
+    """Registry to keep track of all existing model and connection types in SymBRiM."""
 
     def __init__(self) -> None:
         self._models = set()
diff --git a/src/brim/core/requirement.py b/src/symbrim/core/requirement.py
similarity index 100%
rename from src/brim/core/requirement.py
rename to src/symbrim/core/requirement.py
diff --git a/src/brim/core/singleton.py b/src/symbrim/core/singleton.py
similarity index 100%
rename from src/brim/core/singleton.py
rename to src/symbrim/core/singleton.py
diff --git a/src/brim/other/__init__.py b/src/symbrim/other/__init__.py
similarity index 67%
rename from src/brim/other/__init__.py
rename to src/symbrim/other/__init__.py
index f2385abb..320d942e 100644
--- a/src/brim/other/__init__.py
+++ b/src/symbrim/other/__init__.py
@@ -2,4 +2,4 @@
 
 __all__ = ["RollingDisc"]
 
-from brim.other.rolling_disc import RollingDisc
+from symbrim.other.rolling_disc import RollingDisc
diff --git a/src/brim/other/rolling_disc.py b/src/symbrim/other/rolling_disc.py
similarity index 96%
rename from src/brim/other/rolling_disc.py
rename to src/symbrim/other/rolling_disc.py
index f793e155..49dcac43 100644
--- a/src/brim/other/rolling_disc.py
+++ b/src/symbrim/other/rolling_disc.py
@@ -14,10 +14,10 @@
     inertia,
 )
 
-from brim.bicycle.grounds import GroundBase
-from brim.bicycle.tires import TireBase
-from brim.bicycle.wheels import WheelBase
-from brim.core import ConnectionRequirement, ModelBase, ModelRequirement
+from symbrim.bicycle.grounds import GroundBase
+from symbrim.bicycle.tires import TireBase
+from symbrim.bicycle.wheels import WheelBase
+from symbrim.core import ConnectionRequirement, ModelBase, ModelRequirement
 
 
 class RollingDisc(ModelBase):
diff --git a/src/brim/rider/__init__.py b/src/symbrim/rider/__init__.py
similarity index 79%
rename from src/brim/rider/__init__.py
rename to src/symbrim/rider/__init__.py
index 891abd4c..21ec4cb8 100644
--- a/src/brim/rider/__init__.py
+++ b/src/symbrim/rider/__init__.py
@@ -35,7 +35,7 @@
     "SphericalShoulderTorque", "SphericalShoulderSpringDamper",
 ]
 
-from brim.rider.arms import (
+from symbrim.rider.arms import (
     ArmBase,
     LeftArmBase,
     PinElbowSpringDamper,
@@ -44,7 +44,7 @@
     PinElbowTorque,
     RightArmBase,
 )
-from brim.rider.base_connections import (
+from symbrim.rider.base_connections import (
     HipBase,
     LeftHipBase,
     LeftShoulderBase,
@@ -53,7 +53,7 @@
     SacrumBase,
     ShoulderBase,
 )
-from brim.rider.hip_joints import (
+from symbrim.rider.hip_joints import (
     PinLeftHip,
     PinRightHip,
     SphericalHipSpringDamper,
@@ -61,7 +61,7 @@
     SphericalLeftHip,
     SphericalRightHip,
 )
-from brim.rider.legs import (
+from symbrim.rider.legs import (
     LeftLegBase,
     LegBase,
     RightLegBase,
@@ -70,11 +70,11 @@
     TwoPinStickLeftLeg,
     TwoPinStickRightLeg,
 )
-from brim.rider.pelvis import PelvisBase, PlanarPelvis
-from brim.rider.rider import Rider
-from brim.rider.rider_lean import RiderLean, RiderLeanConnection
-from brim.rider.sacrums import FixedSacrum
-from brim.rider.shoulder_joints import (
+from symbrim.rider.pelvis import PelvisBase, PlanarPelvis
+from symbrim.rider.rider import Rider
+from symbrim.rider.rider_lean import RiderLean, RiderLeanConnection
+from symbrim.rider.sacrums import FixedSacrum
+from symbrim.rider.shoulder_joints import (
     FlexAddLeftShoulder,
     FlexAddRightShoulder,
     FlexRotLeftShoulder,
@@ -84,4 +84,4 @@
     SphericalShoulderSpringDamper,
     SphericalShoulderTorque,
 )
-from brim.rider.torso import PlanarTorso, TorsoBase
+from symbrim.rider.torso import PlanarTorso, TorsoBase
diff --git a/src/brim/rider/arms.py b/src/symbrim/rider/arms.py
similarity index 98%
rename from src/brim/rider/arms.py
rename to src/symbrim/rider/arms.py
index 95a753b7..9ab1ecd7 100644
--- a/src/brim/rider/arms.py
+++ b/src/symbrim/rider/arms.py
@@ -16,17 +16,17 @@
     dynamicsymbols,
 )
 
-from brim.core import LoadGroupBase, ModelBase
+from symbrim.core import LoadGroupBase, ModelBase
 
 with contextlib.suppress(ImportError):
-    from brim.utilities.parametrize import get_inertia_vals_from_yeadon
+    from symbrim.utilities.parametrize import get_inertia_vals_from_yeadon
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["ArmBase", "LeftArmBase", "RightArmBase", "PinElbowStickLeftArm",
            "PinElbowStickRightArm", "PinElbowTorque", "PinElbowSpringDamper"]
diff --git a/src/brim/rider/base_connections.py b/src/symbrim/rider/base_connections.py
similarity index 88%
rename from src/brim/rider/base_connections.py
rename to src/symbrim/rider/base_connections.py
index 32514aa7..ebddfb5e 100644
--- a/src/brim/rider/base_connections.py
+++ b/src/symbrim/rider/base_connections.py
@@ -3,16 +3,16 @@
 
 from typing import TYPE_CHECKING
 
-from brim.core import ConnectionBase, ModelRequirement
-from brim.rider.arms import ArmBase, LeftArmBase, RightArmBase
-from brim.rider.legs import LeftLegBase, LegBase, RightLegBase
-from brim.rider.pelvis import PelvisBase
-from brim.rider.torso import TorsoBase
+from symbrim.core import ConnectionBase, ModelRequirement
+from symbrim.rider.arms import ArmBase, LeftArmBase, RightArmBase
+from symbrim.rider.legs import LeftLegBase, LegBase, RightLegBase
+from symbrim.rider.pelvis import PelvisBase
+from symbrim.rider.torso import TorsoBase
 
 if TYPE_CHECKING:
     import contextlib
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["SacrumBase", "ShoulderBase", "LeftShoulderBase", "RightShoulderBase",
            "HipBase", "LeftHipBase", "RightHipBase"]
diff --git a/src/brim/rider/hip_joints.py b/src/symbrim/rider/hip_joints.py
similarity index 98%
rename from src/brim/rider/hip_joints.py
rename to src/symbrim/rider/hip_joints.py
index 2b4e5c71..36110ec0 100644
--- a/src/brim/rider/hip_joints.py
+++ b/src/symbrim/rider/hip_joints.py
@@ -10,8 +10,8 @@
     dynamicsymbols,
 )
 
-from brim.core import LoadGroupBase
-from brim.rider.base_connections import LeftHipBase, RightHipBase
+from symbrim.core import LoadGroupBase
+from symbrim.rider.base_connections import LeftHipBase, RightHipBase
 
 __all__ = ["SphericalLeftHip", "SphericalRightHip", "PinRightHip", "PinLeftHip",
            "SphericalHipTorque", "SphericalHipSpringDamper"]
diff --git a/src/brim/rider/legs.py b/src/symbrim/rider/legs.py
similarity index 98%
rename from src/brim/rider/legs.py
rename to src/symbrim/rider/legs.py
index 17e339ed..9154135e 100644
--- a/src/brim/rider/legs.py
+++ b/src/symbrim/rider/legs.py
@@ -16,20 +16,20 @@
     dynamicsymbols,
 )
 
-from brim.core import LoadGroupBase, ModelBase
+from symbrim.core import LoadGroupBase, ModelBase
 
 with contextlib.suppress(ImportError):
     import numpy as np
     from yeadon.inertia import rotate_inertia
 
-    from brim.utilities.parametrize import get_inertia_vals_from_yeadon
+    from symbrim.utilities.parametrize import get_inertia_vals_from_yeadon
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["LegBase", "LeftLegBase", "RightLegBase", "TwoPinStickLeftLeg",
            "TwoPinStickRightLeg", "TwoPinLegTorque", "TwoPinLegSpringDamper"]
diff --git a/src/brim/rider/pelvis.py b/src/symbrim/rider/pelvis.py
similarity index 95%
rename from src/brim/rider/pelvis.py
rename to src/symbrim/rider/pelvis.py
index 0a2a45ad..6979b0af 100644
--- a/src/brim/rider/pelvis.py
+++ b/src/symbrim/rider/pelvis.py
@@ -7,19 +7,19 @@
 from sympy import Symbol
 from sympy.physics.mechanics import Point
 
-from brim.core import ModelBase, NewtonianBodyMixin
+from symbrim.core import ModelBase, NewtonianBodyMixin
 
 with contextlib.suppress(ImportError):
     import numpy as np
 
-    from brim.utilities.parametrize import get_inertia_vals_from_yeadon
+    from symbrim.utilities.parametrize import get_inertia_vals_from_yeadon
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["PelvisBase", "PlanarPelvis"]
 
diff --git a/src/brim/rider/rider.py b/src/symbrim/rider/rider.py
similarity index 91%
rename from src/brim/rider/rider.py
rename to src/symbrim/rider/rider.py
index 3e88124c..61840916 100644
--- a/src/brim/rider/rider.py
+++ b/src/symbrim/rider/rider.py
@@ -3,18 +3,18 @@
 
 from sympy.physics.mechanics import System
 
-from brim.core import ConnectionRequirement, ModelBase, ModelRequirement
-from brim.rider.arms import LeftArmBase, RightArmBase
-from brim.rider.base_connections import (
+from symbrim.core import ConnectionRequirement, ModelBase, ModelRequirement
+from symbrim.rider.arms import LeftArmBase, RightArmBase
+from symbrim.rider.base_connections import (
     LeftHipBase,
     LeftShoulderBase,
     RightHipBase,
     RightShoulderBase,
     SacrumBase,
 )
-from brim.rider.legs import LeftLegBase, RightLegBase
-from brim.rider.pelvis import PelvisBase
-from brim.rider.torso import TorsoBase
+from symbrim.rider.legs import LeftLegBase, RightLegBase
+from symbrim.rider.pelvis import PelvisBase
+from symbrim.rider.torso import TorsoBase
 
 __all__ = ["Rider"]
 
diff --git a/src/brim/rider/rider_lean.py b/src/symbrim/rider/rider_lean.py
similarity index 97%
rename from src/brim/rider/rider_lean.py
rename to src/symbrim/rider/rider_lean.py
index f5a491a5..da6b271c 100644
--- a/src/brim/rider/rider_lean.py
+++ b/src/symbrim/rider/rider_lean.py
@@ -4,8 +4,8 @@
 from sympy import Matrix, Symbol
 from sympy.physics.mechanics import PinJoint, Point, System, Vector, dynamicsymbols
 
-from brim.bicycle.rear_frames import RearFrameBase
-from brim.core import ConnectionBase, ModelBase, ModelRequirement, NewtonianBodyMixin
+from symbrim.bicycle.rear_frames import RearFrameBase
+from symbrim.core import ConnectionBase, ModelBase, ModelRequirement, NewtonianBodyMixin
 
 __all__ = ["RiderLean", "RiderLeanConnection"]
 
diff --git a/src/brim/rider/sacrums.py b/src/symbrim/rider/sacrums.py
similarity index 97%
rename from src/brim/rider/sacrums.py
rename to src/symbrim/rider/sacrums.py
index df09ae1f..0b134260 100644
--- a/src/brim/rider/sacrums.py
+++ b/src/symbrim/rider/sacrums.py
@@ -7,7 +7,7 @@
 from sympy import Symbol
 from sympy.physics.mechanics import System, Vector, WeldJoint
 
-from brim.rider.base_connections import SacrumBase
+from symbrim.rider.base_connections import SacrumBase
 
 with contextlib.suppress(ImportError):
     import numpy as np
diff --git a/src/brim/rider/shoulder_joints.py b/src/symbrim/rider/shoulder_joints.py
similarity index 99%
rename from src/brim/rider/shoulder_joints.py
rename to src/symbrim/rider/shoulder_joints.py
index a8905a41..afd13400 100644
--- a/src/brim/rider/shoulder_joints.py
+++ b/src/symbrim/rider/shoulder_joints.py
@@ -12,8 +12,8 @@
     dynamicsymbols,
 )
 
-from brim.core import Attachment, LoadGroupBase
-from brim.rider.base_connections import LeftShoulderBase, RightShoulderBase
+from symbrim.core import Attachment, LoadGroupBase
+from symbrim.rider.base_connections import LeftShoulderBase, RightShoulderBase
 
 __all__ = ["SphericalLeftShoulder", "SphericalRightShoulder",
            "FlexAddLeftShoulder", "FlexAddRightShoulder",
diff --git a/src/brim/rider/torso.py b/src/symbrim/rider/torso.py
similarity index 96%
rename from src/brim/rider/torso.py
rename to src/symbrim/rider/torso.py
index 1ad25267..af3cb396 100644
--- a/src/brim/rider/torso.py
+++ b/src/symbrim/rider/torso.py
@@ -8,20 +8,20 @@
 from sympy import Symbol
 from sympy.physics.mechanics import Point, ReferenceFrame
 
-from brim.core import ModelBase, NewtonianBodyMixin
+from symbrim.core import ModelBase, NewtonianBodyMixin
 
 with contextlib.suppress(ImportError):
     import numpy as np
     from yeadon.inertia import rotate_inertia
 
-    from brim.utilities.parametrize import get_inertia_vals_from_yeadon
+    from symbrim.utilities.parametrize import get_inertia_vals_from_yeadon
 
     if TYPE_CHECKING:
         from bicycleparameters import Bicycle
 
 if TYPE_CHECKING:
     with contextlib.suppress(ImportError):
-        from brim.utilities.plotting import PlotModel
+        from symbrim.utilities.plotting import PlotModel
 
 __all__ = ["TorsoBase", "PlanarTorso"]
 
diff --git a/src/symbrim/utilities/__init__.py b/src/symbrim/utilities/__init__.py
new file mode 100644
index 00000000..7beea8da
--- /dev/null
+++ b/src/symbrim/utilities/__init__.py
@@ -0,0 +1,1 @@
+"""Utilities for SymBRiM."""
diff --git a/src/brim/utilities/benchmarking.py b/src/symbrim/utilities/benchmarking.py
similarity index 100%
rename from src/brim/utilities/benchmarking.py
rename to src/symbrim/utilities/benchmarking.py
diff --git a/src/brim/utilities/parametrize.py b/src/symbrim/utilities/parametrize.py
similarity index 94%
rename from src/brim/utilities/parametrize.py
rename to src/symbrim/utilities/parametrize.py
index c10fc92f..b1514b9e 100644
--- a/src/brim/utilities/parametrize.py
+++ b/src/symbrim/utilities/parametrize.py
@@ -57,8 +57,8 @@ def get_inertia_vals_from_yeadon(body: RigidBody, inertia: np.matrix
     Explanation
     -----------
     While yeadon has defined the z axis as vertical up and the y axis as pointing to the
-    back of the rider. The human in brim generally defines the z axis as pointing down
-    and the x axis point to the front.
+    back of the rider. The human in SymBRiM generally defines the z axis as pointing
+    down and the x axis point to the front.
     """
     rot_mat = np.matrix([[0.0, -1.0, 0.0],
                          [-1.0, 0.0, 0.0],
diff --git a/src/brim/utilities/plotting.py b/src/symbrim/utilities/plotting.py
similarity index 90%
rename from src/brim/utilities/plotting.py
rename to src/symbrim/utilities/plotting.py
index cad5bb64..f03db107 100644
--- a/src/brim/utilities/plotting.py
+++ b/src/symbrim/utilities/plotting.py
@@ -15,20 +15,20 @@
 from symmeplot.matplotlib.plot_base import MplPlotBase
 from typing_extensions import Self
 
-from brim.core import ConnectionBase, LoadGroupBase, ModelBase
+from symbrim.core import ConnectionBase, LoadGroupBase, ModelBase
 
 if TYPE_CHECKING:
     from mpl_toolkits.mplot3d.axes3d import Axes3D
     from sympy import Expr
     from sympy.physics.mechanics import Point, ReferenceFrame
 
-    from brim.core.base_classes import BrimBase
+    from symbrim.core.base_classes import BrimBase
 
 __all__ = ["Plotter", "PlotBrimMixin", "PlotModel", "PlotConnection", "PlotLoadGroup"]
 
 
 class Plotter(Scene3D):
-    """Plotter for models created by BRiM using SymMePlot."""
+    """Plotter for models created by SymBRiM using SymMePlot."""
 
     @classmethod
     def from_model(cls, model: ModelBase, ax: Axes3D | None = None,
@@ -59,7 +59,8 @@ def add_model(self, model: ModelBase, **kwargs: dict[str, object]) -> PlotModel:
         model : ModelBase
             Model to add.
         **kwargs
-            Keyword arguments are passed to :class:`brim.utilities.plotting.PlotModel`.
+            Keyword arguments are passed to
+            :class:`symbrim.utilities.plotting.PlotModel`.
         """
         obj = PlotModel(self.inertial_frame, self.zero_point, model, **kwargs)
         self.add_plot_object(obj)
@@ -76,7 +77,7 @@ def add_connection(
             Connection to add.
         **kwargs
             Keyword arguments are passed to
-            :class:`brim.utilities.plotting.PlotConnection`.
+            :class:`symbrim.utilities.plotting.PlotConnection`.
         """
         obj = PlotConnection(self.inertial_frame, self.zero_point, connection, **kwargs)
         self.add_plot_object(obj)
@@ -93,7 +94,7 @@ def add_load_group(
             Load group to add.
         **kwargs :
             Keyword arguments are passed to
-            :class:`brim.utilities.plotting.PlotLoadGroup`.
+            :class:`symbrim.utilities.plotting.PlotLoadGroup`.
         """
         obj = PlotLoadGroup(self.inertial_frame, self.zero_point, load_group, **kwargs)
         self.add_plot_object(obj)
@@ -101,7 +102,7 @@ def add_load_group(
 
 
 class PlotBrimMixin:
-    """Mixin class for plotting BRiM objects."""
+    """Mixin class for plotting SymBRiM objects."""
 
     _PlotPoint: type[MplPlotBase] = Scene3D._PlotPoint
     _PlotLine: type[MplPlotBase] = Scene3D._PlotLine
@@ -120,7 +121,7 @@ class PlotBrimMixin:
 
     def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
                  brim_object: BrimBase) -> None:
-        """Initialize a plot object of the BRiM model."""
+        """Initialize a plot object of the SymBRiM model."""
         super().__init__(inertial_frame, zero_point, brim_object, brim_object.name)
         brim_object.set_plot_objects(self)
 
@@ -143,7 +144,7 @@ def annot_coords(self) -> np.ndarray[np.float64]:
 
 
 class PlotModel(PlotBrimMixin, MplPlotBase):
-    """Plot object of a BRiM model."""
+    """Plot object of a SymBRiM model."""
 
     def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
                  model: ModelBase, plot_load_groups: bool = True) -> None:
@@ -156,7 +157,7 @@ def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
         zero_point : Point
             The absolute origin with respect to which all objects will be positioned.
         model : ModelBase
-            The BRiM model, which is being plotted.
+            The SymBRiM model, which is being plotted.
         plot_load_groups : bool, optional
             Whether to plot the load groups, by default True.
         """
@@ -176,7 +177,7 @@ def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
 
     @property
     def model(self) -> ModelBase:
-        """The BRiM model, which is being plotted."""
+        """The SymBRiM model, which is being plotted."""
         return self._model
 
     @model.setter
@@ -205,7 +206,7 @@ def load_groups(self) -> tuple[PlotLoadGroup, ...]:
 
 
 class PlotConnection(PlotBrimMixin, MplPlotBase):
-    """Plot object of a BRiM connection."""
+    """Plot object of a SymBRiM connection."""
 
     def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
                  connection: ConnectionBase, plot_submodels: bool = True,
@@ -219,7 +220,7 @@ def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
         zero_point : Point
             The absolute origin with respect to which all objects will be positioned.
         connection : ConnectionBase
-            The BRiM connection, which is being plotted.
+            The SymBRiM connection, which is being plotted.
         plot_submodels : bool, optional
             Whether to plot the submodels, by default True.
         plot_load_groups : bool, optional
@@ -238,7 +239,7 @@ def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
 
     @property
     def connection(self) -> ConnectionBase:
-        """The BRiM connection, which is being plotted."""
+        """The SymBRiM connection, which is being plotted."""
         return self._connection
 
     @connection.setter
@@ -261,7 +262,7 @@ def load_groups(self) -> tuple[PlotLoadGroup, ...]:
 
 
 class PlotLoadGroup(PlotBrimMixin, MplPlotBase):
-    """Plot object of a BRiM load group."""
+    """Plot object of a SymBRiM load group."""
 
     def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
                  load_group: LoadGroupBase) -> None:
@@ -274,14 +275,14 @@ def __init__(self, inertial_frame: ReferenceFrame, zero_point: Point,
         zero_point : Point
             The absolute origin with respect to which all objects will be positioned.
         load_group : LoadGroupBase
-            The BRiM load group, which is being plotted.
+            The SymBRiM load group, which is being plotted.
         """
         super().__init__(inertial_frame, zero_point, load_group)
         self.load_group = load_group
 
     @property
     def load_group(self) -> LoadGroupBase:
-        """The BRiM load group, which is being plotted."""
+        """The SymBRiM load group, which is being plotted."""
         return self._load_group
 
     @load_group.setter
diff --git a/src/brim/utilities/utilities.py b/src/symbrim/utilities/utilities.py
similarity index 98%
rename from src/brim/utilities/utilities.py
rename to src/symbrim/utilities/utilities.py
index c75becab..b130d85f 100644
--- a/src/brim/utilities/utilities.py
+++ b/src/symbrim/utilities/utilities.py
@@ -1,4 +1,4 @@
-"""Utilities for brim."""
+"""Utilities for SymBRiM."""
 from __future__ import annotations
 
 import numpy as np


Test patch:
diff --git a/benchmarks/test_rolling_disc.py b/benchmarks/test_rolling_disc.py
index 45ec76a9..2a620fd8 100644
--- a/benchmarks/test_rolling_disc.py
+++ b/benchmarks/test_rolling_disc.py
@@ -12,9 +12,9 @@
     inertia,
 )
 
-from brim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
-from brim.other.rolling_disc import RollingDisc
-from brim.utilities.benchmarking import benchmark
+from symbrim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
+from symbrim.other.rolling_disc import RollingDisc
+from symbrim.utilities.benchmarking import benchmark
 
 ROUNDS = 10
 
@@ -173,7 +173,7 @@ def rolling_disc_comparison():
           f"{count_ops(eoms)}\t\t{count_ops(cse(eoms))}")
     kane = create_rolling_disc_brim()
     eoms = kane._form_eoms()
-    print(f"BRiM\t\t\t\t\t\t\t\t\t\t\t"  # noqa: T201
+    print(f"SymBRiM\t\t\t\t\t\t\t\t\t\t\t"  # noqa: T201
           f"{count_ops(eoms)}\t\t{count_ops(cse(eoms))}")
 
 
diff --git a/benchmarks/test_whipple_bicycle.py b/benchmarks/test_whipple_bicycle.py
index 726f2039..67077157 100644
--- a/benchmarks/test_whipple_bicycle.py
+++ b/benchmarks/test_whipple_bicycle.py
@@ -10,7 +10,7 @@
     inertia,
 )
 
-from brim.bicycle import (
+from symbrim.bicycle import (
     FlatGround,
     KnifeEdgeWheel,
     NonHolonomicTire,
@@ -18,7 +18,7 @@
     RigidRearFrame,
     WhippleBicycleMoore,
 )
-from brim.utilities.benchmarking import benchmark
+from symbrim.utilities.benchmarking import benchmark
 
 ROUNDS = 3
 
diff --git a/src/brim/utilities/testing.py b/src/symbrim/utilities/testing.py
similarity index 97%
rename from src/brim/utilities/testing.py
rename to src/symbrim/utilities/testing.py
index 14ab3daa..bfd74a54 100644
--- a/src/brim/utilities/testing.py
+++ b/src/symbrim/utilities/testing.py
@@ -7,7 +7,7 @@
 
 from sympy.physics.mechanics import System
 
-from brim.core import ConnectionBase, ConnectionRequirement, LoadGroupBase, ModelBase
+from symbrim.core import ConnectionBase, ConnectionRequirement, LoadGroupBase, ModelBase
 
 if TYPE_CHECKING:
     from collections.abc import Generator
diff --git a/tests/bicycle/test_front_frames.py b/tests/bicycle/test_front_frames.py
index 5a0e8737..648a5a3b 100644
--- a/tests/bicycle/test_front_frames.py
+++ b/tests/bicycle/test_front_frames.py
@@ -1,19 +1,19 @@
 import pytest
 from sympy.physics.mechanics import Point, System, Vector
 
-from brim.bicycle.front_frames import (
+from symbrim.bicycle.front_frames import (
     RigidFrontFrame,
     RigidFrontFrameMoore,
     SuspensionRigidFrontFrame,
     SuspensionRigidFrontFrameMoore,
 )
-from brim.core import Attachment, Hub
-from brim.utilities.testing import _test_descriptions
+from symbrim.core import Attachment, Hub
+from symbrim.utilities.testing import _test_descriptions
 
 try:
     from symmeplot.matplotlib import PlotBody, PlotLine
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/bicycle/test_grounds.py b/tests/bicycle/test_grounds.py
index f25dad08..8ae20afd 100644
--- a/tests/bicycle/test_grounds.py
+++ b/tests/bicycle/test_grounds.py
@@ -4,12 +4,12 @@
 from sympy import Symbol
 from sympy.physics.mechanics import System, Vector
 
-from brim.bicycle.grounds import FlatGround
+from symbrim.bicycle.grounds import FlatGround
 
 try:
     from symmeplot.matplotlib import PlotFrame
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/bicycle/test_pedals.py b/tests/bicycle/test_pedals.py
index 57e37e8f..2a08ca44 100644
--- a/tests/bicycle/test_pedals.py
+++ b/tests/bicycle/test_pedals.py
@@ -3,13 +3,13 @@
 import pytest
 from sympy.physics.mechanics import Point, ReferenceFrame, Vector
 
-from brim.bicycle import CranksBase, MasslessCranks
-from brim.utilities.testing import _test_descriptions
+from symbrim.bicycle import CranksBase, MasslessCranks
+from symbrim.utilities.testing import _test_descriptions
 
 try:
     from symmeplot.matplotlib import PlotLine
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/bicycle/test_rear_frames.py b/tests/bicycle/test_rear_frames.py
index ac9d954a..8c75c779 100644
--- a/tests/bicycle/test_rear_frames.py
+++ b/tests/bicycle/test_rear_frames.py
@@ -1,14 +1,14 @@
 import pytest
 from sympy.physics.mechanics import Point, System
 
-from brim.bicycle.rear_frames import RigidRearFrame, RigidRearFrameMoore
-from brim.core import Attachment, Hub
-from brim.utilities.testing import _test_descriptions
+from symbrim.bicycle.rear_frames import RigidRearFrame, RigidRearFrameMoore
+from symbrim.core import Attachment, Hub
+from symbrim.utilities.testing import _test_descriptions
 
 try:
     from symmeplot.matplotlib import PlotBody, PlotLine
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/bicycle/test_stationary_bicycle.py b/tests/bicycle/test_stationary_bicycle.py
index 84859790..5a8f1990 100644
--- a/tests/bicycle/test_stationary_bicycle.py
+++ b/tests/bicycle/test_stationary_bicycle.py
@@ -1,6 +1,6 @@
 import pytest
 
-from brim.bicycle import (
+from symbrim.bicycle import (
     KnifeEdgeWheel,
     MasslessCranks,
     RigidFrontFrame,
diff --git a/tests/bicycle/test_tires.py b/tests/bicycle/test_tires.py
index e752c9cb..2a0f479c 100644
--- a/tests/bicycle/test_tires.py
+++ b/tests/bicycle/test_tires.py
@@ -4,12 +4,12 @@
 from sympy import Matrix, S, cos, linear_eq_to_matrix, pi, simplify, sin, symbols
 from sympy.physics.mechanics import ReferenceFrame, System, cross, dynamicsymbols
 
-from brim.bicycle.grounds import FlatGround, GroundBase
-from brim.bicycle.tires import InContactTire, NonHolonomicTire, TireBase
-from brim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
-from brim.other.rolling_disc import RollingDisc
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
-from brim.utilities.utilities import check_zero
+from symbrim.bicycle.grounds import FlatGround, GroundBase
+from symbrim.bicycle.tires import InContactTire, NonHolonomicTire, TireBase
+from symbrim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel, WheelBase
+from symbrim.other.rolling_disc import RollingDisc
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.utilities.utilities import check_zero
 
 
 class MyTire(TireBase):
diff --git a/tests/bicycle/test_wheels.py b/tests/bicycle/test_wheels.py
index 7a12902d..22b05d30 100644
--- a/tests/bicycle/test_wheels.py
+++ b/tests/bicycle/test_wheels.py
@@ -2,13 +2,13 @@
 
 import pytest
 
-from brim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel
+from symbrim.bicycle.wheels import KnifeEdgeWheel, ToroidalWheel
 
 try:
     from symmeplot.matplotlib import PlotBody
     from symmeplot.matplotlib.artists import Circle3D
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/bicycle/test_whipple_bicycle.py b/tests/bicycle/test_whipple_bicycle.py
index dd9985bc..9f3150b1 100644
--- a/tests/bicycle/test_whipple_bicycle.py
+++ b/tests/bicycle/test_whipple_bicycle.py
@@ -7,15 +7,15 @@
 from sympy import Matrix, Symbol, count_ops, lambdify, linear_eq_to_matrix
 from sympy.physics.mechanics import dynamicsymbols, msubs
 
-from brim import (
+from symbrim import (
     FlatGround,
     KnifeEdgeWheel,
     NonHolonomicTire,
     RigidFrontFrame,
     RigidRearFrame,
 )
-from brim.bicycle import MasslessCranks, WhippleBicycle, WhippleBicycleMoore
-from brim.utilities.testing import ignore_point_warnings
+from symbrim.bicycle import MasslessCranks, WhippleBicycle, WhippleBicycleMoore
+from symbrim.utilities.testing import ignore_point_warnings
 
 if TYPE_CHECKING:
     from sympy import Basic
diff --git a/tests/brim/test_bicycle_rider.py b/tests/brim/test_bicycle_rider.py
index 415f7683..d800b78a 100644
--- a/tests/brim/test_bicycle_rider.py
+++ b/tests/brim/test_bicycle_rider.py
@@ -2,7 +2,7 @@
 
 import pytest
 
-from brim.bicycle import (
+from symbrim.bicycle import (
     FlatGround,
     KnifeEdgeWheel,
     MasslessCranks,
@@ -12,13 +12,13 @@
     StationaryBicycle,
     WhippleBicycle,
 )
-from brim.brim import (
+from symbrim.brim import (
     BicycleRider,
     HolonomicHandGrips,
     HolonomicPedals,
     SideLeanSeat,
 )
-from brim.rider import (
+from symbrim.rider import (
     FixedSacrum,
     PinElbowStickLeftArm,
     PinElbowStickRightArm,
@@ -32,7 +32,7 @@
     TwoPinStickLeftLeg,
     TwoPinStickRightLeg,
 )
-from brim.utilities.testing import ignore_point_warnings
+from symbrim.utilities.testing import ignore_point_warnings
 
 
 class TestCompleteBicycleRider:
diff --git a/tests/brim/test_hand_grips.py b/tests/brim/test_hand_grips.py
index c718b156..9e859dfb 100644
--- a/tests/brim/test_hand_grips.py
+++ b/tests/brim/test_hand_grips.py
@@ -4,11 +4,11 @@
 from sympy import Symbol
 from sympy.physics.mechanics import Vector, dynamicsymbols
 
-from brim.bicycle.front_frames import RigidFrontFrameMoore
-from brim.brim.base_connections import HandGripsBase
-from brim.brim.hand_grips import HolonomicHandGrips, SpringDamperHandGrips
-from brim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.bicycle.front_frames import RigidFrontFrameMoore
+from symbrim.brim.base_connections import HandGripsBase
+from symbrim.brim.hand_grips import HolonomicHandGrips, SpringDamperHandGrips
+from symbrim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
 
 
 @pytest.mark.parametrize("hand_grip_cls", [HolonomicHandGrips, SpringDamperHandGrips])
diff --git a/tests/brim/test_pedals.py b/tests/brim/test_pedals.py
index 7b58830b..99fbf5a1 100644
--- a/tests/brim/test_pedals.py
+++ b/tests/brim/test_pedals.py
@@ -4,11 +4,11 @@
 from sympy import Symbol
 from sympy.physics.mechanics import Vector, dynamicsymbols
 
-from brim.bicycle.cranks import MasslessCranks
-from brim.brim.base_connections import PedalsBase
-from brim.brim.pedals import HolonomicPedals, SpringDamperPedals
-from brim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.bicycle.cranks import MasslessCranks
+from symbrim.brim.base_connections import PedalsBase
+from symbrim.brim.pedals import HolonomicPedals, SpringDamperPedals
+from symbrim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
 
 
 @pytest.mark.parametrize("pedal_cls", [HolonomicPedals, SpringDamperPedals])
diff --git a/tests/brim/test_seats.py b/tests/brim/test_seats.py
index a1da861f..b0c962cd 100644
--- a/tests/brim/test_seats.py
+++ b/tests/brim/test_seats.py
@@ -4,17 +4,17 @@
 from sympy import Matrix, cos, eye, simplify, sin, zeros
 from sympy.physics.mechanics import ReferenceFrame
 
-from brim.bicycle.rear_frames import RigidRearFrameMoore
-from brim.brim.base_connections import SeatBase
-from brim.brim.seats import (
+from symbrim.bicycle.rear_frames import RigidRearFrameMoore
+from symbrim.brim.base_connections import SeatBase
+from symbrim.brim.seats import (
     FixedSeat,
     SideLeanSeat,
     SideLeanSeatSpringDamper,
     SideLeanSeatTorque,
 )
-from brim.rider.pelvis import PlanarPelvis
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
-from brim.utilities.utilities import check_zero
+from symbrim.rider.pelvis import PlanarPelvis
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.utilities.utilities import check_zero
 
 
 @pytest.mark.parametrize("seat_cls", [FixedSeat, SideLeanSeat])
diff --git a/tests/core/test_attachment.py b/tests/core/test_attachment.py
index 80afc52d..4d53aec5 100644
--- a/tests/core/test_attachment.py
+++ b/tests/core/test_attachment.py
@@ -8,7 +8,7 @@
     Vector,
 )
 
-from brim.core.attachment import Attachment, Hub, MasslessBody
+from symbrim.core.attachment import Attachment, Hub, MasslessBody
 
 
 class TestMasslessBody:
diff --git a/tests/core/test_auxiliary.py b/tests/core/test_auxiliary.py
index 3555e7b5..e7cc11d7 100644
--- a/tests/core/test_auxiliary.py
+++ b/tests/core/test_auxiliary.py
@@ -9,7 +9,7 @@
     dynamicsymbols,
 )
 
-from brim.core.auxiliary import AuxiliaryData, AuxiliaryDataHandler
+from symbrim.core.auxiliary import AuxiliaryData, AuxiliaryDataHandler
 
 frame = ReferenceFrame("frame")
 point = Point("point")
diff --git a/tests/core/test_base_classes.py b/tests/core/test_base_classes.py
index da7e3cc2..ac2902cc 100644
--- a/tests/core/test_base_classes.py
+++ b/tests/core/test_base_classes.py
@@ -4,15 +4,15 @@
 from sympy import S, Symbol
 from sympy.physics.mechanics import System, Torque, dynamicsymbols
 
-from brim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
-from brim.core import (
+from symbrim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
+from symbrim.core import (
     LoadGroupBase,
     ModelBase,
     ModelRequirement,
     Registry,
     set_default_convention,
 )
-from brim.other.rolling_disc import RollingDisc
+from symbrim.other.rolling_disc import RollingDisc
 
 
 class MyLoad(LoadGroupBase):
diff --git a/tests/core/test_mixins.py b/tests/core/test_mixins.py
index 0d237357..148a796a 100644
--- a/tests/core/test_mixins.py
+++ b/tests/core/test_mixins.py
@@ -3,13 +3,13 @@
 import pytest
 from sympy.physics.mechanics import RigidBody
 
-from brim.core.base_classes import ModelBase
-from brim.core.mixins import NewtonianBodyMixin
+from symbrim.core.base_classes import ModelBase
+from symbrim.core.mixins import NewtonianBodyMixin
 
 try:
     from symmeplot.matplotlib import PlotBody
 
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/core/test_registry.py b/tests/core/test_registry.py
index a59ca8ec..f5a79c60 100644
--- a/tests/core/test_registry.py
+++ b/tests/core/test_registry.py
@@ -1,16 +1,16 @@
 import pytest
 
-from brim.bicycle import (
+from symbrim.bicycle import (
     KnifeEdgeWheel,
     NonHolonomicTire,
     TireBase,
     ToroidalWheel,
     WheelBase,
 )
-from brim.core import LoadGroupBase, Registry
-from brim.core.requirement import ConnectionRequirement, ModelRequirement
-from brim.other.rolling_disc import RollingDisc
-from brim.rider import PinElbowSpringDamper, PinElbowStickLeftArm, PinElbowTorque
+from symbrim.core import LoadGroupBase, Registry
+from symbrim.core.requirement import ConnectionRequirement, ModelRequirement
+from symbrim.other.rolling_disc import RollingDisc
+from symbrim.rider import PinElbowSpringDamper, PinElbowStickLeftArm, PinElbowTorque
 
 
 class TestRegistry:
diff --git a/tests/core/test_requirement.py b/tests/core/test_requirement.py
index 61773ce9..0d7b971c 100644
--- a/tests/core/test_requirement.py
+++ b/tests/core/test_requirement.py
@@ -4,7 +4,7 @@
 
 import pytest
 
-from brim.core import ConnectionRequirement, ModelBase, ModelRequirement
+from symbrim.core import ConnectionRequirement, ModelBase, ModelRequirement
 
 
 class MyModel(ModelBase):
diff --git a/tests/core/test_singleton.py b/tests/core/test_singleton.py
index 7e8993dc..d2d7bcec 100644
--- a/tests/core/test_singleton.py
+++ b/tests/core/test_singleton.py
@@ -1,6 +1,6 @@
 import pytest
 
-from brim.core import Singleton
+from symbrim.core import Singleton
 
 
 class TestSingleton:
diff --git a/tests/other/test_rolling_disc.py b/tests/other/test_rolling_disc.py
index cd2de662..07a9ab55 100644
--- a/tests/other/test_rolling_disc.py
+++ b/tests/other/test_rolling_disc.py
@@ -5,8 +5,8 @@
 from sympy import Symbol, lambdify
 from sympy.physics.mechanics import dynamicsymbols
 
-from brim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
-from brim.other.rolling_disc import RollingDisc, rolling_disc_manual
+from symbrim.bicycle import FlatGround, KnifeEdgeWheel, NonHolonomicTire
+from symbrim.other.rolling_disc import RollingDisc, rolling_disc_manual
 
 
 class TestRollingDisc:
@@ -88,7 +88,7 @@ def _plot_rolling_disc_brim(self) -> None:
         # These are not official dependencies
         import matplotlib.pyplot as plt
 
-        from brim.utilities.plotting import Plotter
+        from symbrim.utilities.plotting import Plotter
         fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
         plotter = Plotter.from_model(self.rolling_disc, ax=ax)
         plotter.lambdify_system((self.system.q, self.system.u, self.p))
diff --git a/tests/rider/test_arms.py b/tests/rider/test_arms.py
index 5a0720f1..c9605f83 100644
--- a/tests/rider/test_arms.py
+++ b/tests/rider/test_arms.py
@@ -4,7 +4,7 @@
 from sympy import simplify, zeros
 from sympy.physics.mechanics import Point, ReferenceFrame, RigidBody
 
-from brim.rider.arms import (
+from symbrim.rider.arms import (
     LeftArmBase,
     PinElbowSpringDamper,
     PinElbowStickLeftArm,
@@ -12,12 +12,12 @@
     PinElbowTorque,
     RightArmBase,
 )
-from brim.rider.legs import TwoPinStickLeftLeg
-from brim.utilities.testing import _test_descriptions
-from brim.utilities.utilities import check_zero
+from symbrim.rider.legs import TwoPinStickLeftLeg
+from symbrim.utilities.testing import _test_descriptions
+from symbrim.utilities.utilities import check_zero
 
 try:
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/rider/test_hip_joints.py b/tests/rider/test_hip_joints.py
index b70aad0a..51e80e3b 100644
--- a/tests/rider/test_hip_joints.py
+++ b/tests/rider/test_hip_joints.py
@@ -2,8 +2,8 @@
 
 import pytest
 
-from brim.rider.base_connections import LeftHipBase, RightHipBase
-from brim.rider.hip_joints import (
+from symbrim.rider.base_connections import LeftHipBase, RightHipBase
+from symbrim.rider.hip_joints import (
     PinLeftHip,
     PinRightHip,
     SphericalHipSpringDamper,
@@ -11,10 +11,10 @@
     SphericalLeftHip,
     SphericalRightHip,
 )
-from brim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
-from brim.rider.pelvis import PlanarPelvis
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
-from brim.utilities.utilities import check_zero
+from symbrim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
+from symbrim.rider.pelvis import PlanarPelvis
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.utilities.utilities import check_zero
 
 
 @pytest.mark.parametrize("hip_cls, leg_cls, base_cls", [
diff --git a/tests/rider/test_legs.py b/tests/rider/test_legs.py
index 8e37c39a..0a3a86af 100644
--- a/tests/rider/test_legs.py
+++ b/tests/rider/test_legs.py
@@ -4,8 +4,8 @@
 from sympy import simplify, zeros
 from sympy.physics.mechanics import Point, ReferenceFrame, RigidBody
 
-from brim.rider.arms import PinElbowStickLeftArm
-from brim.rider.legs import (
+from symbrim.rider.arms import PinElbowStickLeftArm
+from symbrim.rider.legs import (
     LeftLegBase,
     RightLegBase,
     TwoPinLegSpringDamper,
@@ -13,11 +13,11 @@
     TwoPinStickLeftLeg,
     TwoPinStickRightLeg,
 )
-from brim.utilities.testing import _test_descriptions
-from brim.utilities.utilities import check_zero
+from symbrim.utilities.testing import _test_descriptions
+from symbrim.utilities.utilities import check_zero
 
 try:
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/rider/test_pelvis.py b/tests/rider/test_pelvis.py
index 0d49bf9c..2923a628 100644
--- a/tests/rider/test_pelvis.py
+++ b/tests/rider/test_pelvis.py
@@ -3,11 +3,11 @@
 import pytest
 from sympy.physics.mechanics import Point, RigidBody
 
-from brim.rider.pelvis import PelvisBase, PlanarPelvis
-from brim.utilities.testing import _test_descriptions
+from symbrim.rider.pelvis import PelvisBase, PlanarPelvis
+from symbrim.utilities.testing import _test_descriptions
 
 try:
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/rider/test_rider.py b/tests/rider/test_rider.py
index c470425a..f75e9ae8 100644
--- a/tests/rider/test_rider.py
+++ b/tests/rider/test_rider.py
@@ -2,7 +2,7 @@
 
 import pytest
 
-from brim.rider import (
+from symbrim.rider import (
     FixedSacrum,
     PinElbowStickLeftArm,
     PinElbowStickRightArm,
diff --git a/tests/rider/test_rider_lean.py b/tests/rider/test_rider_lean.py
index 42a938d0..ccf566e1 100644
--- a/tests/rider/test_rider_lean.py
+++ b/tests/rider/test_rider_lean.py
@@ -2,9 +2,9 @@
 from sympy import Matrix, Symbol, simplify, sin, zeros
 from sympy.physics.mechanics import Point
 
-from brim.bicycle import RigidRearFrame
-from brim.rider import RiderLean, RiderLeanConnection
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.bicycle import RigidRearFrame
+from symbrim.rider import RiderLean, RiderLeanConnection
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
 
 
 class TestRiderLean:
diff --git a/tests/rider/test_sacrums.py b/tests/rider/test_sacrums.py
index 7b8717e3..e57722a6 100644
--- a/tests/rider/test_sacrums.py
+++ b/tests/rider/test_sacrums.py
@@ -3,14 +3,14 @@
 import pytest
 from sympy import eye
 
-from brim.rider.base_connections import SacrumBase
-from brim.rider.pelvis import PlanarPelvis
-from brim.rider.sacrums import FixedSacrum
-from brim.rider.torso import PlanarTorso
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.rider.base_connections import SacrumBase
+from symbrim.rider.pelvis import PlanarPelvis
+from symbrim.rider.sacrums import FixedSacrum
+from symbrim.rider.torso import PlanarTorso
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
 
 try:
-    from brim.utilities.plotting import PlotConnection
+    from symbrim.utilities.plotting import PlotConnection
 except ImportError:
     PlotConnection = None
 
diff --git a/tests/rider/test_schoulder_joints.py b/tests/rider/test_schoulder_joints.py
index eef87142..1db86036 100644
--- a/tests/rider/test_schoulder_joints.py
+++ b/tests/rider/test_schoulder_joints.py
@@ -2,12 +2,12 @@
 
 import pytest
 
-from brim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
-from brim.rider.base_connections import (
+from symbrim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
+from symbrim.rider.base_connections import (
     LeftShoulderBase,
     RightShoulderBase,
 )
-from brim.rider.shoulder_joints import (
+from symbrim.rider.shoulder_joints import (
     FlexAddLeftShoulder,
     FlexAddRightShoulder,
     FlexRotLeftShoulder,
@@ -17,9 +17,9 @@
     SphericalShoulderSpringDamper,
     SphericalShoulderTorque,
 )
-from brim.rider.torso import PlanarTorso
-from brim.utilities.testing import _test_descriptions, create_model_of_connection
-from brim.utilities.utilities import check_zero
+from symbrim.rider.torso import PlanarTorso
+from symbrim.utilities.testing import _test_descriptions, create_model_of_connection
+from symbrim.utilities.utilities import check_zero
 
 
 @pytest.mark.parametrize("shoulder_cls, arm_cls, base_cls", [
diff --git a/tests/rider/test_torso.py b/tests/rider/test_torso.py
index 884c1abd..4fdacd52 100644
--- a/tests/rider/test_torso.py
+++ b/tests/rider/test_torso.py
@@ -3,11 +3,11 @@
 import pytest
 from sympy.physics.mechanics import Point, RigidBody
 
-from brim.rider.torso import PlanarTorso, TorsoBase
-from brim.utilities.testing import _test_descriptions
+from symbrim.rider.torso import PlanarTorso, TorsoBase
+from symbrim.utilities.testing import _test_descriptions
 
 try:
-    from brim.utilities.plotting import PlotModel
+    from symbrim.utilities.plotting import PlotModel
 except ImportError:
     PlotModel = None
 
diff --git a/tests/utilities/test_parametrize.py b/tests/utilities/test_parametrize.py
index 8120ff6c..4768ea90 100644
--- a/tests/utilities/test_parametrize.py
+++ b/tests/utilities/test_parametrize.py
@@ -5,35 +5,35 @@
 from sympy import diag
 from sympy.physics.mechanics import RigidBody, msubs
 
-from brim.bicycle.cranks import MasslessCranks
-from brim.bicycle.front_frames import RigidFrontFrameMoore
-from brim.bicycle.grounds import FlatGround
-from brim.bicycle.rear_frames import RigidRearFrameMoore
-from brim.bicycle.tires import NonHolonomicTire
-from brim.bicycle.wheels import KnifeEdgeWheel
-from brim.bicycle.whipple_bicycle import WhippleBicycleMoore
-from brim.brim.bicycle_rider import BicycleRider
-from brim.brim.hand_grips import HolonomicHandGrips
-from brim.brim.pedals import HolonomicPedals
-from brim.brim.seats import SideLeanSeat
-from brim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
-from brim.rider.hip_joints import SphericalLeftHip, SphericalRightHip
-from brim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
-from brim.rider.pelvis import PlanarPelvis
-from brim.rider.rider import Rider
-from brim.rider.sacrums import FixedSacrum
-from brim.rider.shoulder_joints import SphericalLeftShoulder, SphericalRightShoulder
-from brim.rider.torso import PlanarTorso
+from symbrim.bicycle.cranks import MasslessCranks
+from symbrim.bicycle.front_frames import RigidFrontFrameMoore
+from symbrim.bicycle.grounds import FlatGround
+from symbrim.bicycle.rear_frames import RigidRearFrameMoore
+from symbrim.bicycle.tires import NonHolonomicTire
+from symbrim.bicycle.wheels import KnifeEdgeWheel
+from symbrim.bicycle.whipple_bicycle import WhippleBicycleMoore
+from symbrim.brim.bicycle_rider import BicycleRider
+from symbrim.brim.hand_grips import HolonomicHandGrips
+from symbrim.brim.pedals import HolonomicPedals
+from symbrim.brim.seats import SideLeanSeat
+from symbrim.rider.arms import PinElbowStickLeftArm, PinElbowStickRightArm
+from symbrim.rider.hip_joints import SphericalLeftHip, SphericalRightHip
+from symbrim.rider.legs import TwoPinStickLeftLeg, TwoPinStickRightLeg
+from symbrim.rider.pelvis import PlanarPelvis
+from symbrim.rider.rider import Rider
+from symbrim.rider.sacrums import FixedSacrum
+from symbrim.rider.shoulder_joints import SphericalLeftShoulder, SphericalRightShoulder
+from symbrim.rider.torso import PlanarTorso
 
 try:
     from bicycleparameters import Bicycle
     from bicycleparameters.io import remove_uncertainties
 
-    from brim.utilities.parametrize import get_inertia_vals
+    from symbrim.utilities.parametrize import get_inertia_vals
 except ImportError:
     pytest.skip("bicycleparameters not installed", allow_module_level=True)
 
-data_dir = Path(__file__[:__file__.index("brim") + 4]) / "data"
+data_dir = Path(__file__[:__file__.index("tests")]) / "data"
 
 
 def _check_dir(bicycle: str, rider: str) -> bool:
diff --git a/tests/utilities/test_plotting.py b/tests/utilities/test_plotting.py
index 09916e29..7c8a9c7b 100644
--- a/tests/utilities/test_plotting.py
+++ b/tests/utilities/test_plotting.py
@@ -2,7 +2,7 @@
 
 import pytest
 
-from brim.rider import (
+from symbrim.rider import (
     PlanarPelvis,
     Rider,
     SphericalLeftHip,
@@ -13,7 +13,7 @@
 try:
     import matplotlib.pyplot as plt
 
-    from brim.utilities.plotting import (
+    from symbrim.utilities.plotting import (
         PlotConnection,
         PlotLoadGroup,
         PlotModel,
diff --git a/tests/utilities/test_utilities.py b/tests/utilities/test_utilities.py
index 249f4cf9..99d7ba54 100644
--- a/tests/utilities/test_utilities.py
+++ b/tests/utilities/test_utilities.py
@@ -5,7 +5,7 @@
 from sympy.abc import a, b, c
 from sympy.physics.mechanics import dynamicsymbols
 
-from brim.utilities.utilities import check_zero, random_eval
+from symbrim.utilities.utilities import check_zero, random_eval
 
 
 class TestRandomEval: