# How to extend Soap?

You can expand this plugin by creating your own scriptable variables, lists, and events. You can either:

1. Use the [Soap Type Creator ](/soap/custom-windows/soap-type-creator.md)to automatically generate the code for the classes.
2. Write the classes yourself. If you choose the latter, simply create a new class that inherits from the following classes and replace 'T' with your type:

* ScriptableVariable\<T>
* ScriptableList\<T>
* ScriptableDictionary\<T>
* ScriptableEvent\<T>
* ScriptableSave\<T>
* EventListener\<T>
* VariableReferences\<V, T>

Ensure your class is Serializable by adding the \[System.Serializable] attribute to it.

Example: ScriptableVariableYourType : ScriptableVariable\<YourType>

For ScriptableEnums, simply inherit from ScriptableEnumBase.

Finally, you can create new 'Binding' components. While I have developed a few, you are encouraged to be creative and design bindings that will be beneficial in your games. Examples of how to extend the package can be found in the scripts of various examples.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://obvious-game.gitbook.io/soap/quality/how-to-extend-soap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
