diff --git a/docs/dev/xproto.md b/docs/dev/xproto.md
index 68fb986..8791df2 100644
--- a/docs/dev/xproto.md
+++ b/docs/dev/xproto.md
@@ -98,13 +98,73 @@
 
 ### Model Options
 
-Options declare information about models. They can be declared for individual models, or at the top level in the xproto definition, in which case they are inherited by all of the models in that definition.
+Model Options declare information about models. They can be declared for individual models, or at the top level in the xproto definition, in which case they are inherited by all of the models in the file, unless they are overridden by a particular model.
+
+Currently supported model options include: `name`, `app_label`, `verbose_name`, `legacy`, `tosca_description`, `validators`, `plural`, `singular`, and `gui_hidden`.
+
+The name option is a short name used to refer to your service. For example, in the Virtual Subscriber Gateway service, the name option is set to `vSG`. 
 
 ```protobuf
-option app_label = "core";
+option name = "vSG"
 ```
 
-Currently supported model options include: `app_label`, `skip_init`, `skip_django`, `tosca_description`, `validators`, `plural`, `singular`, and `gui_hidden`.
+The app\_label option is a short programmatic name that does not need to be easily understood by humans. It should not include whitespaces, and should preferrably be all lowercase. If app\_label is not specified, then its value defaults to the name option described above.
+
+```protobuf
+option app_label = "vsg"
+```
+
+The verbose\_name option contains a short description of the service.
+
+```protobuf
+option verbose_name = "Virtual Subscriber Gateway Service";
+```
+
+
+```protobuf
+option app_label = "legacy"
+```
+
+The legacy option is for services that require custom Python code in their
+generated models. Without this option set, for any given model (`VSGService`) the
+toolchain generates model classes in a self-contained file (`vsgservice.py`).
+With this option set, the toolchain generates the models in a file called
+`vsgservice_decl.py`. All of the models in this file have the suffix `_decl`.
+It is then up to the service developer to provide the final models. The code below gives
+an example of custom models that inherit from such intermediate `decl` models:
+
+```python
+class VSGService(VSGService__decl):
+    def __xos_base_save(self, *args, **kwargs):
+        self.prop1 = self.prop2 + self.prop3
+    pass
+```
+
+You can use the xproto `service_extender` target to generate a stub for your
+final model definitions.
+
+The plural and singular options provide the grammatically correct plural and singular forms of your model name to ensure that autogenerated API endpoints are valid.
+
+```protobuf
+option singular = "slice" # Singular of slice is not slouse, as computed by Python's pattern.en library
+
+option plural = "ports" # Plural of ports is not portss
+```
+
+The tosca\_description option is a description for the service entry in the autogenerated TOSCA schema.
+
+The `validators` option contains a set of declarative object validators applied to every object of the present model when it is saved. Validators are a comma separated
+list of tuples, where the two elements of each tuple are separated by a ':'. The first element of the tuple is a reference to an XOS policy (described in another section of this document). The second element is an error message that is returned to an API client that attempts an operation that does not pass validation.
+
+```protobuf
+option validators = "instance_creator:Instance has no creator, instance_isolation: Container instance {obj.name} must use container image, instance_isolation_container_vm_parent:Container-vm instance {obj.name} must have a parent";
+```
+
+The gui\_hidden option is a directive to the XOS GUI to exclude the present model from the default view provided to users.
+
+```protobuf
+option null = True
+```
 
 ### Field Options
 
