diff --git a/examples/Simple_Realistic_Railway_Generator.py b/examples/Simple_Realistic_Railway_Generator.py
index da007717a45293d4426c83aff55856e172182ed9..2eaa412f41a5a6116a7a1c3e995c2cf8db63f18d 100644
--- a/examples/Simple_Realistic_Railway_Generator.py
+++ b/examples/Simple_Realistic_Railway_Generator.py
@@ -15,36 +15,122 @@ from flatland.utils.rendertools import RenderTool
 
 class PositionOps:
     def subtract_pos(nodeA, nodeB):
+        """
+        vector operation : nodeA - nodeB
+
+        :param nodeA: tuple with coordinate (x,y) or 2d vector
+        :param nodeB: tuple with coordinate (x,y) or 2d vector
+        :return:
+            -------
+        tuple with coordinate (x,y) or 2d vector
+        """
         return (nodeA[0] - nodeB[0], nodeA[1] - nodeB[1])
 
     def add_pos(nodeA, nodeB):
+        """
+        vector operation : nodeA + nodeB
+
+        :param nodeA: tuple with coordinate (x,y) or 2d vector
+        :param nodeB: tuple with coordinate (x,y) or 2d vector
+        :return:
+            -------
+        tuple with coordinate (x,y) or 2d vector
+        """
         return (nodeA[0] + nodeB[0], nodeA[1] + nodeB[1])
 
     def make_orthogonal_pos(node):
+        """
+        vector operation : rotates the 2D vector +90°
+
+        :param node: tuple with coordinate (x,y) or 2d vector
+        :return:
+            -------
+        tuple with coordinate (x,y) or 2d vector
+        """
         return (node[1], -node[0])
 
     def get_norm_pos(node):
+        """
+        calculates the euclidean norm of the 2d vector
+
+        :param node: tuple with coordinate (x,y) or 2d vector
+        :return:
+            -------
+        tuple with coordinate (x,y) or 2d vector
+        """
         return np.sqrt(node[0] * node[0] + node[1] * node[1])
 
     def normalize_pos(node):
+        """
+        normalize the 2d vector = v/|v|
+
+        :param node: tuple with coordinate (x,y) or 2d vector
+        :return:
+            -------
+        tuple with coordinate (x,y) or 2d vector
+        """
         n = PositionOps.get_norm_pos(node)
         if n > 0.0:
             n = 1 / n
         return PositionOps.scale_pos(node, n)
 
     def scale_pos(node, scalar):
+        """
+         scales the 2d vector = node * scale
+
+         :param node: tuple with coordinate (x,y) or 2d vector
+         :param scale: scalar to scale
+         :return:
+             -------
+         tuple with coordinate (x,y) or 2d vector
+         """
         return (node[0] * scalar, node[1] * scalar)
 
     def round_pos(node):
+        """
+         rounds the x and y coordinate and convert them to an integer values
+
+         :param node: tuple with coordinate (x,y) or 2d vector
+         :return:
+             -------
+         tuple with coordinate (x,y) or 2d vector
+         """
         return (int(np.round(node[0])), int(np.round(node[1])))
 
     def ceil_pos(node):
+        """
+         ceiling the x and y coordinate and convert them to an integer values
+
+         :param node: tuple with coordinate (x,y) or 2d vector
+         :return:
+             -------
+         tuple with coordinate (x,y) or 2d vector
+         """
         return (int(np.ceil(node[0])), int(np.ceil(node[1])))
 
     def bound_pos(node, min_value, max_value):
+        """
+         force the values x and y to be between min_value and max_value
+
+         :param node: tuple with coordinate (x,y) or 2d vector
+         :param min_value: scalar value
+         :param max_value: scalar value
+         :return:
+             -------
+         tuple with coordinate (x,y) or 2d vector
+         """
         return (max(min_value, min(max_value, node[0])), max(min_value, min(max_value, node[1])))
 
     def rotate_pos(node, rot_in_degree):
+        """
+         rotate the 2d vector with given angle in degree
+
+         :param node: tuple with coordinate (x,y) or 2d vector
+         :param rot_in_degree:  angle in degree
+         :return:
+             -------
+         tuple with coordinate (x,y) or 2d vector
+         """
         alpha = rot_in_degree / 180.0 * np.pi
         x0 = node[0]
         y0 = node[1]