> For the complete documentation index, see [llms.txt](https://sitecoreuml.gitbook.io/sitecoredxg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sitecoreuml.gitbook.io/sitecoredxg/architecture/roles/role-combinations.md).

# Role Combinations

Some roles can be combined in a single component to simplify the architecture in a variety of circumstances. By default, SitecoreDXG allows for the following conceptual role combination that can be created without customizing native code:

* **Middleman-Trigger:** implemented as a trigger component, this role is responsible for reaching out to the *serializer* directly and calling the *generator* with the retrieved data

In addition to the above, because - as will be discussed further in subsequent sections - the default component that satisfies the *serializer* role is the the SitecoreUML Service for Sitecore which is open-source, although it is not recommended that you customize or replace the SitecoreUML Service for Sitecore, doing so will enable you to make the following additional role combinations:

* **Serializer-Middleman:** implemented primarily to be the *serializer*, this role is responsible for serializing the template architecture and passing it along to the *trigger*
* **Serializer-Middleman-Trigger:** implemented primarily to be the *serializer*, this role is responsible for serializing the template architecture and directly calling the *generator* with the retrieved data
