> For the complete documentation index, see [llms.txt](https://azuriohs-organization.gitbook.io/r-type/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://azuriohs-organization.gitbook.io/r-type/subsystems/create-your-subsystems/step-3-add-an-entry-point.md).

# Step 3 - Add an entry point

In this step, we will create an entry point for your subsystem. This entry point will serve as the main access point for other parts of the system to interact with your subsystem. This is typically done by creating a factory function that returns an instance of your subsystem.

***

## 🧑‍💻 Create the Entry Point

Create a new source file in the `src` directory of your subsystem. This file will contain the factory function that creates and returns an instance of your subsystem.

```cpp
// EntryPoint.cpp
#include "TypeOfSubsystem.hpp" // Include your subsystem header

extern "C" TypeOfSubsystem *getEntryPoint() {
    return new TypeOfSubsystem(); // Return a new instance of your subsystem
}
```

> Once it's done, you can proceed to the next step: [Load your subsystems in the client](https://github.com/Azurioh/R-Type/blob/docs/subsystems/create-your-subsystems/subsystems/create-your-subsystems/step-4-load-your-subsystems-in-the-client.md).
