diff --git a/build.py b/build.py
index 0bc17a4adc85aac73d05f03a2b47d116244974c7..69e7e2b696873d127815ce732cce253cf2b29cfc 100644
--- a/build.py
+++ b/build.py
@@ -13,7 +13,6 @@ class ConfigBuilder:
     """Fill YAML-jinja2 templates, prepare the final data-model"""
 
     def __init__(self, cfg: Config):
-        """Instantiate ConfigBuilder"""
         self.logger = logging.getLogger(APP_LOG_TAG)
         self.config = cfg
 
@@ -23,17 +22,21 @@ class ConfigBuilder:
             for job in service['scraping']:
                 self.logger.debug("Templating: " + service['service_name'] + ' -> ' + job['template'])
                 self.load_template(job)
-
-                env = jinja2.Environment(undefined=jinja2.DebugUndefined)
-                template = env.from_string(job['template'])
-                data = service.copy()
-                data['targets'] = job['targets']
-                data['snippet'] = collect_snippets(self.config.templates)
-
-                output = template.render(data)
+                template = self.substitute_template_field(job, service)
                 # store generated prometheus job config
-                job['output_yaml'] = yaml.safe_load(output)
+                job['output_yaml'] = yaml.safe_load(template)
 
     def load_template(self, job):
+        """Substitute 'template' field with its content"""
         template_identifier = TEMPLATE_PREFIX + job['template']
         job['template'] = self.config.templates[template_identifier]
+
+    def substitute_template_field(self, job, service):
+        """Fill template field with data"""
+        env = jinja2.Environment(undefined=jinja2.DebugUndefined)
+        template = env.from_string(job['template'])
+        data = service.copy()
+        data['targets'] = job['targets']
+        data['snippet'] = collect_snippets(self.config.templates)
+
+        return template.render(data)
diff --git a/config.py b/config.py
index b3fab9f7a6da211813c7265ac8768ebc2e8a6227..12370595c7e23636ceefeb6f6f7aa7689c216934 100644
--- a/config.py
+++ b/config.py
@@ -14,7 +14,6 @@ class Config:
     templates = {}
 
     def __init__(self, path: Path):
-        """Read service YAML files and preload templates"""
         self.logger = logging.getLogger(APP_LOG_TAG)
         # YAML files in tha data directory recursively
         base_path_len = len(str(path.absolute())) + 1
diff --git a/customlog.py b/customlog.py
index ec100c54e85f9d8a08249e34df671c746fc49ea2..94d68f9428d9213d097ae7008f9c749981115a8f 100644
--- a/customlog.py
+++ b/customlog.py
@@ -5,6 +5,7 @@ from constants import APP_LOG_TAG
 
 
 def setup_logging():
+    """Setup custom log format"""
     # create logger with 'spam_application'
     logger = logging.getLogger(APP_LOG_TAG)
     logger.setLevel(logging.DEBUG)
diff --git a/pupak.py b/pupak.py
index 31cf0f951913c5f6e63c0f4f53b7f0c4f2775cbb..c53c4833339256a54bd3ef4d723fc22ccbfdb441 100644
--- a/pupak.py
+++ b/pupak.py
@@ -19,21 +19,21 @@ if __name__ == "__main__":
     if len(sys.argv) < 1 + 1:
         logger.error("Not enough CLI args.")
         logger.error("Usage: data_folder")
-        exit(1)
+        sys.exit(1)
 
     data_folder = Path(sys.argv[1])
 
     # Read service YAML files and preload templates
-    raw = Config(data_folder)
+    config = Config(data_folder)
 
     # Fill YAML-jinja2 templates,
     # prepare the final data-model
-    builder = ConfigBuilder(raw)
+    builder = ConfigBuilder(config)
     builder.build()
 
     # print("Data scheme validation:")
     # cfg.validate()
     # print("Data scheme is VALID.")
 
-    generator = Generator(data_folder, builder.config)
+    generator = Generator(data_folder, config)
     generator.ignite()