diff --git a/.env b/.env
index 0efeaa73b19403be4d206de6b8274dfc447b4926..2f26ed02da8b5ec45b282490c9443c541e04f4c7 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,6 @@
 PORT=8000
-INSTANCE=PROD
\ No newline at end of file
+INSTANCE=PROD
+HOST=localhost
+USER=root
+PASSWORD=rootroot
+DB=parameter_database
\ No newline at end of file
diff --git a/src/Config/Constants.ts b/src/Config/Constants.ts
index 337ad28868f7d7644c20f3507cdfa12582227d5d..033443947ca9f24f087d98c5bd3ef6642d757697 100644
--- a/src/Config/Constants.ts
+++ b/src/Config/Constants.ts
@@ -4,3 +4,29 @@ export const SheetNames = {
   HOMBRES_MENORES: 'Hombres<1',
   MUJERES_MENORES: 'Mujeres<1',
 };
+
+export const extraDataIDs = {
+  minLowPrev: 'minorLowPrevalence',
+  minModPrev: 'minorModeratePrevalence',
+  minIntPrev: 'minorIntensePrevalence',
+  lowPercDiff: 'lowPercentageDifference',
+  intPercDiff: 'intensePercentageDifference',
+  urbPopPerc: 'urbanPopulation',
+  rurPopPerc: 'ruralPopulation',
+  urbAdultActPerc: 'urbanActivePALPercentage',
+  urbAdultLowPerc: 'urbanLowPALPercentage',
+  rurAdultActPerc: 'ruralActivePALPercentage',
+  rurAdultLowPerc: 'ruralLowPALPercentage',
+  urbAdultActVal: 'ruralActivePALValue',
+  urbAdultLowVal: 'ruralLowPALValue',
+  rurAdultActVal: 'urbanActivePALValue',
+  rurAdultLowVal: 'urbanLowPALValue',
+  popCountry: 'countryPopulation',
+  pop18to29Fem: '18to29FemaleCountryPopulation',
+  pop30to59Fem: '30to59FemaleCountryPopulation',
+  birthRate: 'birthRate',
+  extraEnergyPreg18to29: 'pregnancyExtraEnergy18to29',
+  extraEnergyLact18to29: 'lactationExtraEnergy18to29',
+  extraEnergyPreg30to59: 'pregnancyExtraEnergy30to59',
+  extraEnergyLact30to59: 'lactationExtraEnergy30to59',
+}
\ No newline at end of file
diff --git a/src/Config/DBConfig.ts b/src/Config/DBConfig.ts
deleted file mode 100644
index ddd9d64e490508284986414c5e5181364fb75260..0000000000000000000000000000000000000000
--- a/src/Config/DBConfig.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const DBConfig = {
-  HOST: 'localhost',
-  USER: 'root',
-  PASSWORD: 'password', // antes decia 'password'
-  DB: 'parameter_database',
-  dialect: 'mysql',
-};
diff --git a/src/Controllers/CalculatorController.ts b/src/Controllers/CalculatorController.ts
index 91db8387271d961d2b9691c5d8fe151fd206ce3d..8cbdaa210b0ac29485bdaf55c2d1e61640666f2f 100644
--- a/src/Controllers/CalculatorController.ts
+++ b/src/Controllers/CalculatorController.ts
@@ -14,9 +14,8 @@ const { validate } = new Validator({});
 const getREP: Handler = async (req: Request, res: Response) => {
   const { groups, extraData } = req.body;
   try {
-    // sry pero no sabia como sacarle un caracter a esa linea :(
-    // eslint-disable-next-line max-len
-    const EnergyReq: CalculatorResponse = await CalculatorService.calculateEnergeticRequirement(groups, extraData);
+    const EnergyReq: CalculatorResponse = await CalculatorService
+      .calculateEnergeticRequirement(groups, extraData);
     return res.status(200).send(EnergyReq);
   } catch (error) {
     const e = error as Error;
diff --git a/src/Controllers/ParameterController.ts b/src/Controllers/ParameterController.ts
index 2fc04f00f65704449e2f085cc22ebb5726d6648d..852879e8cbbbc4802fcf36f374029055677c8d95 100644
--- a/src/Controllers/ParameterController.ts
+++ b/src/Controllers/ParameterController.ts
@@ -45,25 +45,21 @@ const getDefaultExtraData: Handler = async (req: Request, res: Response) => {
 };
 
 const updateParameterValue: Handler = async (req: Request, res: Response) => {
-  const { parameter } = req.body;
+  const { parameters, parameterType } = req.body;
   try {
-    switch (parameter.parameterType) {
+    switch (parameterType) {
       case ParameterType.DefaultWeight:
-        await ParameterService.updateDefaultWeight(
-          parameter.ageRange, parameter.sex, parameter.value,
-        );
+        await ParameterService.updateDefaultWeight(parameters[0]);
         break;
       case ParameterType.MinorPAL:
       case ParameterType.AdultPAL:
       case ParameterType.Maternity:
-        await ParameterService.updateExtraData(parameter.id, parameter.value);
+        await ParameterService.updateExtraData(parameters);
         break;
       case ParameterType.TEE:
       case ParameterType.BMR:
       case ParameterType.GrowthEnergy:
-        await ParameterService.updateEquationConstant(
-          parameter.ageRange, parameter.sex, parameter.order, parameter.value,
-        );
+        await ParameterService.updateEquationConstant(parameters[0]);
         break;
       default:
         break;
diff --git a/src/Controllers/SheetController.ts b/src/Controllers/SheetController.ts
index 727fc2700141838ffbac52798702d4a67f5a7e56..9b4d63138b64b2290f2300e506b8eaaf51715153 100644
--- a/src/Controllers/SheetController.ts
+++ b/src/Controllers/SheetController.ts
@@ -1,7 +1,6 @@
 import {
   Handler, Request, Response, Router,
 } from 'express';
-import { SheetParserResponse } from '../Models/SheetParserResponse';
 import SheetService from '../Services/SheetService';
 import logger from '../Logger/logger';
 import AgeGroupJSON from '../DTOs/AgeGroupJSON';
diff --git a/src/DAOs/README.txt b/src/DAOs/README.txt
deleted file mode 100644
index 592fbaaa66ae405b77df5a770b66992be443a910..0000000000000000000000000000000000000000
--- a/src/DAOs/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Aca van los DAOs, los daos son los archivos que tienen comunicacion directa con la BD. Ningun otro archivo que no sea un dao puede tener acceso directo a la BD
\ No newline at end of file
diff --git a/src/Interfaces/README.txt b/src/Interfaces/README.txt
deleted file mode 100644
index 0ea96f66dda63f5611c7f5562dfea9e144f65389..0000000000000000000000000000000000000000
--- a/src/Interfaces/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Aca van las interfaces, acordarse de como nombrarlas, esta en el documento en Teams
\ No newline at end of file
diff --git a/src/Loaders/ParameterDataBase.ts b/src/Loaders/ParameterDataBase.ts
index d6d458f7d0103e35e9a36340a2491e48d1f59d27..7add75166c89ea7251288345b6d92599c7b96b51 100644
--- a/src/Loaders/ParameterDataBase.ts
+++ b/src/Loaders/ParameterDataBase.ts
@@ -1,16 +1,21 @@
 import { Sequelize } from 'sequelize';
-import { DBConfig } from '../Config/DBConfig';
+
+const DB: string = process.env.DB || 'parameter_database';
+const USER: string = process.env.USER || 'root';
+const PASSWORD: string = process.env.PASSWORD || 'password';
+const HOST: string = process.env.HOST || 'localhost';
 
 const sequelize = new Sequelize(
-  DBConfig.DB,
-  DBConfig.USER,
-  DBConfig.PASSWORD,
+  DB,
+  USER,
+  PASSWORD,
   {
-    host: DBConfig.HOST,
+    host: HOST,
     dialect: 'mysql',
     dialectOptions: {
       multipleStatements: true,
     },
+    logging: false,
   },
 );
 
diff --git a/src/Loaders/ParameterDataBaseLoader.ts b/src/Loaders/ParameterDataBaseLoader.ts
index f086c2118402a6c8e08bb2d188cb1567e814a901..560d0fbc2cd3d60d2d0f5c8f1c6ff6b98a86c285 100644
--- a/src/Loaders/ParameterDataBaseLoader.ts
+++ b/src/Loaders/ParameterDataBaseLoader.ts
@@ -1,3 +1,4 @@
+/* eslint-disable no-console */
 import fs from 'fs';
 import path from 'path';
 import DefaultExtraDataDTO from '../DTOs/DefaultExtraDataDTO';
diff --git a/src/Services/ERCalculator.ts b/src/Services/ERCalculator.ts
index 3b98680e09d1f1d5c774595cde7e3fdf8a6409c2..18a67dfa2086428304db4ab116794b0ee42a311b 100644
--- a/src/Services/ERCalculator.ts
+++ b/src/Services/ERCalculator.ts
@@ -140,7 +140,7 @@ const calculate1To5Years = (group: AgeGroup, params: number[]): GroupEnergeticRe
 const calculate6To17Years = (group: AgeGroup, params: number[], data: ExtraData): GroupEnergeticRequirement => {
   let tee: number;
   if (typeof (data.minorPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing minors\' physical activity prevalence data');
   } else {
     tee = calculateTEE(group, params, data.minorPAL);
   }
@@ -161,7 +161,7 @@ const calculate18To29Years = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -173,7 +173,7 @@ const calculate18To29Years = (group: AgeGroup, params: number[], data: ExtraData
   // the extra energy required by women that are pregnant or lactating
   if (group.sex === Sex.Female) {
     if (data.maternity18To29 === undefined) {
-      throw new Error('Missing data');
+      throw new Error('Missing maternity data for women aged 18 to 29');
     } else if (isIndividualMaternity(data.maternity18To29)) {
       requirement = calculateERWomenIndividual(group, params, data.maternity18To29, requirement);
     } else {
@@ -195,7 +195,7 @@ const calculate30To59Years = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -207,7 +207,7 @@ const calculate30To59Years = (group: AgeGroup, params: number[], data: ExtraData
   // the extra energy required by women that are pregnant or lactating
   if (group.sex === Sex.Female) {
     if (typeof (data.maternity30To59) === 'undefined') {
-      throw new Error('Missing data');
+      throw new Error('Missing maternity data for women aged 30 to 59');
     } else if (isIndividualMaternity(data.maternity30To59)) {
       requirement = calculateERWomenIndividual(group, params, data.maternity30To59, requirement);
     } else {
@@ -229,7 +229,7 @@ const calculate60PlusYears = (group: AgeGroup, params: number[], data: ExtraData
   let bmr: number;
   let pal: number;
   if (typeof (data.adultPAL) === 'undefined') {
-    throw new Error('Missing data');
+    throw new Error('Missing adults\' physical activity prevalence data');
   } else {
     bmr = calculateBMR(group, params);
     pal = calculatePAL(params, data.adultPAL);
@@ -308,7 +308,7 @@ const calculateER = (groupParameters: Map<number[], AgeGroup>, data: ExtraData):
         break;
       }
       default: {
-        throw new Error('Parsing error, attribute edad does not respect format');
+        throw new Error(`Parsing error, attribute edad does not respect format. ${group.age} is not a valid age bracket.`);
       }
     }
     totalRequirement += groupRequirement.total;
diff --git a/src/Services/ParameterService.ts b/src/Services/ParameterService.ts
index 194cd53ed392969741a397e23e00f4d20bf06ce8..fe73c58d3a13d62c1da423682e9a7484da670019 100644
--- a/src/Services/ParameterService.ts
+++ b/src/Services/ParameterService.ts
@@ -9,6 +9,7 @@ import EquationConstant from '../Models/EquationConstant';
 import DefaultWeight from '../Models/DefaultWeight';
 import DefaultWeightDTO from '../DTOs/DefaultWeightDTO';
 import ParameterWrapperDTO from '../DTOs/ParameterWrapperDTO';
+import { extraDataIDs } from '../Config/Constants';
 
 const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<number[]> => {
   const res: number[] = [];
@@ -75,7 +76,6 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
               res.push(constant.value);
             });
           });
-        console.log(res);
       } else {
         await DefaultExtraData.findAll({
           where: {
@@ -117,7 +117,6 @@ const getEquationValues = async (ageBracket: AgeBracket, sex: Sex): Promise<numb
               res.push(constant.value);
             });
           });
-        console.log(res);
       } else {
         await DefaultExtraData.findAll({
           where: {
@@ -208,15 +207,14 @@ const getParameters = async (): Promise<ParameterWrapperDTO> => {
   return res;
 };
 
-const updateEquationConstant = async (age: AgeBracket, s: Sex, ord: number, val: number):
-Promise<void> => {
+const updateEquationConstant = async (parameter: EquationConstantDTO): Promise<void> => {
   await EquationConstant.update(
-    { value: val },
+    { value: parameter.value },
     {
       where: {
-        ageRange: age,
-        sex: s,
-        order: ord,
+        ageRange: parameter.ageRange,
+        sex: parameter.sex,
+        order: parameter.order,
       },
     },
   ).catch((err) => {
@@ -224,13 +222,13 @@ Promise<void> => {
   });
 };
 
-const updateDefaultWeight = async (age: AgeBracket, s: Sex, val: number): Promise<void> => {
+const updateDefaultWeight = async (parameter: DefaultWeightDTO): Promise<void> => {
   await DefaultWeight.update(
-    { value: val },
+    { value: parameter.value },
     {
       where: {
-        ageRange: age,
-        sex: s,
+        ageRange: parameter.ageRange,
+        sex: parameter.sex,
       },
     },
   ).catch((err) => {
@@ -238,17 +236,70 @@ const updateDefaultWeight = async (age: AgeBracket, s: Sex, val: number): Promis
   });
 };
 
-const updateExtraData = async (identifier: string, val: number): Promise<void> => {
-  await DefaultExtraData.update(
-    { value: val },
-    {
-      where: {
-        id: identifier,
-      },
-    },
-  ).catch((err) => {
-    throw err;
+const updatePercentage = async (params: DefaultExtraDataDTO[], total: number): Promise<void> => {
+  if (total === 100) {
+    params.forEach(async (param: DefaultExtraDataDTO) => {
+      await DefaultExtraData.update(
+        { value: param.value },
+        {
+          where: {
+            id: param.id,
+          },
+        },
+      ).catch((err) => {
+        throw err;
+      });
+    });
+  } else {
+    throw new Error('These percentages must add up to 100');
+  }
+};
+
+const updateExtraData = async (parameters: DefaultExtraDataDTO[]): Promise<void> => {
+  const ids: string[] = [];
+  let total = 0;
+
+  parameters.forEach((param: DefaultExtraDataDTO) => {
+    ids.push(param.id);
+    total += param.value;
   });
+
+  if (ids.includes(extraDataIDs.minLowPrev)) {
+    if (ids.includes(extraDataIDs.minModPrev) && ids.includes(extraDataIDs.minIntPrev)) {
+      updatePercentage(parameters, total);
+    } else {
+      throw new Error('Missing parameter for update');
+    }
+  } else if (ids.includes(extraDataIDs.urbPopPerc)) {
+    if (ids.includes(extraDataIDs.rurPopPerc)) {
+      updatePercentage(parameters, total);
+    } else {
+      throw new Error('Missing parameter for update');
+    }
+  } else if (ids.includes(extraDataIDs.urbAdultActPerc)) {
+    if (ids.includes(extraDataIDs.urbAdultLowPerc)) {
+      updatePercentage(parameters, total);
+    } else {
+      throw new Error('Missing parameter for update');
+    }
+  } else if (ids.includes(extraDataIDs.rurAdultActPerc)) {
+    if (ids.includes(extraDataIDs.rurAdultLowPerc)) {
+      updatePercentage(parameters, total);
+    } else {
+      throw new Error('Missing parameter for update');
+    }
+  } else {
+    await DefaultExtraData.update(
+      { value: parameters[0].value },
+      {
+        where: {
+          id: parameters[0].id,
+        },
+      },
+    ).catch((err) => {
+      throw err;
+    });
+  }
 };
 
 export default {
diff --git a/src/Services/ParserService.ts b/src/Services/ParserService.ts
index 16ee980f3e3da9946be2186daba74d15bca66ca0..0b2384024a8058ef9f62d4ddd4929dad167687e9 100644
--- a/src/Services/ParserService.ts
+++ b/src/Services/ParserService.ts
@@ -41,159 +41,3 @@ const unparseGroup = (group: AgeGroup): AgeGroupJSON => {
 };
 
 export default { parseGroups, unparseGroup };
-
-// const parseSex = (sexo: string): Sex => {
-//   let sex: Sex = sexo;
-//   switch (sexo) {
-//     case 'Masculino': {
-//       sex = Sex.Masculino;
-//       break;
-//     }
-//     case 'Femenino': {
-//       sex = Sex.Femenino;
-//       break;
-//     }
-//     default: {
-//       throw new Error('Parsing error, attribute sexo does not respect format');
-//     }
-//   }
-//   return sex;
-// };
-//
-// const parseAge = (edad: string): AgeBracket => {
-//   let age: AgeBracket;
-//   switch (edad) {
-//     case '0 meses': {
-//       age = AgeBracket.m0;
-//       break;
-//     }
-//     case '1 mes': {
-//       age = AgeBracket.m1;
-//       break;
-//     }
-//     case '2 meses': {
-//       age = AgeBracket.m2;
-//       break;
-//     }
-//     case '3 meses': {
-//       age = AgeBracket.m3;
-//       break;
-//     }
-//     case '4 meses': {
-//       age = AgeBracket.m4;
-//       break;
-//     }
-//     case '5 meses': {
-//       age = AgeBracket.m5;
-//       break;
-//     }
-//     case '6 meses': {
-//       age = AgeBracket.m6;
-//       break;
-//     }
-//     case '7 meses': {
-//       age = AgeBracket.m7;
-//       break;
-//     }
-//     case '8 meses': {
-//       age = AgeBracket.m8;
-//       break;
-//     }
-//     case '9 meses': {
-//       age = AgeBracket.m9;
-//       break;
-//     }
-//     case '10 meses': {
-//       age = AgeBracket.m10;
-//       break;
-//     }
-//     case '11 meses': {
-//       age = AgeBracket.m11;
-//       break;
-//     }
-//     case '1 año': {
-//       age = AgeBracket.a1;
-//       break;
-//     }
-//     case '2 años': {
-//       age = AgeBracket.a2;
-//       break;
-//     }
-//     case '3 años': {
-//       age = AgeBracket.a3;
-//       break;
-//     }
-//     case '4 años': {
-//       age = AgeBracket.a4;
-//       break;
-//     }
-//     case '5 años': {
-//       age = AgeBracket.a5;
-//       break;
-//     }
-//     case '6 años': {
-//       age = AgeBracket.a6;
-//       break;
-//     }
-//     case '7 años': {
-//       age = AgeBracket.a7;
-//       break;
-//     }
-//     case '8 años': {
-//       age = AgeBracket.a8;
-//       break;
-//     }
-//     case '9 años': {
-//       age = AgeBracket.a9;
-//       break;
-//     }
-//     case '10 años': {
-//       age = AgeBracket.a10;
-//       break;
-//     }
-//     case '11 años': {
-//       age = AgeBracket.a11;
-//       break;
-//     }
-//     case '12 años': {
-//       age = AgeBracket.a12;
-//       break;
-//     }
-//     case '13 años': {
-//       age = AgeBracket.a13;
-//       break;
-//     }
-//     case '14 años': {
-//       age = AgeBracket.a14;
-//       break;
-//     }
-//     case '15 años': {
-//       age = AgeBracket.a15;
-//       break;
-//     }
-//     case '16 años': {
-//       age = AgeBracket.a16;
-//       break;
-//     }
-//     case '17 años': {
-//       age = AgeBracket.a17;
-//       break;
-//     }
-//     case '18-29 años': {
-//       age = AgeBracket.a18_29;
-//       break;
-//     }
-//     case '30-59 años': {
-//       age = AgeBracket.a30_59;
-//       break;
-//     }
-//     case '60+ años': {
-//       age = AgeBracket.a60;
-//       break;
-//     }
-//     default: {
-//       throw new Error('Parsing error, attribute edad does not respect format');
-//     }
-//   }
-//   return age;
-// };