diff --git a/src/api/controllers/collect.ts b/src/api/controllers/collect.ts
index 3e0680885c8df42f2232e4e5f66bb61756dc5495..4939c3d9bc72c7dc8e699da9afa0e4b4f4530714 100644
--- a/src/api/controllers/collect.ts
+++ b/src/api/controllers/collect.ts
@@ -19,7 +19,7 @@
  */
 
 import * as express from "express";
-import { Request } from "../types";
+import Request from "../types";
 import { Source, Field } from "../../core/source";
 import { EnumType } from "../../core/enumType";
 import { DataType } from "../../common/types";
@@ -31,7 +31,7 @@ import { EnumHandler } from "../../util/enumHandler";
  * objetct is a valid object of that type
  * or false otherwise.
  */
-interface Valid{
+interface Valid {
     [key: string]: (value: any) => boolean;
 }
 
@@ -47,71 +47,64 @@ export class CollectCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static write(req: Request, res: express.Response, next: express.NextFunction) {
-
+    public static write(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
         const validador: Valid = {
-            "integer": function(value: any) {
+            integer: function (value: any) {
                 let test = parseInt(value, 10);
-                if (test === undefined || isNaN(value) ) {
+                if (test === undefined || isNaN(value)) {
                     return false;
-                }
-
-                else {
+                } else {
                     return true;
                 }
             },
-            "float": function(value: any) {
+            float: function (value: any) {
                 let test = parseFloat(value);
-                if (test === undefined || isNaN(value) ) {
+                if (test === undefined || isNaN(value)) {
                     return false;
-                }
-
-                else {
+                } else {
                     return true;
                 }
             },
-            "string": function(value: any) {
-                let test = typeof(value);
+            string: function (value: any) {
+                let test = typeof value;
                 if (test === "string") {
                     return true;
-                }
-
-                else{
+                } else {
                     return false;
                 }
             },
-            "date": function(value: any) {
-
+            date: function (value: any) {
                 let test: string[] = [];
                 let date = new Date(value);
                 try {
                     test = date.toISOString().split("T");
-                }
-                catch (e) {
+                } catch (e) {
                     return false;
                 }
-                if (test[0] === value){
+                if (test[0] === value) {
                     return true;
-                }
-                else{
+                } else {
                     return false;
                 }
-
             },
-            "boolean": function(value: any) {
-                let test = typeof(value);
-                if(test === "boolean"){
+            boolean: function (value: any) {
+                let test = typeof value;
+                if (test === "boolean") {
                     return true;
-                }else{
+                } else {
                     let test: string = value;
                     test = test.toLocaleLowerCase();
-                    if (test === "true" || test === "false"){
+                    if (test === "true" || test === "false") {
                         return true;
-                    }else{
+                    } else {
                         return false;
                     }
                 }
-            }
+            },
         };
 
         let fields: Field[] = [];
@@ -127,76 +120,103 @@ export class CollectCtrl {
 
             fields = source.fields;
 
-            for (let i = 0; i < fields.length; i++){
+            for (let i = 0; i < fields.length; i++) {
                 data[i] = req.body[fields[i].name];
                 // check if the data is empty, however since data may be
                 // true/false, it must guarantee that it isn't a boolean
                 // then it'll test if it's empty
-                if (!(typeof(data[i]) === "boolean") && !data[i]){
-                    const message = "[Collect error] '" + fields[i].name + 
-                    "' is mandatory, but no data was received. Review the data sent."
+                if (!(typeof data[i] === "boolean") && !data[i]) {
+                    const message =
+                        "[Collect error] '" +
+                        fields[i].name +
+                        "' is mandatory, but no data was received. Review the data sent.";
                     throw new Error(message);
                 }
-                req.log.debug("Sucessfuly accepted the data: " + data[i] + " from source: ",source.name);
+                req.log.debug(
+                    "Sucessfuly accepted the data: " +
+                        data[i] +
+                        " from source: ",
+                    source.name
+                );
             }
 
-            for (let i = 0; i < fields.length; i++){
+            for (let i = 0; i < fields.length; i++) {
                 // check if it's a valid enumtype
-                if (fields[i].dataType === DataType.ENUMTYPE){
+                if (fields[i].dataType === DataType.ENUMTYPE) {
                     enumType = req.engine.getEnumTypeByName(fields[i].enumType);
                     types = enumType.values;
                     let found: boolean = false;
-                    for (let j = 0; j < types.length; j++){
-                        if (data[i] === types[j]){
-                        found = true;
-                        break;
+                    for (let j = 0; j < types.length; j++) {
+                        if (data[i] === types[j]) {
+                            found = true;
+                            break;
                         }
                     }
                     if (!found) {
-                        const message = "[Collect error] EnumType: '" +  data[i] + "' from '" + fields[i].name +
-                        "' isn't allowed on " + fields[i].enumType + 
-                        ". Review configuration files."                        
+                        const message =
+                            "[Collect error] EnumType: '" +
+                            data[i] +
+                            "' from '" +
+                            fields[i].name +
+                            "' isn't allowed on " +
+                            fields[i].enumType +
+                            ". Review configuration files.";
                         throw new Error(message);
                     }
-                }else if (!validador[EnumHandler.stringfyDataType(fields[i].dataType)](data[i]) === true){
-                        const message = "[Collect error] Datatype: '" +  data[i] + "' from '" + fields[i].name +
-                        "' could not be converted to type: " + [EnumHandler.stringfyDataType(fields[i].dataType)] +
-                        ". Review configuration files."
-                        throw new Error(message);
+                } else if (
+                    !validador[
+                        EnumHandler.stringfyDataType(fields[i].dataType)
+                    ](data[i]) === true
+                ) {
+                    const message =
+                        "[Collect error] Datatype: '" +
+                        data[i] +
+                        "' from '" +
+                        fields[i].name +
+                        "' could not be converted to type: " +
+                        [EnumHandler.stringfyDataType(fields[i].dataType)] +
+                        ". Review configuration files.";
+                    throw new Error(message);
                 }
-                req.log.debug("Sucessfuly accepted the enumType data: " + data[i] + " from source: ",source.name);
+                req.log.debug(
+                    "Sucessfuly accepted the enumType data: " +
+                        data[i] +
+                        " from source: ",
+                    source.name
+                );
             }
-        }
-
-        catch (e) {
-            const message = "Query execution failed: " +
-            "Could not construct query with the given parameters."
+        } catch (e) {
+            const message =
+                "Query execution failed: " +
+                "Could not construct query with the given parameters.";
             req.log.warn(message);
             res.status(500).json({
                 message: message,
-                error: e.message
-             });
+                error: e.message,
+            });
             return;
         }
 
-        req.adapter.insertIntoSource(source, req.body, (err: Error, result: any[]) => {
-            if (err) {
-                const message = "Insertion has failed";
-                req.log.error(message,err);
-                res.status(500).json({
-                    message: message,
-                    error: err
-                });
-                return;
-            }
-            else{
-                const message = "Data has been successfully received and stored by the server";
-                req.log.info(message);
-                res.status(200).json({message: message});
-                return;
+        req.adapter.insertIntoSource(
+            source,
+            req.body,
+            (err: Error, result: any[]) => {
+                if (err) {
+                    const message = "Insertion has failed";
+                    req.log.error(message, err);
+                    res.status(500).json({
+                        message: message,
+                        error: err,
+                    });
+                    return;
+                } else {
+                    const message =
+                        "Data has been successfully received and stored by the server";
+                    req.log.info(message);
+                    res.status(200).json({ message: message });
+                    return;
+                }
             }
-
-        });
-
+        );
     }
 }
diff --git a/src/api/controllers/data.ts b/src/api/controllers/data.ts
index 2dbd01b6d9bdf0775c02709f29029cff78f5d9ff..d332d0c4277b9b77be6d3ae96179d741c5c62c66 100644
--- a/src/api/controllers/data.ts
+++ b/src/api/controllers/data.ts
@@ -19,7 +19,7 @@
  */
 
 import * as express from "express";
-import { Request } from "../types";
+import Request from "../types";
 import { Query, QueryOpts } from "../../common/query";
 
 /**
@@ -34,34 +34,49 @@ export class DataCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static read(req: Request, res: express.Response, next: express.NextFunction) {
-        req.log.info("Query: ",req.query);
-        let metrics = req.query.metrics.split(",").filter((item: string) => item !== "");
-        let dimensions = req.query.dimensions.split(",").filter((item: string) => item !== "");
-        let clauses = [];
+    public static read(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
+        req.log.info("Query: ", req.query);
+        let metrics = (<string>req.query.metrics)
+            .split(",")
+            .filter((item: string) => item !== "");
+        let dimensions = (<string>req.query.dimensions)
+            .split(",")
+            .filter((item: string) => item !== "");
+        let clauses: string[] = [];
+
         let sort: string[] = [];
         if (req.query.filters) {
-            clauses = req.query.filters.split(";").filter((item: string) => item !== "");
+            clauses = (<string>req.query.filters)
+                .split(";")
+                .filter((item: string) => item !== "");
         }
         if (req.query.sort) {
-            sort = req.query.sort.split(",").filter((item: string) => item !== "");
+            sort = (<string>req.query.sort)
+                .split(",")
+                .filter((item: string) => item !== "");
         }
         let format = "json";
         if (req.query.format) {
-            format = req.query.format;
+            format = <string>req.query.format;
         }
 
         let view;
 
         try {
-            const qOpt: QueryOpts = { metrics: [], dimensions: []};
+            const qOpt: QueryOpts = { metrics: [], dimensions: [] };
             let query = new Query(qOpt);
             for (let i = 0; i < metrics.length; ++i) {
                 query.metrics.push(req.engine.getMetricByName(metrics[i]));
             }
 
             for (let i = 0; i < dimensions.length; ++i) {
-                query.dimensions.push(req.engine.getDimensionByName(dimensions[i]));
+                query.dimensions.push(
+                    req.engine.getDimensionByName(dimensions[i])
+                );
             }
 
             for (let i = 0; i < clauses.length; ++i) {
@@ -71,68 +86,70 @@ export class DataCtrl {
             for (let i = 0; i < sort.length; ++i) {
                 const m = query.metrics.find((item) => item.name === sort[i]);
                 if (!m) {
-                    const d = query.dimensions.find((item) => item.name === sort[i]);
+                    const d = query.dimensions.find(
+                        (item) => item.name === sort[i]
+                    );
                     if (!d) {
                         throw new Error(
-                            "The item '" +  sort[i] +
-                            "' is not present in neither metrics nor dimensions list");
-                    }
-                    else {
+                            "The item '" +
+                                sort[i] +
+                                "' is not present in neither metrics nor dimensions list"
+                        );
+                    } else {
                         query.sort.push(d);
                     }
-                }
-
-                else {
+                } else {
                     query.sort.push(m);
                 }
-
             }
             view = req.engine.query(query);
-        }
-        catch (e) {
-            const message = "Query execution failed: " +
-            "Could not construct query with the given parameters."
-            req.log.warn(message,e);
+        } catch (e) {
+            const message =
+                "Query execution failed: " +
+                "Could not construct query with the given parameters.";
+            req.log.warn(message, e);
             res.status(500).json({
                 message: message,
-                error: e.message
-             });
+                error: e.message,
+            });
             return;
         }
 
         req.adapter.getDataFromView(view, (err: Error, result: any[]) => {
             if (err) {
-                const message = "Query execution failed " +
-                "failed on execute query on database."
-                req.log.error(message,err);
+                const message =
+                    "Query execution failed " +
+                    "failed on execute query on database.";
+                req.log.error(message, err);
                 res.status(500).json({
                     message: message,
-                    error: err
-                 });
+                    error: err,
+                });
                 return;
             }
 
             if (format === "json") {
                 req.log.info("Response (json) send with success");
                 res.status(200).json(result);
-            }
-
-            else {
+            } else {
                 req.csvParser(result, format, (error: Error, csv: string) => {
                     if (error) {
-                        const message = "Error generating csv file. " +
-                        "Try json format."
-                        req.log.error(message,error);
+                        const message =
+                            "Error generating csv file. " + "Try json format.";
+                        req.log.error(message, error);
                         res.status(500).json({
                             message: message,
-                            error: error
+                            error: error,
                         });
                         return;
                     }
 
                     req.log.info("Response (csv) send with success");
                     res.setHeader("Content-Type", "text/csv");
-                    res.setHeader("Content-disposition", "attachment;filename=data.csv");
+                    res.setHeader(
+                        "Content-disposition",
+                        "attachment;filename=data.csv"
+                    );
                     res.status(200).send(csv);
                 });
             }
diff --git a/src/api/controllers/engine.ts b/src/api/controllers/engine.ts
index 998c14e3bf645e892f9bdfd8f7352d1c2bff8aa7..1a34762efaaac6fb8c03e50e0e9be682de4cc99d 100644
--- a/src/api/controllers/engine.ts
+++ b/src/api/controllers/engine.ts
@@ -19,7 +19,7 @@
  */
 
 import * as express from "express";
-import { Request } from "../types";
+import Request from "../types";
 
 /**
  * Constroller responsable for the static part from the API. In other
@@ -35,25 +35,29 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    private static respondList(list: any[], fileName: string, req: Request, res: express.Response, next: express.NextFunction) {
+    private static respondList(
+        list: any[],
+        fileName: string,
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
         let format = "json";
         if (req.query.format) {
-            format = req.query.format;
+            format = <string>req.query.format;
         }
 
         if (format === "json") {
             req.log.info("Response (json) send with success");
             res.status(200).json(list);
-        }
-
-        else {
+        } else {
             req.csvParser(list, format, (error: Error, csv: string) => {
                 if (error) {
-                    req.log.error("Error generating csv file: ",error);
+                    req.log.error("Error generating csv file: ", error);
                     res.status(500).json({
-                        message: "Error generating csv file. " +
-                        "Try json format.",
-                        error: error
+                        message:
+                            "Error generating csv file. " + "Try json format.",
+                        error: error,
                     });
                     return;
                 }
@@ -74,8 +78,14 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static metrics(req: Request, res: express.Response, next: express.NextFunction) {
-        const metrics = req.engine.getMetricsDescription(req.query.tags);
+    public static metrics(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
+        const metrics = req.engine.getMetricsDescription(
+            <string>req.query.tags
+        );
         EngineCtrl.respondList(metrics, "metrics", req, res, next);
     }
 
@@ -86,8 +96,14 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static dimensions(req: Request, res: express.Response, next: express.NextFunction) {
-        const dimensions = req.engine.getDimensionsDescription(req.query.tags);
+    public static dimensions(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
+        const dimensions = req.engine.getDimensionsDescription(
+            <string>req.query.tags
+        );
         EngineCtrl.respondList(dimensions, "dimensions", req, res, next);
     }
 
@@ -98,7 +114,11 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static enumTypes(req: Request, res: express.Response, next: express.NextFunction) {
+    public static enumTypes(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
         const enumTypes = req.engine.getEnumTypesDescription();
         EngineCtrl.respondList(enumTypes, "enums", req, res, next);
     }
@@ -110,9 +130,13 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static sources(req: Request, res: express.Response, next: express.NextFunction) {
-       const sources = req.engine.getSourcesDescription();
-       EngineCtrl.respondList(sources, "sources", req, res, next);
+    public static sources(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
+        const sources = req.engine.getSourcesDescription();
+        EngineCtrl.respondList(sources, "sources", req, res, next);
     }
 
     /**
@@ -122,8 +146,12 @@ export class EngineCtrl {
      * @param next - Call next middleware or controller. Not used but required
      * by typescript definition of route.
      */
-    public static tags(req: Request, res: express.Response, next: express.NextFunction) {
-       const tags = req.engine.getTagsDescription();
-       EngineCtrl.respondList(tags, "tags", req, res, next);
+    public static tags(
+        req: Request,
+        res: express.Response,
+        next: express.NextFunction
+    ) {
+        const tags = req.engine.getTagsDescription();
+        EngineCtrl.respondList(tags, "tags", req, res, next);
     }
 }