diff --git a/docs/dev/synchronizers.md b/docs/dev/synchronizers.md
index e579bf7..662babd 100644
--- a/docs/dev/synchronizers.md
+++ b/docs/dev/synchronizers.md
@@ -1,10 +1,9 @@
 # Writing Synchronizers
 
-Synchronizers are the components of CORD that map the abstract
-declarative state about how the system is suppose to behave (as defined by the
-XOS data model) into the concrete operational state of the backend components
-that implement the system (e.g., VNFs, micro-services, SDN control
-applications).
+Synchronizers are the components of CORD that map the abstract declarative
+state about how the system is suppose to behave (as defined by the XOS data
+model) into the concrete operational state of the backend components that
+implement the system (e.g., VNFs, micro-services, SDN control applications).
 
 Writing a Synchronizer is half of the work required to on-board a service into
 CORD. First a model for the service is written as an [xproto](xproto.md)
@@ -23,27 +22,33 @@
 
 ### Convenience Methods
 
-As part of the model definition is possible to extend the autogenerated gRPC APIs
-with custom methods, for example to facilitate access to some kind of data from the 
-synchronizers.
+As part of the model definition is possible to extend the autogenerated gRPC
+APIs with custom methods, for example to facilitate access to some kind of data
+from the synchronizers.
 
-`convenience_methods` can be defined in a folder (`convenience`) that needs to be a child of the `models_dir` 
-as per your configuration.
+`convenience_methods` can be defined in a folder (`convenience`) that needs to
+be a child of the `models_dir` as per your configuration.
 
 > For example if your configuration contains:
+>
 > ```yaml
 > models_dir: "/opt/xos/synchronizers/<synchronizer_name>/models"
 > ```
-> then you `convenience methods` needs to be located in `/opt/xos/synchronizers/<synchronizer_name>/models/convenience`
+>
+> then you `convenience methods` needs to be located in
+> `/opt/xos/synchronizers/<synchronizer_name>/models/convenience`
 
 Assuming our model definition looks like:
+
 ```proto
 message MyModel (XOSBase){
     required string first_name = 1 [null = False, blank = False];
     required string last_name = 2 [null = False, blank = False];
 }
 ```
-here is an example of a basic convenience methods that will expose a `full_name` property over the APIs used by the synchronizers:
+
+here is an example of a basic convenience methods that will expose a
+`full_name` property over the APIs used by the synchronizers:
 
 ```python
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
@@ -54,7 +59,7 @@
 log = create_logger(Config().get('logging'))
 
 class ORMWrapperMyModel(ORMWrapper):
-    
+
     @property
     def full_name(self):
         return "%s %s" % (self.first_name, self.last_name)
@@ -62,8 +67,8 @@
 register_convenience_wrapper("MyModel", ORMWrapperMyModel)
 ```
 
-> NOTE: The convenience methods will be loaded in all the synchronizer containers
-> so that they can be used in multiple places.
+> NOTE: The convenience methods will be loaded in all the synchronizer
+> containers so that they can be used in multiple places.
 
 ### Model Policies
 
