diff --git a/hardhat.config.ts b/hardhat.config.ts
index 030a780d..47c26680 100644
--- a/hardhat.config.ts
+++ b/hardhat.config.ts
@@ -3,9 +3,10 @@ import fs from 'fs';
 import { HardhatUserConfig } from 'hardhat/types';
 // @ts-ignore
 import { accounts } from './test-wallets.js';
-import { eEthereumNetwork } from './helpers/types';
+import { eEthereumNetwork, eNetwork, ePolygonNetwork, eXDaiNetwork } from './helpers/types';
 import { BUIDLEREVM_CHAINID, COVERAGE_CHAINID } from './helpers/buidler-constants';
-
+import { NETWORKS_RPC_URL, NETWORKS_DEFAULT_GAS } from './helper-hardhat-config';
+ 
 require('dotenv').config();
 
 import '@nomiclabs/hardhat-ethers';
@@ -18,10 +19,7 @@ import '@tenderly/hardhat-tenderly';
 const SKIP_LOAD = process.env.SKIP_LOAD === 'true';
 const DEFAULT_BLOCK_GAS_LIMIT = 12450000;
 const DEFAULT_GAS_MUL = 5;
-const DEFAULT_GAS_PRICE = 65 * 1000 * 1000 * 1000;
 const HARDFORK = 'istanbul';
-const INFURA_KEY = process.env.INFURA_KEY || '';
-const ALCHEMY_KEY = process.env.ALCHEMY_KEY || '';
 const ETHERSCAN_KEY = process.env.ETHERSCAN_KEY || '';
 const MNEMONIC_PATH = "m/44'/60'/0'/0";
 const MNEMONIC = process.env.MNEMONIC || '';
@@ -43,58 +41,25 @@ if (!SKIP_LOAD) {
 
 require(`${path.join(__dirname, 'tasks/misc')}/set-bre.ts`);
 
-const getCommonNetworkConfig = (networkName: eEthereumNetwork, networkId: number) => {
-  const net = networkName === 'main' ? 'mainnet' : networkName;
-  if (networkName == 'matic') return {
-    url: 'https://rpc-mainnet.matic.network',
-    blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
-    gasMultiplier: DEFAULT_GAS_MUL,
-    gasPrice: 7500000000,
-    chainId: networkId,
-    accounts: {
-      mnemonic: MNEMONIC,
-      path: MNEMONIC_PATH,
-      initialIndex: 0,
-      count: 20,
-    },
-  }
-  if (networkName == 'mumbai') return {
-    url: 'https://rpc-mumbai.maticvigil.com',
-    blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
-    gasMultiplier: DEFAULT_GAS_MUL,
-    gasPrice: 1 * 1000 * 1000 * 1000,
-    chainId: networkId,
-    accounts: {
-      mnemonic: MNEMONIC,
-      path: MNEMONIC_PATH,
-      initialIndex: 0,
-      count: 20,
-    },
-  }
-  return {
-    url: ALCHEMY_KEY
-      ? `https://eth-${net}.alchemyapi.io/v2/${ALCHEMY_KEY}`
-      : `https://${net}.infura.io/v3/${INFURA_KEY}`,
-    hardfork: HARDFORK,
-    blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
-    gasMultiplier: DEFAULT_GAS_MUL,
-    gasPrice: DEFAULT_GAS_PRICE,
-    chainId: networkId,
-    accounts: {
-      mnemonic: MNEMONIC,
-      path: MNEMONIC_PATH,
-      initialIndex: 0,
-      count: 20,
-    },
-  };
-};
+const getCommonNetworkConfig = (networkName: eNetwork, networkId: number) => ({
+  url: NETWORKS_RPC_URL[networkName],
+  hardfork: HARDFORK,
+  blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
+  gasMultiplier: DEFAULT_GAS_MUL,
+  gasPrice: NETWORKS_DEFAULT_GAS[networkName],
+  chainId: networkId,
+  accounts: {
+    mnemonic: MNEMONIC,
+    path: MNEMONIC_PATH,
+    initialIndex: 0,
+    count: 20,
+  },
+});
 
 const mainnetFork = MAINNET_FORK
   ? {
       blockNumber: 11739065,
-      url: ALCHEMY_KEY
-        ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}`
-        : `https://mainnet.infura.io/v3/${INFURA_KEY}`,
+      url: NETWORKS_RPC_URL['main'],
     }
   : undefined;
 
@@ -130,8 +95,9 @@ const buidlerConfig: HardhatUserConfig = {
     ropsten: getCommonNetworkConfig(eEthereumNetwork.ropsten, 3),
     main: getCommonNetworkConfig(eEthereumNetwork.main, 1),
     tenderlyMain: getCommonNetworkConfig(eEthereumNetwork.main, 1),
-    matic: getCommonNetworkConfig(eEthereumNetwork.matic, 137),
-    mumbai: getCommonNetworkConfig(eEthereumNetwork.mumbai, 80001),
+    matic: getCommonNetworkConfig(ePolygonNetwork.matic, 137),
+    mumbai: getCommonNetworkConfig(ePolygonNetwork.mumbai, 80001),
+    xdai: getCommonNetworkConfig(eXDaiNetwork.xdai, 100),
     hardhat: {
       hardfork: 'istanbul',
       blockGasLimit: DEFAULT_BLOCK_GAS_LIMIT,
diff --git a/helper-hardhat-config.ts b/helper-hardhat-config.ts
new file mode 100644
index 00000000..c25f7b9f
--- /dev/null
+++ b/helper-hardhat-config.ts
@@ -0,0 +1,43 @@
+// @ts-ignore
+import { eEthereumNetwork, ePolygonNetwork, eXDaiNetwork, iParamsPerNetwork } from './helpers/types';
+
+require('dotenv').config();
+
+const INFURA_KEY = process.env.INFURA_KEY || '';
+const ALCHEMY_KEY = process.env.ALCHEMY_KEY || '';
+
+const GWEI = 1000 * 1000 * 1000;
+
+export const NETWORKS_RPC_URL: iParamsPerNetwork<string> = {
+  [eEthereumNetwork.kovan]: ALCHEMY_KEY
+    ? `https://eth-kovan.alchemyapi.io/v2/${ALCHEMY_KEY}`
+    : `https://kovan.infura.io/v3/${INFURA_KEY}`,
+  [eEthereumNetwork.ropsten]: ALCHEMY_KEY
+    ? `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_KEY}`
+    : `https://ropsten.infura.io/v3/${INFURA_KEY}`,
+  [eEthereumNetwork.main]: ALCHEMY_KEY
+    ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}`
+    : `https://mainnet.infura.io/v3/${INFURA_KEY}`,
+  [eEthereumNetwork.coverage]: 'http://localhost:8555',
+  [eEthereumNetwork.hardhat]: 'http://localhost:8545',
+  [eEthereumNetwork.buidlerevm]: 'http://localhost:8545',
+  [eEthereumNetwork.tenderlyMain]: ALCHEMY_KEY
+    ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}`
+    : `https://mainnet.infura.io/v3/${INFURA_KEY}`,
+  [ePolygonNetwork.mumbai]: 'https://rpc-mumbai.maticvigil.com',
+  [ePolygonNetwork.matic]: 'https://rpc-mainnet.matic.network',
+  [eXDaiNetwork.xdai]: 'https://rpc.xdaichain.com/',
+}
+
+export const NETWORKS_DEFAULT_GAS: iParamsPerNetwork<number> = {
+  [eEthereumNetwork.kovan]: 65 * GWEI ,
+  [eEthereumNetwork.ropsten]: 65 * GWEI ,
+  [eEthereumNetwork.main]: 65 * GWEI ,
+  [eEthereumNetwork.coverage]: 65 * GWEI ,
+  [eEthereumNetwork.hardhat]: 65 * GWEI ,
+  [eEthereumNetwork.buidlerevm]: 65 * GWEI ,
+  [eEthereumNetwork.tenderlyMain]: 65 * GWEI ,
+  [ePolygonNetwork.mumbai]: 1 * GWEI ,
+  [ePolygonNetwork.matic]: 2 * GWEI ,
+  [eXDaiNetwork.xdai]: 1 * GWEI,
+}
\ No newline at end of file
diff --git a/helpers/configuration.ts b/helpers/configuration.ts
index 894dc11f..618eec82 100644
--- a/helpers/configuration.ts
+++ b/helpers/configuration.ts
@@ -4,12 +4,12 @@ import {
   IReserveParams,
   PoolConfiguration,
   ICommonConfiguration,
-  eEthereumNetwork,
+  eNetwork,
 } from './types';
 import { getParamPerPool } from './contracts-helpers';
 import AaveConfig from '../markets/aave';
-import LpConfig from '../markets/lp';
-import MaticConfig from '../markets/matic'
+import MaticConfig from '../markets/matic';
+import AmmConfig from '../markets/amm';
 import { CommonsConfig } from '../markets/aave/commons';
 import { DRE, filterMapBy } from './misc-utils';
 import { tEthereumAddress } from './types';
@@ -19,18 +19,18 @@ import { deployWETHMocked } from './contracts-deployments';
 export enum ConfigNames {
   Commons = 'Commons',
   Aave = 'Aave',
-  Lp = 'Lp',
   Matic = 'Matic',
+  Amm = 'Amm',
 }
 
 export const loadPoolConfig = (configName: ConfigNames): PoolConfiguration => {
   switch (configName) {
     case ConfigNames.Aave:
       return AaveConfig;
-    case ConfigNames.Lp:
-        return LpConfig;
     case ConfigNames.Matic:
-        return MaticConfig;
+      return MaticConfig;
+    case ConfigNames.Amm:
+        return AmmConfig;
     case ConfigNames.Commons:
       return CommonsConfig;
     default:
@@ -48,10 +48,10 @@ export const getReservesConfigByPool = (pool: AavePools): iMultiPoolsAssets<IRes
       [AavePools.proto]: {
         ...AaveConfig.ReservesConfig,
       },
-      [AavePools.lp]: {
-        ...LpConfig.ReservesConfig,
+      [AavePools.amm]: {
+        ...AmmConfig.ReservesConfig,
       },
-      [AavePools.matic] : {
+      [AavePools.matic]: {
         ...MaticConfig.ReservesConfig,
       },
     },
@@ -62,7 +62,7 @@ export const getGenesisPoolAdmin = async (
   config: ICommonConfiguration
 ): Promise<tEthereumAddress> => {
   const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name;
-  const targetAddress = getParamPerNetwork(config.PoolAdmin, <eEthereumNetwork>currentNetwork);
+  const targetAddress = getParamPerNetwork(config.PoolAdmin, <eNetwork>currentNetwork);
   if (targetAddress) {
     return targetAddress;
   }
@@ -77,7 +77,7 @@ export const getEmergencyAdmin = async (
   config: ICommonConfiguration
 ): Promise<tEthereumAddress> => {
   const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name;
-  const targetAddress = getParamPerNetwork(config.EmergencyAdmin, <eEthereumNetwork>currentNetwork);
+  const targetAddress = getParamPerNetwork(config.EmergencyAdmin, <eNetwork>currentNetwork);
   if (targetAddress) {
     return targetAddress;
   }
@@ -92,17 +92,17 @@ export const getTreasuryAddress = async (
   config: ICommonConfiguration
 ): Promise<tEthereumAddress> => {
   const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name;
-  return getParamPerNetwork(config.ReserveFactorTreasuryAddress, <eEthereumNetwork>currentNetwork);
+  return getParamPerNetwork(config.ReserveFactorTreasuryAddress, <eNetwork>currentNetwork);
 };
 
 export const getATokenDomainSeparatorPerNetwork = (
-  network: eEthereumNetwork,
+  network: eNetwork,
   config: ICommonConfiguration
 ): tEthereumAddress => getParamPerNetwork<tEthereumAddress>(config.ATokenDomainSeparator, network);
 
 export const getWethAddress = async (config: ICommonConfiguration) => {
   const currentNetwork = process.env.MAINNET_FORK === 'true' ? 'main' : DRE.network.name;
-  const wethAddress = getParamPerNetwork(config.WETH, <eEthereumNetwork>currentNetwork);
+  const wethAddress = getParamPerNetwork(config.WETH, <eNetwork>currentNetwork);
   if (wethAddress) {
     return wethAddress;
   }
diff --git a/helpers/constants.ts b/helpers/constants.ts
index cb66e8a1..31b255a1 100644
--- a/helpers/constants.ts
+++ b/helpers/constants.ts
@@ -54,7 +54,7 @@ export const MOCK_CHAINLINK_AGGREGATORS_PRICES = {
   UniWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(),
   UniAAVEWETH: oneEther.multipliedBy('0.003620948469').toFixed(),
   UniBATWETH: oneEther.multipliedBy('22.407436').toFixed(),
-  UniUSDCDAI: oneEther.multipliedBy('22.407436').toFixed(),
+  UniDAIUSDC: oneEther.multipliedBy('22.407436').toFixed(),
   UniCRVWETH: oneEther.multipliedBy('22.407436').toFixed(),
   UniLINKWETH: oneEther.multipliedBy('0.009955').toFixed(),
   UniMKRWETH: oneEther.multipliedBy('22.407436').toFixed(),
@@ -66,5 +66,6 @@ export const MOCK_CHAINLINK_AGGREGATORS_PRICES = {
   UniYFIWETH: oneEther.multipliedBy('22.407436').toFixed(),
   BptWBTCWETH: oneEther.multipliedBy('22.407436').toFixed(),
   WMATIC: oneEther.multipliedBy('0.003620948469').toFixed(),
+  STAKE: oneEther.multipliedBy('0.003620948469').toFixed(),
   USD: '5848466240000000',
 };
diff --git a/helpers/contracts-getters.ts b/helpers/contracts-getters.ts
index aa96553f..0f70c48b 100644
--- a/helpers/contracts-getters.ts
+++ b/helpers/contracts-getters.ts
@@ -172,7 +172,7 @@ export const getPairsTokenAggregator = (
   },
   aggregatorsAddresses: { [tokenSymbol: string]: tEthereumAddress }
 ): [string[], string[]] => {
-  const { ETH, USD, WETH, LpWETH, ...assetsAddressesWithoutEth } = allAssetsAddresses;
+  const { ETH, USD, WETH, ...assetsAddressesWithoutEth } = allAssetsAddresses;
 
   const pairs = Object.entries(assetsAddressesWithoutEth).map(([tokenSymbol, tokenAddress]) => {
     //if (true/*tokenSymbol !== 'WETH' && tokenSymbol !== 'ETH' && tokenSymbol !== 'LpWETH'*/) {
diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts
index 2cd26f57..d7e50664 100644
--- a/helpers/contracts-helpers.ts
+++ b/helpers/contracts-helpers.ts
@@ -11,6 +11,13 @@ import {
   AavePools,
   iParamsPerNetwork,
   iParamsPerPool,
+  ePolygonNetwork,
+  eXDaiNetwork,
+  eNetwork,
+  iParamsPerNetworkAll,
+  iEthereumParamsPerNetwork,
+  iPolygonParamsPerNetwork,
+  iXDaiParamsPerNetwork,
 } from './types';
 import { MintableERC20 } from '../types/MintableERC20';
 import { Artifact } from 'hardhat/types';
@@ -132,10 +139,17 @@ export const linkBytecode = (artifact: BuidlerArtifact | Artifact, libraries: an
   return bytecode;
 };
 
-export const getParamPerNetwork = <T>(
-  { kovan, ropsten, main, buidlerevm, coverage, tenderlyMain, matic, mumbai }: iParamsPerNetwork<T>,
-  network: eEthereumNetwork
-) => {
+export const getParamPerNetwork = <T>(param: iParamsPerNetwork<T>, network: eNetwork) => {
+  const {
+    main,
+    ropsten,
+    kovan,
+    coverage,
+    buidlerevm,
+    tenderlyMain,
+  } = param as iEthereumParamsPerNetwork<T>;
+  const { matic, mumbai } = param as iPolygonParamsPerNetwork<T>;
+  const { xdai } = param as iXDaiParamsPerNetwork<T>;
   const MAINNET_FORK = process.env.MAINNET_FORK === 'true';
   if (MAINNET_FORK) {
     return main;
@@ -154,21 +168,25 @@ export const getParamPerNetwork = <T>(
       return ropsten;
     case eEthereumNetwork.main:
       return main;
-    case eEthereumNetwork.matic:
-      return matic;
-    case eEthereumNetwork.mumbai:
-      return mumbai;
     case eEthereumNetwork.tenderlyMain:
       return tenderlyMain;
+    case ePolygonNetwork.matic:
+      return matic;
+    case ePolygonNetwork.mumbai:
+      return mumbai;
+    case eXDaiNetwork.xdai:
+      return xdai;
   }
 };
 
-export const getParamPerPool = <T>({ proto, lp }: iParamsPerPool<T>, pool: AavePools) => {
+export const getParamPerPool = <T>({ proto, amm, matic }: iParamsPerPool<T>, pool: AavePools) => {
   switch (pool) {
     case AavePools.proto:
       return proto;
-      case AavePools.lp:
-        return lp;
+    case AavePools.amm:
+      return amm;
+    case AavePools.matic:
+      return matic;
     default:
       return proto;
   }
diff --git a/helpers/init-helpers.ts b/helpers/init-helpers.ts
index 308a3087..7d8f7eb4 100644
--- a/helpers/init-helpers.ts
+++ b/helpers/init-helpers.ts
@@ -1,6 +1,7 @@
 import {
   eContractid,
   eEthereumNetwork,
+  eNetwork,
   iMultiPoolsAssets,
   IReserveParams,
   tEthereumAddress,
@@ -69,21 +70,21 @@ export const initReservesByHelper = async (
   let reserveSymbols: string[] = [];
 
   let initInputParams: {
-    aTokenImpl: string,
-    stableDebtTokenImpl: string,
-    variableDebtTokenImpl: string,
-    underlyingAssetDecimals: BigNumberish,
-    interestRateStrategyAddress: string,
-    underlyingAsset: string,
-    treasury: string,
-    incentivesController: string,
-    underlyingAssetName: string,
-    aTokenName: string,
-    aTokenSymbol: string,
-    variableDebtTokenName: string,
-    variableDebtTokenSymbol: string,
-    stableDebtTokenName: string,
-    stableDebtTokenSymbol: string,
+    aTokenImpl: string;
+    stableDebtTokenImpl: string;
+    variableDebtTokenImpl: string;
+    underlyingAssetDecimals: BigNumberish;
+    interestRateStrategyAddress: string;
+    underlyingAsset: string;
+    treasury: string;
+    incentivesController: string;
+    underlyingAssetName: string;
+    aTokenName: string;
+    aTokenSymbol: string;
+    variableDebtTokenName: string;
+    variableDebtTokenSymbol: string;
+    stableDebtTokenName: string;
+    stableDebtTokenSymbol: string;
   }[] = [];
 
   let strategyRates: [
@@ -99,12 +100,12 @@ export const initReservesByHelper = async (
   let strategyAddresses: Record<string, tEthereumAddress> = {};
   let strategyAddressPerAsset: Record<string, string> = {};
   let aTokenType: Record<string, string> = {};
-  let delegationAwareATokenImplementationAddress = "";
-  let aTokenImplementationAddress = "";
-  let stableDebtTokenImplementationAddress = "";
-  let variableDebtTokenImplementationAddress = "";
+  let delegationAwareATokenImplementationAddress = '';
+  let aTokenImplementationAddress = '';
+  let stableDebtTokenImplementationAddress = '';
+  let variableDebtTokenImplementationAddress = '';
 
-  // NOT WORKING ON MATIC
+  // NOT WORKING ON MATIC, DEPLOYING INDIVIDUAL IMPLs INSTEAD
   // const tx1 = await waitForTx(
   //   await stableAndVariableDeployer.initDeployment([ZERO_ADDRESS], ["1"])
   // );
@@ -130,21 +131,20 @@ export const initReservesByHelper = async (
   if (delegatedAwareReserves.length > 0) {
     const delegationAwareATokenImplementation = await deployDelegationAwareATokenImpl(verify);
     delegationAwareATokenImplementationAddress = delegationAwareATokenImplementation.address;
-    rawInsertContractAddressInDb(`delegationAwareATokenImpl`, delegationAwareATokenImplementationAddress);
+    rawInsertContractAddressInDb(
+      `delegationAwareATokenImpl`,
+      delegationAwareATokenImplementationAddress
+    );
   }
 
   const reserves = Object.entries(reservesParams).filter(
-    ([_, { aTokenImpl }]) => aTokenImpl === eContractid.DelegationAwareAToken ||
-    aTokenImpl === eContractid.AToken
+    ([_, { aTokenImpl }]) =>
+      aTokenImpl === eContractid.DelegationAwareAToken || aTokenImpl === eContractid.AToken
   ) as [string, IReserveParams][];
 
   for (let [symbol, params] of reserves) {
+    const { strategy, aTokenImpl, reserveDecimals } = params;
     const {
-      strategy,
-      aTokenImpl,
-      reserveDecimals,
-    } = params;
-    const { 
       optimalUtilizationRate,
       baseVariableBorrowRate,
       variableRateSlope1,
@@ -152,7 +152,7 @@ export const initReservesByHelper = async (
       stableRateSlope1,
       stableRateSlope2,
     } = strategy;
-    if (!strategyAddresses[strategy.name]) { 
+    if (!strategyAddresses[strategy.name]) {
       // Strategy does not exist, create a new one
       rateStrategies[strategy.name] = [
         addressProvider.address,
@@ -163,21 +163,20 @@ export const initReservesByHelper = async (
         stableRateSlope1,
         stableRateSlope2,
       ];
-      strategyAddresses[strategy.name] = (await deployDefaultReserveInterestRateStrategy(
-        rateStrategies[strategy.name],
-        verify
-      )).address;
+      strategyAddresses[strategy.name] = (
+        await deployDefaultReserveInterestRateStrategy(rateStrategies[strategy.name], verify)
+      ).address;
       // This causes the last strategy to be printed twice, once under "DefaultReserveInterestRateStrategy"
       // and once under the actual `strategyASSET` key.
       rawInsertContractAddressInDb(strategy.name, strategyAddresses[strategy.name]);
     }
     strategyAddressPerAsset[symbol] = strategyAddresses[strategy.name];
-    console.log("Strategy address for asset %s: %s", symbol, strategyAddressPerAsset[symbol])
+    console.log('Strategy address for asset %s: %s', symbol, strategyAddressPerAsset[symbol]);
 
     if (aTokenImpl === eContractid.AToken) {
-      aTokenType[symbol] = "generic";
+      aTokenType[symbol] = 'generic';
     } else if (aTokenImpl === eContractid.DelegationAwareAToken) {
-      aTokenType[symbol] = "delegation aware";
+      aTokenType[symbol] = 'delegation aware';
     }
 
     reserveInitDecimals.push(reserveDecimals);
@@ -185,7 +184,7 @@ export const initReservesByHelper = async (
     reserveSymbols.push(symbol);
   }
 
-  for (let i = 0; i < reserveSymbols.length; i ++) {
+  for (let i = 0; i < reserveSymbols.length; i++) {
     let aTokenToUse: string;
     if (aTokenType[reserveSymbols[i]] === 'generic') {
       aTokenToUse = aTokenImplementationAddress;
@@ -195,7 +194,7 @@ export const initReservesByHelper = async (
 
     initInputParams.push({
       aTokenImpl: aTokenToUse,
-      stableDebtTokenImpl: stableDebtTokenImplementationAddress, 
+      stableDebtTokenImpl: stableDebtTokenImplementationAddress,
       variableDebtTokenImpl: variableDebtTokenImplementationAddress,
       underlyingAssetDecimals: reserveInitDecimals[i],
       interestRateStrategyAddress: strategyAddressPerAsset[reserveSymbols[i]],
@@ -208,7 +207,7 @@ export const initReservesByHelper = async (
       variableDebtTokenName: `${variableDebtTokenNamePrefix} ${symbolPrefix}${reserveSymbols[i]}`,
       variableDebtTokenSymbol: `variableDebt${symbolPrefix}${reserveSymbols[i]}`,
       stableDebtTokenName: `${stableDebtTokenNamePrefix} ${reserveSymbols[i]}`,
-      stableDebtTokenSymbol: `stableDebt${symbolPrefix}${reserveSymbols[i]}`
+      stableDebtTokenSymbol: `stableDebt${symbolPrefix}${reserveSymbols[i]}`,
     });
   }
 
@@ -217,7 +216,7 @@ export const initReservesByHelper = async (
   const chunkedInitInputParams = chunk(initInputParams, initChunks);
 
   const configurator = await getLendingPoolConfiguratorProxy();
-  await waitForTx(await addressProvider.setPoolAdmin(admin));
+  //await waitForTx(await addressProvider.setPoolAdmin(admin));
 
   console.log(`- Reserves initialization in ${chunkedInitInputParams.length} txs`);
   for (let chunkIndex = 0; chunkIndex < chunkedInitInputParams.length; chunkIndex++) {
@@ -230,7 +229,7 @@ export const initReservesByHelper = async (
     //gasUsage = gasUsage.add(tx3.gasUsed);
   }
 
-  return gasUsage;  // Deprecated
+  return gasUsage; // Deprecated
 };
 
 export const getPairsTokenAggregator = (
@@ -276,7 +275,7 @@ export const configureReservesByHelper = async (
   const reserveFactors: string[] = [];
   const stableRatesEnabled: boolean[] = [];
 
-  const inputParams : {
+  const inputParams: {
     asset: string;
     baseLTV: BigNumberish;
     liquidationThreshold: BigNumberish;
@@ -319,7 +318,7 @@ export const configureReservesByHelper = async (
       liquidationThreshold: liquidationThreshold,
       liquidationBonus: liquidationBonus,
       reserveFactor: reserveFactor,
-      stableBorrowingEnabled: stableBorrowRateEnabled
+      stableBorrowingEnabled: stableBorrowRateEnabled,
     });
 
     tokens.push(tokenAddress);
@@ -342,10 +341,9 @@ export const configureReservesByHelper = async (
     console.log(`- Configure reserves in ${chunkedInputParams.length} txs`);
     for (let chunkIndex = 0; chunkIndex < chunkedInputParams.length; chunkIndex++) {
       await waitForTx(
-        await atokenAndRatesDeployer.configureReserves(
-          chunkedInputParams[chunkIndex],
-          { gasLimit: 12000000 }
-        )
+        await atokenAndRatesDeployer.configureReserves(chunkedInputParams[chunkIndex], {
+          gasLimit: 12000000,
+        })
       );
       console.log(`  - Init for: ${chunkedSymbols[chunkIndex].join(', ')}`);
     }
@@ -356,7 +354,7 @@ export const configureReservesByHelper = async (
 
 const getAddressById = async (
   id: string,
-  network: eEthereumNetwork
+  network: eNetwork
 ): Promise<tEthereumAddress | undefined> =>
   (await getDb().get(`${id}.${network}`).value())?.address || undefined;
 
@@ -388,7 +386,7 @@ export const initTokenReservesByHelper = async (
   const poolAddress = await addressProvider.getLendingPool();
 
   // Set aTokenAndRatesDeployer as temporal admin
-  await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address));
+  //await waitForTx(await addressProvider.setPoolAdmin(atokenAndRatesDeployer.address));
 
   // CHUNK CONFIGURATION
   const initChunks = 4;
@@ -403,27 +401,25 @@ export const initTokenReservesByHelper = async (
   let reserveSymbols: string[] = [];
 
   let initInputParams: {
-    aTokenImpl: string,
-    stableDebtTokenImpl: string,
-    variableDebtTokenImpl: string,
-    underlyingAssetDecimals: BigNumberish,
-    interestRateStrategyAddress: string,
-    underlyingAsset: string,
-    treasury: string,
-    incentivesController: string,
-    underlyingAssetName: string,
-    aTokenName: string,
-    aTokenSymbol: string,
-    variableDebtTokenName: string,
-    variableDebtTokenSymbol: string,
-    stableDebtTokenName: string,
-    stableDebtTokenSymbol: string,
+    aTokenImpl: string;
+    stableDebtTokenImpl: string;
+    variableDebtTokenImpl: string;
+    underlyingAssetDecimals: BigNumberish;
+    interestRateStrategyAddress: string;
+    underlyingAsset: string;
+    treasury: string;
+    incentivesController: string;
+    underlyingAssetName: string;
+    aTokenName: string;
+    aTokenSymbol: string;
+    variableDebtTokenName: string;
+    variableDebtTokenSymbol: string;
+    stableDebtTokenName: string;
+    stableDebtTokenSymbol: string;
   }[] = [];
 
   const network =
-    process.env.MAINNET_FORK === 'true'
-      ? eEthereumNetwork.main
-      : (DRE.network.name as eEthereumNetwork);
+    process.env.MAINNET_FORK === 'true' ? eEthereumNetwork.main : (DRE.network.name as eNetwork);
   // Grab config from DB
   for (const [symbol, address] of Object.entries(tokenAddresses)) {
     const { aTokenAddress } = await protocolDataProvider.getReserveTokensAddresses(address);
@@ -439,10 +435,11 @@ export const initTokenReservesByHelper = async (
     }
     let stableTokenImpl = await getAddressById(`stableDebtTokenImpl`, network);
     let variableTokenImpl = await getAddressById(`variableDebtTokenImpl`, network);
-    let aTokenImplementation: string | undefined = "";
-    const [, { aTokenImpl, strategy }] = (Object.entries(reservesParams) as [string, IReserveParams][])[
-      reserveParamIndex
-    ];
+    let aTokenImplementation: string | undefined = '';
+    const [, { aTokenImpl, strategy }] = (Object.entries(reservesParams) as [
+      string,
+      IReserveParams
+    ][])[reserveParamIndex];
     if (aTokenImpl === eContractid.AToken) {
       aTokenImplementation = await getAddressById(`aTokenImpl`, network);
     } else if (aTokenImpl === eContractid.DelegationAwareAToken) {
@@ -458,7 +455,7 @@ export const initTokenReservesByHelper = async (
           tokenAddresses[symbol],
           ZERO_ADDRESS, // Incentives controller
           `Aave stable debt bearing ${symbol}`,
-          `stableDebt${symbol}`
+          `stableDebt${symbol}`,
         ],
         verify
       );
@@ -471,7 +468,7 @@ export const initTokenReservesByHelper = async (
           tokenAddresses[symbol],
           ZERO_ADDRESS, // Incentives Controller
           `Aave variable debt bearing ${symbol}`,
-          `variableDebt${symbol}`
+          `variableDebt${symbol}`,
         ],
         verify
       );
@@ -489,19 +486,16 @@ export const initTokenReservesByHelper = async (
           treasuryAddress,
           ZERO_ADDRESS,
           `Aave interest bearing ${symbol}`,
-          `a${symbol}`
+          `a${symbol}`,
         ],
         verify
       );
       aTokenImplementation = aToken.address;
     }
     if (!strategyImpl) {
-      const [
-        ,
-        {
-          strategy
-        },
-      ] = (Object.entries(reservesParams) as [string, IReserveParams][])[reserveParamIndex];
+      const [, { strategy }] = (Object.entries(reservesParams) as [string, IReserveParams][])[
+        reserveParamIndex
+      ];
       const {
         optimalUtilizationRate,
         baseVariableBorrowRate,
@@ -543,10 +537,10 @@ export const initTokenReservesByHelper = async (
     reserveSymbols.push(symbol);
   }
 
-  for (let i = 0; i < deployedATokens.length; i ++) {
+  for (let i = 0; i < deployedATokens.length; i++) {
     initInputParams.push({
       aTokenImpl: deployedATokens[i],
-      stableDebtTokenImpl: deployedStableTokens[i], 
+      stableDebtTokenImpl: deployedStableTokens[i],
       variableDebtTokenImpl: deployedVariableTokens[i],
       underlyingAssetDecimals: reserveInitDecimals[i],
       interestRateStrategyAddress: deployedRates[i],
@@ -559,7 +553,7 @@ export const initTokenReservesByHelper = async (
       variableDebtTokenName: `Aave variable debt bearing ${reserveSymbols[i]}`,
       variableDebtTokenSymbol: `variableDebt${reserveSymbols[i]}`,
       stableDebtTokenName: `Aave stable debt bearing ${reserveSymbols[i]}`,
-      stableDebtTokenSymbol: `stableDebt${reserveSymbols[i]}`
+      stableDebtTokenSymbol: `stableDebt${reserveSymbols[i]}`,
     });
   }
 
@@ -568,7 +562,7 @@ export const initTokenReservesByHelper = async (
   const chunkedInitInputParams = chunk(initInputParams, initChunks);
 
   const configurator = await getLendingPoolConfiguratorProxy();
-  await waitForTx(await addressProvider.setPoolAdmin(admin));
+  //await waitForTx(await addressProvider.setPoolAdmin(admin));
 
   console.log(`- Reserves initialization in ${chunkedInitInputParams.length} txs`);
   for (let chunkIndex = 0; chunkIndex < chunkedInitInputParams.length; chunkIndex++) {
@@ -581,7 +575,7 @@ export const initTokenReservesByHelper = async (
   }
 
   // Set deployer back as admin
-  await waitForTx(await addressProvider.setPoolAdmin(admin));
+  //await waitForTx(await addressProvider.setPoolAdmin(admin));
   return gasUsage;  // No longer relevant
 };
 
diff --git a/helpers/types.ts b/helpers/types.ts
index d8e17fcf..d0a5fb43 100644
--- a/helpers/types.ts
+++ b/helpers/types.ts
@@ -4,6 +4,8 @@ export interface SymbolMap<T> {
   [symbol: string]: T;
 }
 
+export type eNetwork = eEthereumNetwork | ePolygonNetwork | eXDaiNetwork;
+
 export enum eEthereumNetwork {
   buidlerevm = 'buidlerevm',
   kovan = 'kovan',
@@ -12,22 +14,30 @@ export enum eEthereumNetwork {
   coverage = 'coverage',
   hardhat = 'hardhat',
   tenderlyMain = 'tenderlyMain',
+}
+
+export enum ePolygonNetwork {
   matic = 'matic',
   mumbai = 'mumbai',
 }
 
+export enum eXDaiNetwork {
+  xdai = 'xdai',
+}
+
 export enum EthereumNetworkNames {
   kovan = 'kovan',
   ropsten = 'ropsten',
   main = 'main',
   matic = 'matic',
   mumbai = 'mumbai',
+  xdai = 'xdai',
 }
 
 export enum AavePools {
   proto = 'proto',
-  lp = 'lp',
   matic = 'matic',
+  amm = 'amm',
 }
 
 export enum eContractid {
@@ -210,16 +220,11 @@ export interface iAssetBase<T> {
   USD: T;
   REN: T;
   ENJ: T;
-  // LpWETH: T;
-  // LpWBTC: T;
-  // LpDAI: T;
-  // LpUSDC: T;
-  // LpUSDT: T;
   UniDAIWETH: T;
   UniWBTCWETH: T;
   UniAAVEWETH: T;
   UniBATWETH: T;
-  UniUSDCDAI: T;
+  UniDAIUSDC: T;
   UniCRVWETH: T;
   UniLINKWETH: T;
   UniMKRWETH: T;
@@ -231,6 +236,7 @@ export interface iAssetBase<T> {
   UniYFIWETH: T;
   BptWBTCWETH: T;
   WMATIC: T;
+  STAKE: T;
 }
 
 export type iAssetsWithoutETH<T> = Omit<iAssetBase<T>, 'ETH'>;
@@ -272,7 +278,7 @@ export type iLpPoolAssets<T> = Pick<
   | 'UniWBTCWETH'
   | 'UniAAVEWETH'
   | 'UniBATWETH'
-  | 'UniUSDCDAI'
+  | 'UniDAIUSDC'
   | 'UniCRVWETH'
   | 'UniLINKWETH'
   | 'UniMKRWETH'
@@ -290,6 +296,11 @@ export type iMaticPoolAssets<T> = Pick<
   'DAI' | 'USDC' | 'USDT' | 'WBTC' | 'WETH' | 'WMATIC'
 >;
 
+export type iXDAIPoolAssets<T> = Pick<
+  iAssetsWithoutUSD<T>,
+  'DAI' | 'USDC' | 'USDT' | 'WBTC' | 'WETH' | 'STAKE'
+>;
+
 export type iMultiPoolsAssets<T> = iAssetCommon<T> | iAavePoolAssets<T>;
 
 export type iAavePoolTokens<T> = Omit<iAavePoolAssets<T>, 'ETH'>;
@@ -318,16 +329,11 @@ export enum TokenContractId {
   YFI = 'YFI',
   UNI = 'UNI',
   ENJ = 'ENJ',
-  // LpWETH = 'LpWETH',
-  // LpWBTC = 'LpWBTC',
-  // LpDAI = 'LpDAI',
-  // LpUSDC = 'LpUSDC',
-  // LpUSDT = 'LpUSDT',
   UniDAIWETH = 'UniDAIWETH',
   UniWBTCWETH = 'UniWBTCWETH',
   UniAAVEWETH = 'UniAAVEWETH',
   UniBATWETH = 'UniBATWETH',
-  UniUSDCDAI = 'UniUSDCDAI',
+  UniDAIUSDC = 'UniDAIUSDC',
   UniCRVWETH = 'UniCRVWETH',
   UniLINKWETH = 'UniLINKWETH',
   UniMKRWETH = 'UniMKRWETH',
@@ -339,6 +345,7 @@ export enum TokenContractId {
   UniYFIWETH = 'UniYFIWETH',
   BptWBTCWETH = 'BptWBTCWETH',
   WMATIC = 'WMATIC',
+  STAKE = 'STAKE',
 }
 
 export interface IReserveParams extends IReserveBorrowParams, IReserveCollateralParams {
@@ -378,7 +385,17 @@ export interface IMarketRates {
   borrowRate: string;
 }
 
-export interface iParamsPerNetwork<T> {
+export type iParamsPerNetwork<T> =
+  | iEthereumParamsPerNetwork<T>
+  | iPolygonParamsPerNetwork<T>
+  | iXDaiParamsPerNetwork<T>;
+
+export interface iParamsPerNetworkAll<T>
+  extends iEthereumParamsPerNetwork<T>,
+    iPolygonParamsPerNetwork<T>,
+    iXDaiParamsPerNetwork<T> {}
+
+export interface iEthereumParamsPerNetwork<T> {
   [eEthereumNetwork.coverage]: T;
   [eEthereumNetwork.buidlerevm]: T;
   [eEthereumNetwork.kovan]: T;
@@ -386,14 +403,21 @@ export interface iParamsPerNetwork<T> {
   [eEthereumNetwork.main]: T;
   [eEthereumNetwork.hardhat]: T;
   [eEthereumNetwork.tenderlyMain]: T;
-  [eEthereumNetwork.mumbai]: T;
-  [eEthereumNetwork.matic]: T;
+}
+
+export interface iPolygonParamsPerNetwork<T> {
+  [ePolygonNetwork.matic]: T;
+  [ePolygonNetwork.mumbai]: T;
+}
+
+export interface iXDaiParamsPerNetwork<T> {
+  [eXDaiNetwork.xdai]: T;
 }
 
 export interface iParamsPerPool<T> {
   [AavePools.proto]: T;
-  [AavePools.lp]: T;
   [AavePools.matic]: T;
+  [AavePools.amm]: T;
 }
 
 export interface iBasicDistributionParams {
@@ -411,17 +435,6 @@ export interface ObjectString {
   [key: string]: string;
 }
 
-export enum EthereumNetwork {
-  kovan = 'kovan',
-  ropsten = 'ropsten',
-  development = 'development',
-  main = 'main',
-  coverage = 'soliditycoverage',
-  tenderlyMain = 'tenderlyMain',
-  matic = 'matic',
-  mumbai = 'mumbai',
-}
-
 export interface IProtocolGlobalConfig {
   TokenDistributorPercentageBase: string;
   MockUsdPriceInWei: string;
@@ -455,6 +468,8 @@ export interface ICommonConfiguration {
   ProviderRegistry: iParamsPerNetwork<tEthereumAddress | undefined>;
   ProviderRegistryOwner: iParamsPerNetwork<tEthereumAddress | undefined>;
   LendingPoolCollateralManager: iParamsPerNetwork<tEthereumAddress>;
+  LendingPoolConfigurator: iParamsPerNetwork<tEthereumAddress>;
+  LendingPool: iParamsPerNetwork<tEthereumAddress>;
   LendingRateOracleRatesCommon: iMultiPoolsAssets<IMarketRates>;
   LendingRateOracle: iParamsPerNetwork<tEthereumAddress>;
   TokenDistributor: iParamsPerNetwork<tEthereumAddress>;
@@ -477,7 +492,7 @@ export interface IAaveConfiguration extends ICommonConfiguration {
   ReservesConfig: iAavePoolAssets<IReserveParams>;
 }
 
-export interface ILpConfiguration extends ICommonConfiguration {
+export interface IAmmConfiguration extends ICommonConfiguration {
   ReservesConfig: iLpPoolAssets<IReserveParams>;
 }
 
@@ -485,6 +500,10 @@ export interface IMaticConfiguration extends ICommonConfiguration {
   ReservesConfig: iMaticPoolAssets<IReserveParams>;
 }
 
+export interface IXDAIConfiguration extends ICommonConfiguration {
+  ReservesConfig: iXDAIPoolAssets<IReserveParams>;
+}
+
 export interface ITokenAddress {
   [token: string]: tEthereumAddress;
 }
diff --git a/markets/aave/commons.ts b/markets/aave/commons.ts
index 39be628b..f16c9227 100644
--- a/markets/aave/commons.ts
+++ b/markets/aave/commons.ts
@@ -1,6 +1,6 @@
 import BigNumber from 'bignumber.js';
 import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants';
-import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { ICommonConfiguration, eEthereumNetwork } from '../../helpers/types';
 
 // ----------------
 // PROTOCOL GLOBAL PARAMS
@@ -105,8 +105,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: undefined,
     [eEthereumNetwork.main]: undefined,
     [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
   },
   PoolAdminIndex: 0,
   EmergencyAdmin: {
@@ -117,8 +115,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: undefined,
     [eEthereumNetwork.main]: undefined,
     [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
   },
   EmergencyAdminIndex: 1,
   ProviderRegistry: {
@@ -129,8 +125,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   ProviderRegistryOwner: {
     [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',
@@ -140,8 +134,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   LendingRateOracle: {
     [eEthereumNetwork.coverage]: '',
@@ -151,8 +143,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b',
     [eEthereumNetwork.main]: '',//'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
     [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },  
   LendingPoolCollateralManager: {
     [eEthereumNetwork.coverage]: '',
@@ -162,8 +152,24 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '',
     [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
     [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+  },
+  LendingPoolConfigurator: {
+    [eEthereumNetwork.coverage]: '',
+    [eEthereumNetwork.hardhat]: '',
+    [eEthereumNetwork.buidlerevm]: '',
+    [eEthereumNetwork.kovan]: '',
+    [eEthereumNetwork.ropsten]: '',
+    [eEthereumNetwork.main]: '',
+    [eEthereumNetwork.tenderlyMain]: '',
+  },
+  LendingPool: {
+    [eEthereumNetwork.coverage]: '',
+    [eEthereumNetwork.hardhat]: '',
+    [eEthereumNetwork.buidlerevm]: '',
+    [eEthereumNetwork.kovan]: '',
+    [eEthereumNetwork.ropsten]: '',
+    [eEthereumNetwork.main]: '',
+    [eEthereumNetwork.tenderlyMain]: '',
   },
   WethGateway: {
     [eEthereumNetwork.coverage]: '',
@@ -178,42 +184,34 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.hardhat]: '',
-    [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
-    [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
-    [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [eEthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
+    [eEthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
+    [eEthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
+    [eEthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
   },
   AaveOracle: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1',
-    [EthereumNetwork.ropsten]: ZERO_ADDRESS,
-    [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
-    [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [eEthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1',
+    [eEthereumNetwork.ropsten]: ZERO_ADDRESS,
+    [eEthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
+    [eEthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
   },
   FallbackOracle: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
-    [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
-    [EthereumNetwork.main]: ZERO_ADDRESS,
-    [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
-    [eEthereumNetwork.mumbai]: ZERO_ADDRESS,
-    [eEthereumNetwork.matic]: ZERO_ADDRESS,
+    [eEthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
+    [eEthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
+    [eEthereumNetwork.main]: ZERO_ADDRESS,
+    [eEthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
   },
   ChainlinkAggregator: {
     [eEthereumNetwork.coverage]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.buidlerevm]: {},
-    [eEthereumNetwork.matic]: {},
-    [eEthereumNetwork.mumbai]: {},
-    [EthereumNetwork.kovan]: {
+    [eEthereumNetwork.kovan]: {
       AAVE: '0xd04647B7CB523bb9f26730E9B6dE1174db7591Ad',
       BAT: '0x0e4fcEC26c9f85c3D714370c98f43C4E02Fc35Ae',
       BUSD: '0xbF7A18ea5DE0501f7559144e702b29c55b055CcB',
@@ -235,7 +233,7 @@ export const CommonsConfig: ICommonConfiguration = {
       ZRX: '0xBc3f28Ccc21E9b5856E81E6372aFf57307E2E883',
       USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
     },
-    [EthereumNetwork.ropsten]: {
+    [eEthereumNetwork.ropsten]: {
       AAVE: ZERO_ADDRESS,
       BAT: '0xafd8186c962daf599f171b8600f3e19af7b52c92',
       BUSD: '0x0A32D96Ff131cd5c3E0E5AAB645BF009Eda61564',
@@ -257,7 +255,7 @@ export const CommonsConfig: ICommonConfiguration = {
       ZRX: '0x1d0052e4ae5b4ae4563cbac50edc3627ca0460d7',
       USD: '0x8468b2bDCE073A157E560AA4D9CcF6dB1DB98507',
     },
-    [EthereumNetwork.main]: {
+    [eEthereumNetwork.main]: {
       AAVE: '0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012',
       BAT: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94',
       BUSD: '0x614715d2Af89E6EC99A233818275142cE88d1Cfd',
@@ -279,7 +277,7 @@ export const CommonsConfig: ICommonConfiguration = {
       ZRX: '0x2Da4983a622a8498bb1a21FaE9D8F6C664939962',
       USD: '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419',
     },
-    [EthereumNetwork.tenderlyMain]: {
+    [eEthereumNetwork.tenderlyMain]: {
       AAVE: '0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012',
       BAT: '0x0d16d4528239e9ee52fa531af613AcdB23D88c94',
       BUSD: '0x614715d2Af89E6EC99A233818275142cE88d1Cfd',
@@ -306,12 +304,10 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.coverage]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.buidlerevm]: {},
-    [EthereumNetwork.main]: {},
-    [EthereumNetwork.kovan]: {},
-    [EthereumNetwork.ropsten]: {},
-    [EthereumNetwork.tenderlyMain]: {},
-    [eEthereumNetwork.matic]: {},
-    [eEthereumNetwork.mumbai]: {},
+    [eEthereumNetwork.main]: {},
+    [eEthereumNetwork.kovan]: {},
+    [eEthereumNetwork.ropsten]: {},
+    [eEthereumNetwork.tenderlyMain]: {},
   },
   ReservesConfig: {},
   ATokenDomainSeparator: {
@@ -325,8 +321,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '',
     [eEthereumNetwork.main]: '',
     [eEthereumNetwork.tenderlyMain]: '',
-    [EthereumNetwork.mumbai]: '',
-    [EthereumNetwork.matic]: '',
   },
   WETH: {
     [eEthereumNetwork.coverage]: '', // deployed in local evm
@@ -336,8 +330,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab',
     [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
     [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
-    [EthereumNetwork.mumbai]: '',
-    [EthereumNetwork.matic]: '',
   },
   ReserveFactorTreasuryAddress: {
     [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
@@ -347,7 +339,5 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
     [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
     [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [EthereumNetwork.mumbai]: '',
-    [EthereumNetwork.matic]: '',
   },
 };
diff --git a/markets/aave/index.ts b/markets/aave/index.ts
index 0f4d56c8..88e55a83 100644
--- a/markets/aave/index.ts
+++ b/markets/aave/index.ts
@@ -1,5 +1,5 @@
 import { oneRay, ZERO_ADDRESS } from '../../helpers/constants';
-import { IAaveConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { IAaveConfiguration, eEthereumNetwork } from '../../helpers/types';
 
 import { CommonsConfig } from './commons';
 import {
@@ -58,9 +58,7 @@ export const AaveConfig: IAaveConfiguration = {
     [eEthereumNetwork.buidlerevm]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.coverage]: {},
-    [eEthereumNetwork.matic]: {},
-    [eEthereumNetwork.mumbai]: {},
-    [EthereumNetwork.kovan]: {
+    [eEthereumNetwork.kovan]: {
       AAVE: '0xB597cd8D3217ea6477232F9217fa70837ff667Af',
       BAT: '0x2d12186Fbb9f9a8C28B3FfdD4c42920f8539D738',
       BUSD: '0x4c6E1EFC12FDfD568186b7BAEc0A43fFfb4bCcCf',
@@ -82,7 +80,7 @@ export const AaveConfig: IAaveConfiguration = {
       YFI: '0xb7c325266ec274fEb1354021D27FA3E3379D840d',
       ZRX: '0xD0d76886cF8D952ca26177EB7CfDf83bad08C00C',
     },
-    [EthereumNetwork.ropsten]: {
+    [eEthereumNetwork.ropsten]: {
       AAVE: '',
       BAT: '0x85B24b3517E3aC7bf72a14516160541A60cFF19d',
       BUSD: '0xFA6adcFf6A90c11f31Bc9bb59eC0a6efB38381C6',
@@ -104,7 +102,7 @@ export const AaveConfig: IAaveConfiguration = {
       YFI: ZERO_ADDRESS,
       ZRX: '0x02d7055704EfF050323A2E5ee4ba05DB2A588959',
     },
-    [EthereumNetwork.main]: {
+    [eEthereumNetwork.main]: {
       AAVE: '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',
       BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
       BUSD: '0x4Fabb145d64652a948d72533023f6E7A623C7C53',
@@ -126,7 +124,7 @@ export const AaveConfig: IAaveConfiguration = {
       YFI: '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e',
       ZRX: '0xE41d2489571d322189246DaFA5ebDe1F4699F498',
     },
-    [EthereumNetwork.tenderlyMain]: {
+    [eEthereumNetwork.tenderlyMain]: {
       AAVE: '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9',
       BAT: '0x0d8775f648430679a709e98d2b0cb6250d2887ef',
       BUSD: '0x4Fabb145d64652a948d72533023f6E7A623C7C53',
diff --git a/markets/lp/commons.ts b/markets/amm/commons.ts
similarity index 80%
rename from markets/lp/commons.ts
rename to markets/amm/commons.ts
index 1b7f403a..f0dadf97 100644
--- a/markets/lp/commons.ts
+++ b/markets/amm/commons.ts
@@ -1,6 +1,6 @@
 import BigNumber from 'bignumber.js';
 import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants';
-import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { ICommonConfiguration, eEthereumNetwork } from '../../helpers/types';
 
 // ----------------
 // PROTOCOL GLOBAL PARAMS
@@ -60,7 +60,7 @@ export const CommonsConfig: ICommonConfiguration = {
     UniBATWETH: {
       borrowRate: oneRay.multipliedBy(0.05).toFixed(),
     },
-    UniUSDCDAI: {
+    UniDAIUSDC: {
       borrowRate: oneRay.multipliedBy(0.05).toFixed(),
     },
     UniCRVWETH: {
@@ -108,8 +108,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: undefined,
     [eEthereumNetwork.main]: undefined,
     [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
   },
   PoolAdminIndex: 0,
   EmergencyAdmin: {
@@ -120,8 +118,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: undefined,
     [eEthereumNetwork.main]: undefined,
     [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
   },
   EmergencyAdminIndex: 1,
   ProviderRegistry: {
@@ -132,8 +128,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   ProviderRegistryOwner: { // DEPLOYED WITH CORRECT ADDRESS 
     [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',
@@ -143,19 +137,15 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   LendingRateOracle: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.kovan]: '',//'0xdCde9Bb6a49e37fA433990832AB541AE2d4FEB4a', // Need to re-deploy because of onlyOwner
+    [eEthereumNetwork.buidlerevm]: '',// Updated to match Kovan deployment
+    [eEthereumNetwork.kovan]: '0xd00Bd28FAdDa9d5658D1D4e0c151973146C7A533',//'0xE48F95873855bfd97BF89572DDf5cBC44D9c545b'
     [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b',
     [eEthereumNetwork.main]: '', //'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',  // Need to re-deploy because of onlyOwner
     [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   LendingPoolCollateralManager: {
     [eEthereumNetwork.coverage]: '',
@@ -165,14 +155,30 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '',
     [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
     [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+  },
+  LendingPoolConfigurator: {
+    [eEthereumNetwork.coverage]: '',
+    [eEthereumNetwork.hardhat]: '',
+    [eEthereumNetwork.buidlerevm]: '',
+    [eEthereumNetwork.kovan]: '0x36eB31800aa67a9c50df1d56EE01981A6E14Cce5',
+    [eEthereumNetwork.ropsten]: '',
+    [eEthereumNetwork.main]: '',
+    [eEthereumNetwork.tenderlyMain]: '',
+  },
+  LendingPool: {
+    [eEthereumNetwork.coverage]: '',
+    [eEthereumNetwork.hardhat]: '',
+    [eEthereumNetwork.buidlerevm]: '',
+    [eEthereumNetwork.kovan]: '0x78142De7a1930412E9e50dEB3b80dB284c2dFa3A',
+    [eEthereumNetwork.ropsten]: '',
+    [eEthereumNetwork.main]: '',
+    [eEthereumNetwork.tenderlyMain]: '',
   },
   WethGateway: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.kovan]: '',
+    [eEthereumNetwork.kovan]: '0x1c4A1cC35A477aa1cF35DF671d93ACc04d8131E0',
     [eEthereumNetwork.ropsten]: '',
     [eEthereumNetwork.main]: '',
     [eEthereumNetwork.tenderlyMain]: '',
@@ -181,40 +187,34 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.buidlerevm]: '',
     [eEthereumNetwork.hardhat]: '',
-    [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
-    [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
-    [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [eEthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
+    [eEthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
+    [eEthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
+    [eEthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
   },
   AaveOracle: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner
-    [EthereumNetwork.ropsten]: ZERO_ADDRESS,
-    [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',  // Need to re-deploy because of onlyOwner
-    [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [eEthereumNetwork.kovan]: '0x8fb777d67e9945e2c01936e319057f9d41d559e6', // Need to re-deploy because of onlyOwner
+    [eEthereumNetwork.ropsten]: ZERO_ADDRESS,
+    [eEthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',  // Need to re-deploy because of onlyOwner
+    [eEthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
   },
   FallbackOracle: {
     [eEthereumNetwork.coverage]: '',
     [eEthereumNetwork.hardhat]: '',
     [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
-    [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
-    [EthereumNetwork.main]: ZERO_ADDRESS,
-    [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
-    [eEthereumNetwork.mumbai]: ZERO_ADDRESS,
-    [eEthereumNetwork.matic]: ZERO_ADDRESS,
+    [eEthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
+    [eEthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
+    [eEthereumNetwork.main]: ZERO_ADDRESS,
+    [eEthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
   },
   ChainlinkAggregator: {
     [eEthereumNetwork.coverage]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.buidlerevm]: {},
-    [EthereumNetwork.kovan]: {
+    [eEthereumNetwork.kovan]: {
       USDT: '0x0bF499444525a23E7Bb61997539725cA2e928138',
       WBTC: '0xF7904a295A029a3aBDFFB6F12755974a958C7C25',
       USDC: '0x64EaC61A2DFda2c3Fa04eED49AA33D021AeC8838',
@@ -223,7 +223,7 @@ export const CommonsConfig: ICommonConfiguration = {
       UniWBTCWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',  
       UniAAVEWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
       UniBATWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
-      UniUSDCDAI: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
+      UniDAIUSDC: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
       UniCRVWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
       UniLINKWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
       UniMKRWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
@@ -236,9 +236,9 @@ export const CommonsConfig: ICommonConfiguration = {
       BptWBTCWETH: '0x5699302154A020FB1DE2B1d39f4c73785A235d8F',
       USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
     },
-    [EthereumNetwork.ropsten]: {
+    [eEthereumNetwork.ropsten]: {
     },
-    [EthereumNetwork.main]: {
+    [eEthereumNetwork.main]: {
       USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
       WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
       USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
@@ -247,7 +247,7 @@ export const CommonsConfig: ICommonConfiguration = {
       UniWBTCWETH: ZERO_ADDRESS,
       UniAAVEWETH: ZERO_ADDRESS,
       UniBATWETH: ZERO_ADDRESS,
-      UniUSDCDAI: ZERO_ADDRESS,
+      UniDAIUSDC: ZERO_ADDRESS,
       UniCRVWETH: ZERO_ADDRESS,
       UniLINKWETH: ZERO_ADDRESS,
       UniMKRWETH: ZERO_ADDRESS,
@@ -260,7 +260,7 @@ export const CommonsConfig: ICommonConfiguration = {
       BptWBTCWETH: ZERO_ADDRESS,
       USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
     },
-    [EthereumNetwork.tenderlyMain]: {
+    [eEthereumNetwork.tenderlyMain]: {
       USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
       WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
       USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
@@ -269,7 +269,7 @@ export const CommonsConfig: ICommonConfiguration = {
       UniWBTCWETH: ZERO_ADDRESS,
       UniAAVEWETH: ZERO_ADDRESS,
       UniBATWETH: ZERO_ADDRESS,
-      UniUSDCDAI: ZERO_ADDRESS,
+      UniDAIUSDC: ZERO_ADDRESS,
       UniCRVWETH: ZERO_ADDRESS,
       UniLINKWETH: ZERO_ADDRESS,
       UniMKRWETH: ZERO_ADDRESS,
@@ -282,19 +282,15 @@ export const CommonsConfig: ICommonConfiguration = {
       BptWBTCWETH: ZERO_ADDRESS,
       USD: '0x9326BFA02ADD2366b30bacB125260Af641031331',
     },
-    [eEthereumNetwork.mumbai]: {},
-    [eEthereumNetwork.matic]: {},
   },
   ReserveAssets: {
     [eEthereumNetwork.coverage]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.buidlerevm]: {},
-    [EthereumNetwork.main]: {},
-    [EthereumNetwork.kovan]: {},
-    [EthereumNetwork.ropsten]: {},
-    [EthereumNetwork.tenderlyMain]: {},
-    [eEthereumNetwork.mumbai]: {},
-    [eEthereumNetwork.matic]: {},
+    [eEthereumNetwork.main]: {},
+    [eEthereumNetwork.kovan]: {},
+    [eEthereumNetwork.ropsten]: {},
+    [eEthereumNetwork.tenderlyMain]: {},
   },
   ReservesConfig: {},
   ATokenDomainSeparator: {
@@ -308,8 +304,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '',
     [eEthereumNetwork.main]: '',
     [eEthereumNetwork.tenderlyMain]: '',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   WETH: {
     [eEthereumNetwork.coverage]: '', // deployed in local evm
@@ -319,8 +313,6 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab',
     [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
     [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
   ReserveFactorTreasuryAddress: {
     [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
@@ -330,7 +322,5 @@ export const CommonsConfig: ICommonConfiguration = {
     [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
     [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
     [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
   },
 };
diff --git a/markets/lp/index.ts b/markets/amm/index.ts
similarity index 88%
rename from markets/lp/index.ts
rename to markets/amm/index.ts
index d802f372..705e4be3 100644
--- a/markets/lp/index.ts
+++ b/markets/amm/index.ts
@@ -1,5 +1,5 @@
 import { oneRay, ZERO_ADDRESS } from '../../helpers/constants';
-import { ILpConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { IAmmConfiguration, eEthereumNetwork } from '../../helpers/types';
 
 import { CommonsConfig } from './commons';
 import {
@@ -12,7 +12,7 @@ import {
   strategyDAIWETH,
   strategyAAVEWETH,
   strategyBATWETH,
-  strategyUSDCDAI,
+  strategyDAIUSDC,
   strategyCRVWETH,
   strategyLINKWETH,
   strategyMKRWETH,
@@ -28,9 +28,9 @@ import {
 // POOL--SPECIFIC PARAMS
 // ----------------
 
-export const lpConfig: ILpConfiguration = {
+export const AmmConfig: IAmmConfiguration = {
   ...CommonsConfig,
-  MarketId: 'Aave LP market',
+  MarketId: 'Aave AMM market',
   ProviderId: 2,
   ReservesConfig: {
     WETH: strategyWETH,
@@ -42,7 +42,7 @@ export const lpConfig: ILpConfiguration = {
     UniWBTCWETH: strategyWBTCWETH,
     UniAAVEWETH: strategyAAVEWETH,
     UniBATWETH: strategyBATWETH,
-    UniUSDCDAI: strategyUSDCDAI,
+    UniDAIUSDC: strategyDAIUSDC,
     UniCRVWETH: strategyCRVWETH,
     UniLINKWETH: strategyLINKWETH,
     UniMKRWETH: strategyMKRWETH,
@@ -58,9 +58,7 @@ export const lpConfig: ILpConfiguration = {
     [eEthereumNetwork.buidlerevm]: {},
     [eEthereumNetwork.hardhat]: {},
     [eEthereumNetwork.coverage]: {},
-    [eEthereumNetwork.matic]: {},
-    [eEthereumNetwork.mumbai]: {},
-    [EthereumNetwork.kovan]: {
+    [eEthereumNetwork.kovan]: {
       DAI: '0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD',
       USDC: '0xe22da380ee6B445bb8273C81944ADEB6E8450422',
       USDT: '0x13512979ADE267AB5100878E2e0f485B568328a4',
@@ -70,7 +68,7 @@ export const lpConfig: ILpConfiguration = {
       UniWBTCWETH: '0x796d562B1dF5b9dc85A4612187B6f29Ed213d960',
       UniAAVEWETH: '0x657A7B8b46F35C5C6583AEF43824744B236EF826',
       UniBATWETH: '0xf8CEBA8b16579956B3aE4B5D09002a30f873F783',
-      UniUSDCDAI: '0x8e80b7a7531c276dD1dBEC2f1Cc281c11c859e62',
+      UniDAIUSDC: '0x8e80b7a7531c276dD1dBEC2f1Cc281c11c859e62',
       UniCRVWETH: '0x9c31b7538467bF0b01e6d5fA789e66Ce540a521e',
       UniLINKWETH: '0x5Acab7f8B79620ec7127A96E5D8837d2124D5D7c',
       UniMKRWETH: '0xB0C6EC5d58ddbF4cd1e419A56a19924E9904e4Dd',
@@ -82,9 +80,9 @@ export const lpConfig: ILpConfiguration = {
       UniYFIWETH: '0x5af95ddFACC150a1695A3Fc606459fd0dE57b91f',
       BptWBTCWETH: '0x110569E3261bC0934dA637b019f6f1b6F50ec574',
     },
-    [EthereumNetwork.ropsten]: {
+    [eEthereumNetwork.ropsten]: {
     },
-    [EthereumNetwork.main]: {
+    [eEthereumNetwork.main]: {
       DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
       USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
       USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
@@ -94,7 +92,7 @@ export const lpConfig: ILpConfiguration = {
       UniWBTCWETH: '0xBb2b8038a1640196FbE3e38816F3e67Cba72D940',
       UniAAVEWETH: '0xDFC14d2Af169B0D36C4EFF567Ada9b2E0CAE044f',
       UniBATWETH: '0xB6909B960DbbE7392D405429eB2b3649752b4838',
-      UniUSDCDAI: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5',
+      UniDAIUSDC: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5',
       UniCRVWETH: '0x3dA1313aE46132A397D90d95B1424A9A7e3e0fCE',
       UniLINKWETH: '0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974',
       UniMKRWETH: '0xC2aDdA861F89bBB333c90c492cB837741916A225',
@@ -106,7 +104,7 @@ export const lpConfig: ILpConfiguration = {
       UniYFIWETH: '0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28',
       BptWBTCWETH: '0x1efF8aF5D577060BA4ac8A29A13525bb0Ee2A3D5',
     },
-    [EthereumNetwork.tenderlyMain]: {
+    [eEthereumNetwork.tenderlyMain]: {
       DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
       USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
       USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
@@ -116,7 +114,7 @@ export const lpConfig: ILpConfiguration = {
       UniWBTCWETH: '0xBb2b8038a1640196FbE3e38816F3e67Cba72D940',
       UniAAVEWETH: '0xDFC14d2Af169B0D36C4EFF567Ada9b2E0CAE044f',
       UniBATWETH: '0xB6909B960DbbE7392D405429eB2b3649752b4838',
-      UniUSDCDAI: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5',
+      UniDAIUSDC: '0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5',
       UniCRVWETH: '0x3dA1313aE46132A397D90d95B1424A9A7e3e0fCE',
       UniLINKWETH: '0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974',
       UniMKRWETH: '0xC2aDdA861F89bBB333c90c492cB837741916A225',
@@ -131,4 +129,4 @@ export const lpConfig: ILpConfiguration = {
   },
 };
 
-export default lpConfig;
+export default AmmConfig;
diff --git a/markets/lp/rateStrategies.ts b/markets/amm/rateStrategies.ts
similarity index 91%
rename from markets/lp/rateStrategies.ts
rename to markets/amm/rateStrategies.ts
index a91af2ea..a4a05300 100644
--- a/markets/lp/rateStrategies.ts
+++ b/markets/amm/rateStrategies.ts
@@ -2,9 +2,9 @@ import BigNumber from 'bignumber.js';
 import { oneRay } from '../../helpers/constants';
 import { IInterestRateStrategyParams } from '../../helpers/types';
 
-// DAIWETH WBTCWETH AAVEWETH BATWETH USDCDAI CRVWETH LINKWETH MKRWETH RENWETH SNXWETH UNIWETH USDCWETH WBTCUSDC YFIWETH
-export const rateStrategyLpBase: IInterestRateStrategyParams = {
-    name: "rateStrategyLpBase",
+// DAIWETH WBTCWETH AAVEWETH BATWETH DAIUSDC CRVWETH LINKWETH MKRWETH RENWETH SNXWETH UNIWETH USDCWETH WBTCUSDC YFIWETH
+export const rateStrategyAmmBase: IInterestRateStrategyParams = {
+    name: "rateStrategyAmmBase",
     optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
     baseVariableBorrowRate: new BigNumber(0.03).multipliedBy(oneRay).toFixed(),
     variableRateSlope1: new BigNumber(0.10).multipliedBy(oneRay).toFixed(),
diff --git a/markets/lp/reservesConfigs.ts b/markets/amm/reservesConfigs.ts
similarity index 91%
rename from markets/lp/reservesConfigs.ts
rename to markets/amm/reservesConfigs.ts
index 21db2a1e..b4143653 100644
--- a/markets/lp/reservesConfigs.ts
+++ b/markets/amm/reservesConfigs.ts
@@ -1,6 +1,6 @@
 import { eContractid, IReserveParams} from '../../helpers/types';
 import {
-  rateStrategyLpBase,
+  rateStrategyAmmBase,
   rateStrategyStable,
   rateStrategyBaseOne,
 } from './rateStrategies';
@@ -67,7 +67,7 @@ export const strategyUSDT: IReserveParams = {
 };
 
 export const strategyDAIWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -79,7 +79,7 @@ export const strategyDAIWETH: IReserveParams = {
 };
 
 export const strategyWBTCWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -91,7 +91,7 @@ export const strategyWBTCWETH: IReserveParams = {
 };
 
 export const strategyAAVEWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -103,7 +103,7 @@ export const strategyAAVEWETH: IReserveParams = {
 };
 
 export const strategyBATWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -114,8 +114,8 @@ export const strategyBATWETH: IReserveParams = {
   reserveFactor: '1500'
 };
 
-export const strategyUSDCDAI: IReserveParams = {
-  strategy: rateStrategyLpBase,
+export const strategyDAIUSDC: IReserveParams = {
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -127,7 +127,7 @@ export const strategyUSDCDAI: IReserveParams = {
 };
 
 export const strategyCRVWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '5000',
   liquidationThreshold: '6000',
   liquidationBonus: '11500',
@@ -139,7 +139,7 @@ export const strategyCRVWETH: IReserveParams = {
 };
 
 export const strategyLINKWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -151,7 +151,7 @@ export const strategyLINKWETH: IReserveParams = {
 };
 
 export const strategyMKRWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -163,7 +163,7 @@ export const strategyMKRWETH: IReserveParams = {
 };
 
 export const strategyRENWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -175,7 +175,7 @@ export const strategyRENWETH: IReserveParams = {
 };
 
 export const strategySNXWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '4000',
   liquidationThreshold: '6000',
   liquidationBonus: '11500',
@@ -187,7 +187,7 @@ export const strategySNXWETH: IReserveParams = {
 };
 
 export const strategyUNIWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -199,7 +199,7 @@ export const strategyUNIWETH: IReserveParams = {
 };
 
 export const strategyUSDCWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -211,7 +211,7 @@ export const strategyUSDCWETH: IReserveParams = {
 };
 
 export const strategyWBTCUSDC: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '6000',
   liquidationThreshold: '7000',
   liquidationBonus: '11500',
@@ -223,7 +223,7 @@ export const strategyWBTCUSDC: IReserveParams = {
 };
 
 export const strategyYFIWETH: IReserveParams = {
-  strategy: rateStrategyLpBase,
+  strategy: rateStrategyAmmBase,
   baseLTVAsCollateral: '5000',
   liquidationThreshold: '6000',
   liquidationBonus: '11500',
diff --git a/markets/matic/commons.ts b/markets/matic/commons.ts
index 2029fd54..42b269b0 100644
--- a/markets/matic/commons.ts
+++ b/markets/matic/commons.ts
@@ -1,6 +1,6 @@
 import BigNumber from 'bignumber.js';
 import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants';
-import { ICommonConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { ICommonConfiguration, ePolygonNetwork } from '../../helpers/types';
 
 // ----------------
 // PROTOCOL GLOBAL PARAMS
@@ -58,112 +58,57 @@ export const CommonsConfig: ICommonConfiguration = {
 
   // If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex
   PoolAdmin: {
-    [eEthereumNetwork.coverage]: undefined,
-    [eEthereumNetwork.buidlerevm]: undefined,
-    [eEthereumNetwork.coverage]: undefined,
-    [eEthereumNetwork.hardhat]: undefined,
-    [eEthereumNetwork.kovan]: undefined,
-    [eEthereumNetwork.ropsten]: undefined,
-    [eEthereumNetwork.main]: undefined,
-    [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
+    [ePolygonNetwork.mumbai]: undefined,
+    [ePolygonNetwork.matic]: undefined,
   },
   PoolAdminIndex: 0,
   EmergencyAdmin: {
-    [eEthereumNetwork.hardhat]: undefined,
-    [eEthereumNetwork.coverage]: undefined,
-    [eEthereumNetwork.buidlerevm]: undefined,
-    [eEthereumNetwork.kovan]: undefined,
-    [eEthereumNetwork.ropsten]: undefined,
-    [eEthereumNetwork.main]: undefined,
-    [eEthereumNetwork.tenderlyMain]: undefined,
-    [eEthereumNetwork.mumbai]: undefined,
-    [eEthereumNetwork.matic]: undefined,
+    [ePolygonNetwork.mumbai]: undefined,
+    [ePolygonNetwork.matic]: undefined,
+  },
+  LendingPool: {
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '0xABdC61Cd16e5111f335f4135B7A0e65Cc7F86327',
+  },
+  LendingPoolConfigurator: {
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '0x17c4A170FFF882862F656597889016D3a6073534',
   },
   EmergencyAdminIndex: 1,
   ProviderRegistry: {
-    [eEthereumNetwork.kovan]: '0x1E40B561EC587036f9789aF83236f057D1ed2A90',
-    [eEthereumNetwork.ropsten]: '',
-    [eEthereumNetwork.main]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.tenderlyMain]: '0x52D306e36E3B6B02c153d0266ff0f85d18BCD413',
-    [eEthereumNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP
-    [eEthereumNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F',  // TEMP
+    [ePolygonNetwork.mumbai]: '0x569859d41499B4dDC28bfaA43915051FF0A38a6F', // TEMP
+    [ePolygonNetwork.matic]: '0x28334e4791860a0c1eCF89a62B973ba04a5d643F',  // TEMP
   },
   ProviderRegistryOwner: {
-    [eEthereumNetwork.kovan]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',
-    [eEthereumNetwork.ropsten]: '',
-    [eEthereumNetwork.main]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.tenderlyMain]: '0xbd723fc4f1d737dcfc48a07fe7336766d34cad5f',
-    [eEthereumNetwork.mumbai]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9', // TEMP
-    [eEthereumNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',  // TEMP
+    [ePolygonNetwork.mumbai]: '0x18d9bA2baEfBdE0FF137C4ad031427EF205f1Fd9', // TEMP
+    [ePolygonNetwork.matic]: '0x85e4A467343c0dc4aDAB74Af84448D9c45D8ae6F',  // TEMP
   },
   LendingRateOracle: {
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.kovan]: '',//'0xdCde9Bb6a49e37fA433990832AB541AE2d4FEB4a',
-    [eEthereumNetwork.ropsten]: '0x05dcca805a6562c1bdd0423768754acb6993241b',
-    [eEthereumNetwork.main]: '',//'0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
-    [eEthereumNetwork.tenderlyMain]: '0x8A32f49FFbA88aba6EFF96F45D8BD1D4b3f35c7D',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '',
   },  
   LendingPoolCollateralManager: {
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.kovan]: '0x9269b6453d0d75370c4c85e5a42977a53efdb72a',
-    [eEthereumNetwork.ropsten]: '',
-    [eEthereumNetwork.main]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
-    [eEthereumNetwork.tenderlyMain]: '0xbd4765210d4167CE2A5b87280D9E8Ee316D5EC7C',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '0x9Af76e0575D139570D3B4c821567Fe935E8c25C5',
   },
   TokenDistributor: {
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [EthereumNetwork.kovan]: '0x971efe90088f21dc6a36f610ffed77fc19710708',
-    [EthereumNetwork.ropsten]: '0xeba2ea67942b8250d870b12750b594696d02fc9c',
-    [EthereumNetwork.main]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [EthereumNetwork.tenderlyMain]: '0xe3d9988f676457123c5fd01297605efdd0cba1ae',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '',
+  },
+  WethGateway: {
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '0x15A46f5073789b7D16F6F46632aE50Bae838d938',
   },
   AaveOracle: {
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '',//'0xB8bE51E6563BB312Cbb2aa26e352516c25c26ac1',
-    [EthereumNetwork.ropsten]: ZERO_ADDRESS,
-    [EthereumNetwork.main]: '',//'0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
-    [EthereumNetwork.tenderlyMain]: '0xA50ba011c48153De246E5192C8f9258A2ba79Ca9',
-    [eEthereumNetwork.mumbai]: '',
-    [eEthereumNetwork.matic]: '',
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '0x1B38fa90596F2C25bCf1B193A6c6a718349AFDfC',
   },
   FallbackOracle: {
-    [eEthereumNetwork.coverage]: '',
-    [eEthereumNetwork.hardhat]: '',
-    [eEthereumNetwork.buidlerevm]: '',
-    [EthereumNetwork.kovan]: '0x50913E8E1c650E790F8a1E741FF9B1B1bB251dfe',
-    [EthereumNetwork.ropsten]: '0xAD1a978cdbb8175b2eaeC47B01404f8AEC5f4F0d',
-    [EthereumNetwork.main]: ZERO_ADDRESS,
-    [EthereumNetwork.tenderlyMain]: ZERO_ADDRESS,
-    [eEthereumNetwork.mumbai]: ZERO_ADDRESS,
-    [eEthereumNetwork.matic]: ZERO_ADDRESS,
+    [ePolygonNetwork.mumbai]: ZERO_ADDRESS,
+    [ePolygonNetwork.matic]: ZERO_ADDRESS,
   },
   ChainlinkAggregator: {
-    [eEthereumNetwork.coverage]: {},
-    [eEthereumNetwork.hardhat]: {},
-    [eEthereumNetwork.buidlerevm]: {},
-    [eEthereumNetwork.matic]: {
+    [ePolygonNetwork.matic]: {
       DAI: '0x4746DeC9e833A82EC7C2C1356372CcF2cfcD2F3D',
       USDC: '0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7',
       USDT: '0x0A6513e40db6EB1b165753AD52E80663aeA50545',
@@ -171,76 +116,29 @@ export const CommonsConfig: ICommonConfiguration = {
       WETH: '0xF9680D99D6C9589e2a93a78A04A279e509205945',
       WMATIC: '0xAB594600376Ec9fD91F8e885dADF0CE036862dE0',
     },
-    [eEthereumNetwork.mumbai]: {
+    [ePolygonNetwork.mumbai]: {
       DAI: ZERO_ADDRESS,
       USDC: ZERO_ADDRESS,
       USDT: ZERO_ADDRESS,
       WBTC: ZERO_ADDRESS,
       WMATIC: ZERO_ADDRESS,
     },
-    [EthereumNetwork.kovan]: {},
-    [EthereumNetwork.ropsten]: {},
-    [EthereumNetwork.main]: {
-      DAI: '0x773616E4d11A78F511299002da57A0a94577F1f4',
-      USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
-      USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
-      WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
-      WMATIC: ZERO_ADDRESS,
-    },
-    [EthereumNetwork.tenderlyMain]: {
-      DAI: '0x773616E4d11A78F511299002da57A0a94577F1f4',
-      USDC: '0x986b5E1e1755e3C2440e960477f25201B0a8bbD4',
-      USDT: '0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46',
-      WBTC: '0xdeb288F737066589598e9214E782fa5A8eD689e8',
-      WMATIC: ZERO_ADDRESS,
-    },
   },
   ReserveAssets: {
-    [eEthereumNetwork.coverage]: {},
-    [eEthereumNetwork.hardhat]: {},
-    [eEthereumNetwork.buidlerevm]: {},
-    [EthereumNetwork.main]: {},
-    [EthereumNetwork.kovan]: {},
-    [EthereumNetwork.ropsten]: {},
-    [EthereumNetwork.tenderlyMain]: {},
-    [eEthereumNetwork.matic]: {},
-    [eEthereumNetwork.mumbai]: {},
+    [ePolygonNetwork.matic]: {},
+    [ePolygonNetwork.mumbai]: {},
   },
   ReservesConfig: {},
   ATokenDomainSeparator: {
-    [eEthereumNetwork.coverage]:
-      '0x95b73a72c6ecf4ccbbba5178800023260bad8e75cdccdb8e4827a2977a37c820',
-    [eEthereumNetwork.hardhat]:
-      '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5',
-    [eEthereumNetwork.buidlerevm]:
-      '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5',
-    [eEthereumNetwork.kovan]: '',
-    [eEthereumNetwork.ropsten]: '',
-    [eEthereumNetwork.main]: '',
-    [eEthereumNetwork.tenderlyMain]: '',
-    [EthereumNetwork.mumbai]: '',
-    [EthereumNetwork.matic]: '',
+    [ePolygonNetwork.mumbai]: '',
+    [ePolygonNetwork.matic]: '',
   },
   WETH: {
-    [eEthereumNetwork.coverage]: '', // deployed in local evm
-    [eEthereumNetwork.hardhat]: '', // deployed in local evm
-    [eEthereumNetwork.buidlerevm]: '', // deployed in local evm
-    [eEthereumNetwork.kovan]: '0xd0a1e359811322d97991e03f863a0c30c2cf029c',
-    [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab',
-    [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
-    [eEthereumNetwork.tenderlyMain]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
-    [EthereumNetwork.mumbai]: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // WMATIC address (untested)
-    [EthereumNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',  // WMATIC address
+    [ePolygonNetwork.mumbai]: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', // WMATIC address (untested)
+    [ePolygonNetwork.matic]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',  // WMATIC address
   },
   ReserveFactorTreasuryAddress: {
-    [eEthereumNetwork.coverage]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.hardhat]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.buidlerevm]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.kovan]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.ropsten]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.main]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [eEthereumNetwork.tenderlyMain]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',
-    [EthereumNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',   // TEMP 
-    [EthereumNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',    // TEMP  
+    [ePolygonNetwork.mumbai]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',   // TEMP 
+    [ePolygonNetwork.matic]: '0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c',    // TEMP  
   },
 };
diff --git a/markets/matic/index.ts b/markets/matic/index.ts
index ae935313..cc1484ae 100644
--- a/markets/matic/index.ts
+++ b/markets/matic/index.ts
@@ -1,5 +1,5 @@
 import { oneRay, ZERO_ADDRESS } from '../../helpers/constants';
-import { IMaticConfiguration, EthereumNetwork, eEthereumNetwork } from '../../helpers/types';
+import { IMaticConfiguration, ePolygonNetwork } from '../../helpers/types';
 
 import { CommonsConfig } from './commons';
 import {
@@ -28,10 +28,7 @@ export const MaticConfig: IMaticConfiguration = {
     WMATIC: strategyMATIC,
   },
   ReserveAssets: {
-    [eEthereumNetwork.buidlerevm]: {},
-    [eEthereumNetwork.hardhat]: {},
-    [eEthereumNetwork.coverage]: {},
-    [eEthereumNetwork.matic]: {
+    [ePolygonNetwork.matic]: {
       DAI: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063',
       USDC: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
       USDT: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
@@ -39,7 +36,7 @@ export const MaticConfig: IMaticConfiguration = {
       WETH: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619',
       WMATIC: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
     },
-    [eEthereumNetwork.mumbai]: { // Mock tokens with a simple "mint" external function, except wmatic
+    [ePolygonNetwork.mumbai]: { // Mock tokens with a simple "mint" external function, except wmatic
       DAI: '0x13b3fda609C1eeb23b4F4b69257840760dCa6C4a',
       USDC: '0x52b63223994433FdE2F1350Ba69Dfd2779f06ABA',
       USDT: '0xB3abd1912F586fDFFa13606882c28E27913853d2',
@@ -47,26 +44,6 @@ export const MaticConfig: IMaticConfiguration = {
       WETH: '0x53CDb16B8C031B779e996406546614E5F05BC4Bf',
       WMATIC: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889',
     },
-    [EthereumNetwork.kovan]: {},
-    [EthereumNetwork.ropsten]: {},
-    [EthereumNetwork.main]: { 
-      // WMATIC DOES NOT EXIST ON MAIN
-      DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
-      USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
-      USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
-      WBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
-      WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
-      WMATIC: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0',
-    },
-    [EthereumNetwork.tenderlyMain]: {
-      // WMATIC DOES NOT EXIST ON MAIN
-      DAI: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
-      USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
-      USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
-      WBTC: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
-      WETH: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
-      WMATIC: '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0',
-    },
   },
 };
 
diff --git a/markets/xdai/commons.ts b/markets/xdai/commons.ts
index e69de29b..433d54ea 100644
--- a/markets/xdai/commons.ts
+++ b/markets/xdai/commons.ts
@@ -0,0 +1,120 @@
+import BigNumber from 'bignumber.js';
+import { oneEther, oneRay, RAY, ZERO_ADDRESS, MOCK_CHAINLINK_AGGREGATORS_PRICES } from '../../helpers/constants';
+import { ICommonConfiguration, eXDaiNetwork } from '../../helpers/types';
+
+// ----------------
+// PROTOCOL GLOBAL PARAMS
+// ----------------
+
+export const CommonsConfig: ICommonConfiguration = {
+  MarketId: 'Commons',
+  ATokenNamePrefix: 'Aave XDAI Market',
+  StableDebtTokenNamePrefix: 'Aave XDAI Market stable debt',
+  VariableDebtTokenNamePrefix: 'Aave XDAI Market variable debt',
+  SymbolPrefix: 'm',
+  ProviderId: 0, // Overriden in index.ts
+  ProtocolGlobalParams: {
+    TokenDistributorPercentageBase: '10000',
+    MockUsdPriceInWei: '5848466240000000',
+    UsdAddress: '0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96',
+    NilAddress: '0x0000000000000000000000000000000000000000',
+    OneAddress: '0x0000000000000000000000000000000000000001',
+    AaveReferral: '0',
+  },
+
+  // ----------------
+  // COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS
+  // ----------------
+
+  Mocks: {
+    AllAssetsInitialPrices: {
+      ...MOCK_CHAINLINK_AGGREGATORS_PRICES,
+    },
+  },
+  // TODO: reorg alphabetically, checking the reason of tests failing
+  LendingRateOracleRatesCommon: {
+    WETH: {
+      borrowRate: oneRay.multipliedBy(0.03).toFixed(),
+    },
+    DAI: {
+      borrowRate: oneRay.multipliedBy(0.039).toFixed(),
+    },
+    USDC: {
+      borrowRate: oneRay.multipliedBy(0.039).toFixed(),
+    },
+    USDT: {
+      borrowRate: oneRay.multipliedBy(0.035).toFixed(),
+    },
+    WBTC: {
+      borrowRate: oneRay.multipliedBy(0.03).toFixed(),
+    },
+    STAKE: {
+      borrowRate: oneRay.multipliedBy(0.05).toFixed(), // TEMP
+    },
+  },
+  // ----------------
+  // COMMON PROTOCOL ADDRESSES ACROSS POOLS
+  // ----------------
+
+  // If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex
+  PoolAdmin: {
+    [eXDaiNetwork.xdai]: undefined,
+  },
+  PoolAdminIndex: 0,
+  EmergencyAdmin: {
+    [eXDaiNetwork.xdai]: undefined,
+  },
+  EmergencyAdminIndex: 1,
+  ProviderRegistry: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  ProviderRegistryOwner: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  LendingPoolConfigurator: {
+    [eXDaiNetwork.xdai]: '0',
+  },
+  LendingPool: {
+    [eXDaiNetwork.xdai]: '0',
+  },
+  LendingRateOracle: {
+    [eXDaiNetwork.xdai]: '',
+  },  
+  LendingPoolCollateralManager: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  TokenDistributor: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  WethGateway: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  AaveOracle: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  FallbackOracle: {
+    [eXDaiNetwork.xdai]: ZERO_ADDRESS,
+  },
+  ChainlinkAggregator: {
+    [eXDaiNetwork.xdai]: {
+      DAI: ZERO_ADDRESS,
+      USDC: ZERO_ADDRESS,
+      USDT: ZERO_ADDRESS,
+      WBTC: ZERO_ADDRESS,
+      STAKE: ZERO_ADDRESS,
+    },
+  },
+  ReserveAssets: {
+    [eXDaiNetwork.xdai]: {},
+  },
+  ReservesConfig: {},
+  ATokenDomainSeparator: {
+    [eXDaiNetwork.xdai]: '',
+  },
+  WETH: {
+    [eXDaiNetwork.xdai]: '', // DAI: xDAI is the base token, DAI is also there, We need WXDAI
+  },
+  ReserveFactorTreasuryAddress: {
+    [eXDaiNetwork.xdai]: '',   // TEMP 
+  },
+};
diff --git a/markets/xdai/index.ts b/markets/xdai/index.ts
index 8b137891..fadf52c8 100644
--- a/markets/xdai/index.ts
+++ b/markets/xdai/index.ts
@@ -1 +1,42 @@
+import { oneRay, ZERO_ADDRESS } from '../../helpers/constants';
+import { IXDAIConfiguration, eXDaiNetwork } from '../../helpers/types';
 
+import { CommonsConfig } from './commons';
+import {
+  strategyDAI,
+  strategyUSDC,
+  strategyUSDT,
+  strategyWBTC,
+  strategyWETH,
+  strategySTAKE,
+} from './reservesConfigs';
+
+// ----------------
+// POOL--SPECIFIC PARAMS
+// ----------------
+
+export const XDAIConfig: IXDAIConfiguration = {
+  ...CommonsConfig,
+  MarketId: 'XDAI Market',
+  ProviderId: 4,    // Unknown?
+  ReservesConfig: {
+    DAI: strategyDAI,
+    USDC: strategyUSDC,
+    USDT: strategyUSDT,
+    WBTC: strategyWBTC,
+    WETH: strategyWETH,
+    STAKE: strategySTAKE,
+  },
+  ReserveAssets: {
+    [eXDaiNetwork.xdai]: {
+      DAI: '0x44fA8E6f47987339850636F88629646662444217',
+      USDC: '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83',
+      USDT: '0x4ECaBa5870353805a9F068101A40E0f32ed605C6',
+      WBTC: '0x8e5bBbb09Ed1ebdE8674Cda39A0c169401db4252',
+      WETH: '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1',
+      STAKE: '0xb7D311E2Eb55F2f68a9440da38e7989210b9A05e'
+    },
+  },
+};
+
+export default XDAIConfig;
diff --git a/markets/xdai/rateStrategies.ts b/markets/xdai/rateStrategies.ts
index e69de29b..afe19b63 100644
--- a/markets/xdai/rateStrategies.ts
+++ b/markets/xdai/rateStrategies.ts
@@ -0,0 +1,91 @@
+import BigNumber from 'bignumber.js';
+import { oneRay } from '../../helpers/constants';
+import { IInterestRateStrategyParams } from '../../helpers/types';
+
+// BUSD SUSD
+export const rateStrategyStableOne: IInterestRateStrategyParams = {
+  name: "rateStrategyStableOne",
+  optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: '0',
+  stableRateSlope2: '0',
+};
+
+// DAI TUSD
+export const rateStrategyStableTwo: IInterestRateStrategyParams = {
+  name: "rateStrategyStableTwo",
+  optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(),
+}
+
+// USDC USDT
+export const rateStrategyStableThree: IInterestRateStrategyParams = {
+  name: "rateStrategyStableThree",
+  optimalUtilizationRate: new BigNumber(0.9).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(),
+}
+
+// WETH
+export const rateStrategyWETH: IInterestRateStrategyParams = {
+  name: "rateStrategyWETH",
+  optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(),
+}
+
+// AAVE
+export const rateStrategyAAVE: IInterestRateStrategyParams = {
+  name: "rateStrategyAAVE",
+  optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: '0',
+  variableRateSlope1: '0',
+  variableRateSlope2: '0',
+  stableRateSlope1: '0',
+  stableRateSlope2: '0',
+}
+
+// BAT ENJ LINK MANA MKR REN YFI ZRX
+export const rateStrategyVolatileOne: IInterestRateStrategyParams = {
+  name: "rateStrategyVolatileOne",
+  optimalUtilizationRate: new BigNumber(0.45).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.07).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+}
+
+// KNC WBTC
+export const rateStrategyVolatileTwo: IInterestRateStrategyParams = {
+  name: "rateStrategyVolatileTwo",
+  optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+}
+
+// SNX
+export const rateStrategyVolatileThree: IInterestRateStrategyParams = {
+  name: "rateStrategyVolatileThree",
+  optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(),
+  baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(),
+  variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(),
+  variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+  stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(),
+  stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(),
+}
diff --git a/markets/xdai/reservesConfigs.ts b/markets/xdai/reservesConfigs.ts
index e69de29b..6c90afc5 100644
--- a/markets/xdai/reservesConfigs.ts
+++ b/markets/xdai/reservesConfigs.ts
@@ -0,0 +1,85 @@
+// import BigNumber from 'bignumber.js';
+// import { oneRay } from '../../helpers/constants';
+import { eContractid, IReserveParams } from '../../helpers/types';
+import { 
+  rateStrategyStableOne,
+  rateStrategyStableTwo,
+  rateStrategyStableThree,
+  rateStrategyWETH,
+  rateStrategyAAVE,
+  rateStrategyVolatileOne,
+  rateStrategyVolatileTwo,
+  rateStrategyVolatileThree,
+} from './rateStrategies';
+
+export const strategyDAI: IReserveParams = {
+  strategy: rateStrategyStableTwo,
+  baseLTVAsCollateral: '7500',
+  liquidationThreshold: '8000',
+  liquidationBonus: '10500',
+  borrowingEnabled: true,
+  stableBorrowRateEnabled: true,
+  reserveDecimals: '18',
+  aTokenImpl: eContractid.AToken,
+  reserveFactor: '1000'
+};
+
+export const strategyUSDC: IReserveParams = {
+  strategy: rateStrategyStableThree,
+  baseLTVAsCollateral: '8000',
+  liquidationThreshold: '8500',
+  liquidationBonus: '10500',
+  borrowingEnabled: true,
+  stableBorrowRateEnabled: true,
+  reserveDecimals: '6',
+  aTokenImpl: eContractid.AToken,
+  reserveFactor: '1000'
+};
+
+export const strategyUSDT: IReserveParams = {
+    strategy: rateStrategyStableThree,
+    baseLTVAsCollateral: '8000',
+    liquidationThreshold: '8500',
+    liquidationBonus: '10500',
+    borrowingEnabled: true,
+    stableBorrowRateEnabled: true,
+    reserveDecimals: '6',
+    aTokenImpl: eContractid.AToken,
+    reserveFactor: '1000'
+};
+
+export const strategyWETH: IReserveParams = {
+  strategy: rateStrategyWETH,
+  baseLTVAsCollateral: '8000',
+  liquidationThreshold: '8250',
+  liquidationBonus: '10500',
+  borrowingEnabled: true,
+  stableBorrowRateEnabled: true,
+  reserveDecimals: '18',
+  aTokenImpl: eContractid.AToken,
+  reserveFactor: '1000'
+};
+
+export const strategyWBTC: IReserveParams = {
+  strategy: rateStrategyVolatileTwo,
+  baseLTVAsCollateral: '7000',
+  liquidationThreshold: '7500',
+  liquidationBonus: '11000',
+  borrowingEnabled: true,
+  stableBorrowRateEnabled: true,
+  reserveDecimals: '8',
+  aTokenImpl: eContractid.AToken,
+  reserveFactor: '2000'
+};
+
+export const strategySTAKE: IReserveParams = {
+  strategy: rateStrategyVolatileOne,    //Temp?
+  baseLTVAsCollateral: '5000',
+  liquidationThreshold: '6500',
+  liquidationBonus: '11000',
+  borrowingEnabled: true,
+  stableBorrowRateEnabled: true,
+  reserveDecimals: '18',
+  aTokenImpl: eContractid.AToken,
+  reserveFactor: '2000'
+};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 129f12e4..e0a68833 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27128,7 +27128,7 @@
           "requires": {
             "underscore": "1.9.1",
             "web3-core-helpers": "1.2.1",
-            "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis"
+            "websocket": "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis"
           }
         },
         "web3-shh": {
@@ -39846,7 +39846,7 @@
               "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=",
               "dev": true,
               "requires": {
-                "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git",
+                "ethereumjs-abi": "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git",
                 "ethereumjs-util": "^5.1.1"
               }
             },
@@ -46846,7 +46846,7 @@
         "eth-lib": "0.2.7",
         "ethereumjs-common": "^1.3.2",
         "ethereumjs-tx": "^2.1.1",
-        "scrypt-shim": "github:web3-js/scrypt-shim",
+        "scrypt-shim": "scrypt-shim@github:web3-js/scrypt-shim",
         "underscore": "1.9.1",
         "uuid": "3.3.2",
         "web3-core": "1.2.2",
@@ -47176,7 +47176,7 @@
       "requires": {
         "underscore": "1.9.1",
         "web3-core-helpers": "1.2.2",
-        "websocket": "github:web3-js/WebSocket-Node#polyfill/globalThis"
+        "websocket": "websocket@github:web3-js/WebSocket-Node#polyfill/globalThis"
       }
     },
     "web3-shh": {
diff --git a/package.json b/package.json
index cd067de1..5fd959fa 100644
--- a/package.json
+++ b/package.json
@@ -19,8 +19,8 @@
     "compile": "SKIP_LOAD=true hardhat compile",
     "console:fork": "MAINNET_FORK=true hardhat console",
     "test": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-aave/*.spec.ts",
-    "test-lp": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-lp/*.spec.ts",
-    "test-lp-scenarios": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-lp/__setup.spec.ts test-suites/test-lp/scenario.spec.ts",
+    "test-amm": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-amm/*.spec.ts",
+    "test-amm-scenarios": "TS_NODE_TRANSPILE_ONLY=1 hardhat test ./test-suites/test-amm/__setup.spec.ts test-suites/test-amm/scenario.spec.ts",
     "test-scenarios": "npx hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/scenario.spec.ts",
     "test-repay-with-collateral": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/repay-with-collateral.spec.ts",
     "test-liquidate-with-collateral": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/flash-liquidation-with-collateral.spec.ts",
@@ -35,21 +35,21 @@
     "test-stable-and-atokens": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/atoken-transfer.spec.ts test-suites/test-aave/stable-token.spec.ts",
     "test-subgraph:scenarios": "hardhat --network hardhatevm_docker test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/subgraph-scenarios.spec.ts",
     "test-weth:main": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/weth-gateway.spec.ts",
-    "test-weth:lp": "hardhat test test-suites/test-lp/__setup.spec.ts test-suites/test-lp/weth-gateway.spec.ts",
+    "test-weth:amm": "hardhat test test-suites/test-amm/__setup.spec.ts test-suites/test-amm/weth-gateway.spec.ts",
     "test-uniswap": "hardhat test test-suites/test-aave/__setup.spec.ts test-suites/test-aave/uniswapAdapters*.spec.ts",
     "test:main:check-list": "MAINNET_FORK=true TS_NODE_TRANSPILE_ONLY=1 hardhat test  test-suites/test-aave/__setup.spec.ts test-suites/test-aave/mainnet/check-list.spec.ts",
     "dev:coverage": "buidler compile --force && buidler coverage --network coverage",
     "aave:evm:dev:migration": "npm run compile && hardhat aave:dev",
     "aave:docker:full:migration": "npm run compile && npm run hardhat:docker -- aave:mainnet",
     "aave:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- aave:mainnet --verify",
-    "lp:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- lp:mainnet --verify",
     "matic:mumbai:full:migration": "npm run compile && npm run hardhat:mumbai matic:mainnet",
     "matic:matic:full:migration": "npm run compile && npm run hardhat:matic matic:mainnet",
+    "amm:kovan:full:migration": "npm run compile && npm run hardhat:kovan -- amm:mainnet --verify",
     "aave:kovan:full:initialize": "npm run hardhat:kovan -- full:initialize-lending-pool --verify --pool Aave",
     "aave:ropsten:full:migration": "npm run compile && npm run hardhat:ropsten -- aave:mainnet --verify",
     "aave:fork:main:tenderly": "npm run compile && npm run hardhat:tenderly-main -- aave:mainnet",
     "aave:fork:main": "npm run compile && MAINNET_FORK=true hardhat aave:mainnet",
-    "lp:fork:main": "npm run compile && MAINNET_FORK=true hardhat lp:mainnet",
+    "amm:fork:main": "npm run compile && MAINNET_FORK=true hardhat amm:mainnet",
     "aave:main:full:migration": "npm run compile && npm run hardhat:main -- aave:mainnet --verify",
     "aave:main:full:initialize": "npm run compile && MAINNET_FORK=true full:initialize-tokens --pool Aave",
     "prettier:check": "npx prettier -c 'tasks/**/*.ts' 'contracts/**/*.sol' 'helpers/**/*.ts'  'test-suites/test-aave/**/*.ts'",
diff --git a/tasks/dev/5_initialize.ts b/tasks/dev/5_initialize.ts
index 6c11ad6d..a1ad9970 100644
--- a/tasks/dev/5_initialize.ts
+++ b/tasks/dev/5_initialize.ts
@@ -8,7 +8,7 @@ import {
   authorizeWETHGateway,
 } from '../../helpers/contracts-deployments';
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
-import { eEthereumNetwork } from '../../helpers/types';
+import { eNetwork } from '../../helpers/types';
 import {
   ConfigNames,
   getReservesConfigByPool,
@@ -33,7 +33,7 @@ task('dev:initialize-lending-pool', 'Initialize lending pool configuration.')
   .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
   .setAction(async ({ verify, pool }, localBRE) => {
     await localBRE.run('set-DRE');
-    const network = <eEthereumNetwork>localBRE.network.name;
+    const network = <eNetwork>localBRE.network.name;
     const poolConfig = loadPoolConfig(pool);
     const {
       ATokenNamePrefix,
diff --git a/tasks/full/1_address_provider.ts b/tasks/full/1_address_provider.ts
index 87e3e23d..88852c0c 100644
--- a/tasks/full/1_address_provider.ts
+++ b/tasks/full/1_address_provider.ts
@@ -11,7 +11,7 @@ import {
   getGenesisPoolAdmin,
   getEmergencyAdmin,
 } from '../../helpers/configuration';
-import { eEthereumNetwork } from '../../helpers/types';
+import { eNetwork } from '../../helpers/types';
 import {
   getFirstSigner,
   getLendingPoolAddressesProviderRegistry,
@@ -31,7 +31,7 @@ task(
   .setAction(async ({ verify, pool }, DRE) => {
     await DRE.run('set-DRE');
     let signer: Signer;
-    const network = <eEthereumNetwork>DRE.network.name;
+    const network = <eNetwork>DRE.network.name;
     const poolConfig = loadPoolConfig(pool);
     const { ProviderId, MarketId } = poolConfig;
 
@@ -81,7 +81,7 @@ task(
 
     // 2. Deploy address provider and set genesis manager
     const addressesProvider = await deployLendingPoolAddressesProvider(MarketId, verify);
-    
+
     // DISABLE SEC. 3 FOR GOVERNANCE USE!
     // 3. Set the provider at the Registry
     await waitForTx(
@@ -92,7 +92,7 @@ task(
     );
 
     // 4. Set pool admins
-    
+
     await waitForTx(await addressesProvider.setPoolAdmin(await getGenesisPoolAdmin(poolConfig)));
     await waitForTx(await addressesProvider.setEmergencyAdmin(await getEmergencyAdmin(poolConfig)));
 
diff --git a/tasks/full/2_lending_pool.ts b/tasks/full/2_lending_pool.ts
index db0daabb..5f92b8eb 100644
--- a/tasks/full/2_lending_pool.ts
+++ b/tasks/full/2_lending_pool.ts
@@ -1,45 +1,63 @@
 import { task } from 'hardhat/config';
-import { insertContractAddressInDb } from '../../helpers/contracts-helpers';
+import { getParamPerNetwork, insertContractAddressInDb } from '../../helpers/contracts-helpers';
 import {
   deployATokensAndRatesHelper,
   deployLendingPool,
   deployLendingPoolConfigurator,
   deployStableAndVariableTokensHelper,
 } from '../../helpers/contracts-deployments';
-import { eContractid } from '../../helpers/types';
-import { waitForTx } from '../../helpers/misc-utils';
+import { eContractid, eNetwork } from '../../helpers/types';
+import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils';
 import {
   getLendingPoolAddressesProvider,
   getLendingPool,
   getLendingPoolConfiguratorProxy,
 } from '../../helpers/contracts-getters';
 import { HardhatRuntimeEnvironment } from 'hardhat/types';
+import { loadPoolConfig, ConfigNames } from '../../helpers/configuration';
 
 task('full:deploy-lending-pool', 'Deploy lending pool for dev enviroment')
   .addFlag('verify', 'Verify contracts at Etherscan')
-  .setAction(async ({ verify }, DRE: HardhatRuntimeEnvironment) => {
+  .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
+  .setAction(async ({ verify, pool }, DRE: HardhatRuntimeEnvironment) => {
     try {
       await DRE.run('set-DRE');
-
+      const network = <eNetwork>DRE.network.name;
+      const poolConfig = loadPoolConfig(pool);
       const addressesProvider = await getLendingPoolAddressesProvider();
 
-      // Deploy lending pool
-      const lendingPoolImpl = await deployLendingPool(verify);
+      const { LendingPool, LendingPoolConfigurator } = poolConfig;
 
-      // Set lending pool impl to address provider
-      await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImpl.address));
+      // Reuse/deploy lending pool implementation
+      let lendingPoolImplAddress = getParamPerNetwork(LendingPool, network);
+      if (!notFalsyOrZeroAddress(lendingPoolImplAddress)) {
+        console.log('\tDeploying new lending pool implementation & libraries...');
+        const lendingPoolImpl = await deployLendingPool(verify);
+        lendingPoolImplAddress = lendingPoolImpl.address;
+      }
+      console.log('\tSetting lending pool implementation with address:', lendingPoolImplAddress);
+      // Set lending pool impl to Address provider
+      await waitForTx(await addressesProvider.setLendingPoolImpl(lendingPoolImplAddress));
 
       const address = await addressesProvider.getLendingPool();
       const lendingPoolProxy = await getLendingPool(address);
 
       await insertContractAddressInDb(eContractid.LendingPool, lendingPoolProxy.address);
 
-      // Deploy lending pool configurator
-      const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(verify);
-
+      // Reuse/deploy lending pool configurator
+      let lendingPoolConfiguratorImplAddress = getParamPerNetwork(LendingPoolConfigurator, network); //await deployLendingPoolConfigurator(verify);
+      if (!notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress)) {
+        console.log('\tDeploying new configurator implementation...');
+        const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(verify);
+        lendingPoolConfiguratorImplAddress = lendingPoolConfiguratorImpl.address;
+      }
+      console.log(
+        '\tSetting lending pool configurator implementation with address:',
+        lendingPoolConfiguratorImplAddress
+      );
       // Set lending pool conf impl to Address Provider
       await waitForTx(
-        await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImpl.address)
+        await addressesProvider.setLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress)
       );
 
       const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy(
diff --git a/tasks/full/3_oracles.ts b/tasks/full/3_oracles.ts
index 67a8fbd7..e479b6b1 100644
--- a/tasks/full/3_oracles.ts
+++ b/tasks/full/3_oracles.ts
@@ -2,7 +2,7 @@ import { task } from 'hardhat/config';
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { deployAaveOracle, deployLendingRateOracle } from '../../helpers/contracts-deployments';
 import { setInitialMarketRatesInRatesOracleByHelper } from '../../helpers/oracles-helpers';
-import { ICommonConfiguration, eEthereumNetwork, SymbolMap } from '../../helpers/types';
+import { ICommonConfiguration, eNetwork, SymbolMap } from '../../helpers/types';
 import { waitForTx, notFalsyOrZeroAddress } from '../../helpers/misc-utils';
 import {
   ConfigNames,
@@ -25,7 +25,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
   .setAction(async ({ verify, pool }, DRE) => {
     try {
       await DRE.run('set-DRE');
-      const network = <eEthereumNetwork>DRE.network.name;
+      const network = <eNetwork>DRE.network.name;
       const poolConfig = loadPoolConfig(pool);
       const {
         ProtocolGlobalParams: { UsdAddress },
@@ -56,7 +56,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
         aaveOracle = await deployAaveOracle(
           [tokens, aggregators, fallbackOracleAddress, await getWethAddress(poolConfig)],
           verify
-        ); 
+        );
       }
 
       const lendingRateOracle = notFalsyOrZeroAddress(lendingRateOracleAddress)
@@ -73,7 +73,7 @@ task('full:deploy-oracles', 'Deploy oracles for dev enviroment')
         admin
       );
       //}
-      console.log("ORACLES: %s and %s", aaveOracle.address, lendingRateOracle.address);
+      console.log('ORACLES: %s and %s', aaveOracle.address, lendingRateOracle.address);
       // Register the proxy price provider on the addressesProvider
       await waitForTx(await addressesProvider.setPriceOracle(aaveOracle.address));
       await waitForTx(await addressesProvider.setLendingRateOracle(lendingRateOracle.address));
diff --git a/tasks/full/5-deploy-wethGateWay.ts b/tasks/full/5-deploy-wethGateWay.ts
index 12c97a15..2774f107 100644
--- a/tasks/full/5-deploy-wethGateWay.ts
+++ b/tasks/full/5-deploy-wethGateWay.ts
@@ -4,7 +4,7 @@ import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { loadPoolConfig, ConfigNames, getWethAddress } from '../../helpers/configuration';
 import { deployWETHGateway } from '../../helpers/contracts-deployments';
 import { DRE } from '../../helpers/misc-utils';
-import { eEthereumNetwork } from '../../helpers/types';
+import { eNetwork } from '../../helpers/types';
 
 const CONTRACT_NAME = 'WETHGateway';
 
@@ -13,7 +13,7 @@ task(`full-deploy-weth-gateway`, `Deploys the ${CONTRACT_NAME} contract`)
   .addFlag('verify', `Verify ${CONTRACT_NAME} contract via Etherscan API.`)
   .setAction(async ({ verify, pool }, localBRE) => {
     await localBRE.run('set-DRE');
-    const network = <eEthereumNetwork>localBRE.network.name;
+    const network = <eNetwork>localBRE.network.name;
     const poolConfig = loadPoolConfig(pool);
     const Weth = await getWethAddress(poolConfig);
     const { WethGateway } = poolConfig;
diff --git a/tasks/full/6-initialize.ts b/tasks/full/6-initialize.ts
index 1b949241..f4384e09 100644
--- a/tasks/full/6-initialize.ts
+++ b/tasks/full/6-initialize.ts
@@ -13,8 +13,8 @@ import {
   getTreasuryAddress,
 } from '../../helpers/configuration';
 import { getWETHGateway } from '../../helpers/contracts-getters';
-import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types';
-import { waitForTx } from '../../helpers/misc-utils';
+import { eNetwork, ICommonConfiguration } from '../../helpers/types';
+import { notFalsyOrZeroAddress, waitForTx } from '../../helpers/misc-utils';
 import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers';
 import { exit } from 'process';
 import {
@@ -29,7 +29,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
   .setAction(async ({ verify, pool }, localBRE) => {
     try {
       await localBRE.run('set-DRE');
-      const network = <eEthereumNetwork>localBRE.network.name;
+      const network = <eNetwork>localBRE.network.name;
       const poolConfig = loadPoolConfig(pool);
       const {
         ATokenNamePrefix,
@@ -73,12 +73,16 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
         LendingPoolCollateralManager,
         network
       );
-      if (!collateralManagerAddress) {
+      if (!notFalsyOrZeroAddress(collateralManagerAddress)) {
         const collateralManager = await deployLendingPoolCollateralManager(verify);
         collateralManagerAddress = collateralManager.address;
       }
       // Seems unnecessary to register the collateral manager in the JSON db
 
+      console.log(
+        '\tSetting lending pool collateral manager implementation with address',
+        collateralManagerAddress
+      );
       await waitForTx(
         await addressesProvider.setLendingPoolCollateralManager(collateralManagerAddress)
       );
@@ -88,7 +92,7 @@ task('full:initialize-lending-pool', 'Initialize lending pool configuration.')
       const lendingPoolAddress = await addressesProvider.getLendingPool();
 
       let gateWay = getParamPerNetwork(WethGateway, network);
-      if (gateWay == '') {
+      if (!notFalsyOrZeroAddress(gateWay)) {
         gateWay = (await getWETHGateway()).address;
       }
       await authorizeWETHGateway(gateWay, lendingPoolAddress);
diff --git a/tasks/helpers/deploy-new-asset.ts b/tasks/helpers/deploy-new-asset.ts
index 50cde45b..03d102c4 100644
--- a/tasks/helpers/deploy-new-asset.ts
+++ b/tasks/helpers/deploy-new-asset.ts
@@ -1,5 +1,5 @@
 import { task } from 'hardhat/config';
-import { EthereumNetwork } from '../../helpers/types';
+import { eEthereumNetwork } from '../../helpers/types';
 import { getTreasuryAddress } from '../../helpers/configuration';
 import * as marketConfigs from '../../markets/aave';
 import * as reserveConfigs from '../../markets/aave/reservesConfigs';
@@ -18,7 +18,7 @@ const LENDING_POOL_ADDRESS_PROVIDER = {
   kovan: '0x652B2937Efd0B5beA1c8d54293FC1289672AFC6b',
 };
 
-const isSymbolValid = (symbol: string, network: EthereumNetwork) =>
+const isSymbolValid = (symbol: string, network: eEthereumNetwork) =>
   Object.keys(reserveConfigs).includes('strategy' + symbol) &&
   marketConfigs.AaveConfig.ReserveAssets[network][symbol] &&
   marketConfigs.AaveConfig.ReservesConfig[symbol] === reserveConfigs['strategy' + symbol];
@@ -28,7 +28,7 @@ task('external:deploy-new-asset', 'Deploy A token, Debt Tokens, Risk Parameters'
   .addFlag('verify', 'Verify contracts at Etherscan')
   .setAction(async ({ verify, symbol }, localBRE) => {
     const network = localBRE.network.name;
-    if (!isSymbolValid(symbol, network as EthereumNetwork)) {
+    if (!isSymbolValid(symbol, network as eEthereumNetwork)) {
       throw new Error(
         `
 WRONG RESERVE ASSET SETUP:
diff --git a/tasks/migrations/aave.mainnet.ts b/tasks/migrations/aave.mainnet.ts
index fe05938d..19649262 100644
--- a/tasks/migrations/aave.mainnet.ts
+++ b/tasks/migrations/aave.mainnet.ts
@@ -21,7 +21,7 @@ task('aave:mainnet', 'Deploy development enviroment')
     await DRE.run('full:deploy-address-provider', { pool: POOL_NAME });
 
     console.log('2. Deploy lending pool');
-    await DRE.run('full:deploy-lending-pool');
+    await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME });
 
     console.log('3. Deploy oracles');
     await DRE.run('full:deploy-oracles', { pool: POOL_NAME });
diff --git a/tasks/migrations/lp.mainnet.ts b/tasks/migrations/amm.mainnet.ts
similarity index 91%
rename from tasks/migrations/lp.mainnet.ts
rename to tasks/migrations/amm.mainnet.ts
index 4faea738..3d0e6c8b 100644
--- a/tasks/migrations/lp.mainnet.ts
+++ b/tasks/migrations/amm.mainnet.ts
@@ -4,10 +4,10 @@ import { ConfigNames } from '../../helpers/configuration';
 import { printContracts } from '../../helpers/misc-utils';
 import { usingTenderly } from '../../helpers/tenderly-utils';
 
-task('lp:mainnet', 'Deploy development enviroment')
+task('amm:mainnet', 'Deploy development enviroment')
   .addFlag('verify', 'Verify contracts at Etherscan')
   .setAction(async ({ verify }, DRE) => {
-    const POOL_NAME = ConfigNames.Lp;
+    const POOL_NAME = ConfigNames.Amm;
     await DRE.run('set-DRE');
 
     // Prevent loss of gas verifying all the needed ENVs for Etherscan verification
@@ -21,7 +21,7 @@ task('lp:mainnet', 'Deploy development enviroment')
     await DRE.run('full:deploy-address-provider', { pool: POOL_NAME });
 
     console.log('2. Deploy lending pool');
-    await DRE.run('full:deploy-lending-pool');
+    await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME });
 
     console.log('3. Deploy oracles');
     await DRE.run('full:deploy-oracles', { pool: POOL_NAME });
diff --git a/tasks/migrations/matic.mainnet.ts b/tasks/migrations/matic.mainnet.ts
index 0c8efe3c..970fbfc9 100644
--- a/tasks/migrations/matic.mainnet.ts
+++ b/tasks/migrations/matic.mainnet.ts
@@ -21,7 +21,7 @@ task('matic:mainnet', 'Deploy development enviroment')
     await DRE.run('full:deploy-address-provider', { pool: POOL_NAME });
 
     console.log('2. Deploy lending pool');
-    await DRE.run('full:deploy-lending-pool');
+    await DRE.run('full:deploy-lending-pool', { pool: POOL_NAME});
 
     console.log('3. Deploy oracles');
     await DRE.run('full:deploy-oracles', { pool: POOL_NAME });
diff --git a/tasks/misc/initialize-tokens.ts b/tasks/misc/initialize-tokens.ts
index 91822f84..680e1337 100644
--- a/tasks/misc/initialize-tokens.ts
+++ b/tasks/misc/initialize-tokens.ts
@@ -1,7 +1,7 @@
 import { task } from 'hardhat/config';
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { loadPoolConfig, ConfigNames, getTreasuryAddress } from '../../helpers/configuration';
-import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types';
+import { eEthereumNetwork, eNetwork, ICommonConfiguration } from '../../helpers/types';
 import { waitForTx } from '../../helpers/misc-utils';
 import { initTokenReservesByHelper } from '../../helpers/init-helpers';
 import { exit } from 'process';
@@ -23,9 +23,7 @@ task('full:initialize-tokens', 'Initialize lending pool configuration.')
       await DRE.run('set-DRE');
       let signer: Signer;
       const network =
-        process.env.MAINNET_FORK === 'true'
-          ? eEthereumNetwork.main
-          : <eEthereumNetwork>DRE.network.name;
+        process.env.MAINNET_FORK === 'true' ? eEthereumNetwork.main : <eNetwork>DRE.network.name;
       const poolConfig = loadPoolConfig(pool);
       const { ReserveAssets, ReservesConfig } = poolConfig as ICommonConfiguration;
 
diff --git a/tasks/misc/print-config.ts b/tasks/misc/print-config.ts
index 6a7db42a..722d308c 100644
--- a/tasks/misc/print-config.ts
+++ b/tasks/misc/print-config.ts
@@ -7,7 +7,7 @@ import {
 } from '../../helpers/contracts-getters';
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { DRE } from '../../helpers/misc-utils';
-import { eEthereumNetwork } from '../../helpers/types';
+import { eEthereumNetwork, eNetwork, ePolygonNetwork, eXDaiNetwork } from '../../helpers/types';
 
 task('print-config', 'Inits the DRE, to have access to all the plugins')
   .addParam('dataProvider', 'Address of AaveProtocolDataProvider')
@@ -17,7 +17,7 @@ task('print-config', 'Inits the DRE, to have access to all the plugins')
     const network =
       process.env.MAINNET_FORK === 'true'
         ? eEthereumNetwork.main
-        : (localBRE.network.name as eEthereumNetwork);
+        : (localBRE.network.name as eNetwork);
     const poolConfig = loadPoolConfig(pool);
 
     const providerRegistryAddress = getParamPerNetwork(poolConfig.ProviderRegistry, network);
diff --git a/tasks/verifications/1_general.ts b/tasks/verifications/1_general.ts
index 89a54d0d..fef0e510 100644
--- a/tasks/verifications/1_general.ts
+++ b/tasks/verifications/1_general.ts
@@ -25,20 +25,24 @@ import {
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { verifyContract } from '../../helpers/etherscan-verification';
 import { notFalsyOrZeroAddress } from '../../helpers/misc-utils';
-import { eEthereumNetwork, ICommonConfiguration } from '../../helpers/types';
+import { eNetwork, ICommonConfiguration } from '../../helpers/types';
 
-task('verify:general', 'Deploy oracles for dev enviroment')
+task('verify:general', 'Verify contracts at Etherscan')
   .addFlag('all', 'Verify all contracts at Etherscan')
   .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
   .setAction(async ({ all, pool }, localDRE) => {
     await localDRE.run('set-DRE');
-    const network = localDRE.network.name as eEthereumNetwork;
+    const network = localDRE.network.name as eNetwork;
     const poolConfig = loadPoolConfig(pool);
     const {
       ReserveAssets,
       ReservesConfig,
       ProviderRegistry,
       MarketId,
+      LendingPoolCollateralManager,
+      LendingPoolConfigurator,
+      LendingPool,
+      WethGateway,
     } = poolConfig as ICommonConfiguration;
     const treasuryAddress = await getTreasuryAddress(poolConfig);
 
@@ -47,17 +51,41 @@ task('verify:general', 'Deploy oracles for dev enviroment')
     const addressesProviderRegistry = notFalsyOrZeroAddress(registryAddress)
       ? await getLendingPoolAddressesProviderRegistry(registryAddress)
       : await getLendingPoolAddressesProviderRegistry();
-    const lendingPoolProxy = await getLendingPool();
-    const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy();
-    const lendingPoolCollateralManager = await getLendingPoolCollateralManager();
+    const lendingPoolAddress = await addressesProvider.getLendingPool();
+    const lendingPoolConfiguratorAddress = await addressesProvider.getLendingPoolConfigurator(); //getLendingPoolConfiguratorProxy();
+    const lendingPoolCollateralManagerAddress = await addressesProvider.getLendingPoolCollateralManager();
 
     if (all) {
-      const lendingPoolImpl = await getLendingPoolImpl();
-      const lendingPoolConfiguratorImpl = await getLendingPoolConfiguratorImpl();
-      const lendingPoolCollateralManagerImpl = await getLendingPoolCollateralManagerImpl();
+      const lendingPoolImplAddress = getParamPerNetwork(LendingPool, network);
+      const lendingPoolImpl = notFalsyOrZeroAddress(lendingPoolImplAddress)
+        ? await getLendingPoolImpl(lendingPoolImplAddress)
+        : await getLendingPoolImpl();
+
+      const lendingPoolConfiguratorImplAddress = getParamPerNetwork(
+        LendingPoolConfigurator,
+        network
+      );
+      const lendingPoolConfiguratorImpl = notFalsyOrZeroAddress(lendingPoolConfiguratorImplAddress)
+        ? await getLendingPoolConfiguratorImpl(lendingPoolConfiguratorImplAddress)
+        : await getLendingPoolConfiguratorImpl();
+
+      const lendingPoolCollateralManagerImplAddress = getParamPerNetwork(
+        LendingPoolCollateralManager,
+        network
+      );
+      const lendingPoolCollateralManagerImpl = notFalsyOrZeroAddress(
+        lendingPoolCollateralManagerImplAddress
+      )
+        ? await getLendingPoolCollateralManagerImpl(lendingPoolCollateralManagerImplAddress)
+        : await getLendingPoolCollateralManagerImpl();
+
       const dataProvider = await getAaveProtocolDataProvider();
       const walletProvider = await getWalletProvider();
-      const wethGateway = await getWETHGateway();
+
+      const wethGatewayAddress = getParamPerNetwork(WethGateway, network);
+      const wethGateway = notFalsyOrZeroAddress(wethGatewayAddress)
+        ? await getWETHGateway(wethGatewayAddress)
+        : await getWETHGateway();
 
       // Address Provider
       console.log('\n- Verifying address provider...\n');
@@ -93,15 +121,15 @@ task('verify:general', 'Deploy oracles for dev enviroment')
     }
     // Lending Pool proxy
     console.log('\n- Verifying  Lending Pool Proxy...\n');
-    await verifyContract(lendingPoolProxy.address, [addressesProvider.address]);
+    await verifyContract(lendingPoolAddress, [addressesProvider.address]);
 
     // LendingPool Conf proxy
     console.log('\n- Verifying  Lending Pool Configurator Proxy...\n');
-    await verifyContract(lendingPoolConfigurator.address, [addressesProvider.address]);
+    await verifyContract(lendingPoolConfiguratorAddress, [addressesProvider.address]);
 
     // Proxy collateral manager
     console.log('\n- Verifying  Lending Pool Collateral Manager Proxy...\n');
-    await verifyContract(lendingPoolCollateralManager.address, []);
+    await verifyContract(lendingPoolCollateralManagerAddress, []);
 
     // DelegatedAwareAToken
     console.log('\n- Verifying DelegatedAwareAToken...\n');
@@ -110,7 +138,7 @@ task('verify:general', 'Deploy oracles for dev enviroment')
     if (aUNI) {
       console.log('Verifying aUNI');
       await verifyContract(aUNI, [
-        lendingPoolProxy.address,
+        lendingPoolAddress,
         UNI,
         treasuryAddress,
         'Aave interest bearing UNI',
diff --git a/tasks/verifications/2_tokens.ts b/tasks/verifications/2_tokens.ts
index 4ea86cc5..52d77ffd 100644
--- a/tasks/verifications/2_tokens.ts
+++ b/tasks/verifications/2_tokens.ts
@@ -8,26 +8,35 @@ import {
 import { ZERO_ADDRESS } from '../../helpers/constants';
 import {
   getAddressById,
+  getFirstSigner,
   getLendingPool,
   getLendingPoolAddressesProvider,
   getLendingPoolConfiguratorProxy,
 } from '../../helpers/contracts-getters';
 import { getParamPerNetwork } from '../../helpers/contracts-helpers';
 import { verifyContract } from '../../helpers/etherscan-verification';
-import { eEthereumNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types';
+import { eNetwork, ICommonConfiguration, IReserveParams } from '../../helpers/types';
+import { LendingPoolConfiguratorFactory, LendingPoolFactory } from '../../types';
 
 task('verify:tokens', 'Deploy oracles for dev enviroment')
   .addParam('pool', `Pool name to retrieve configuration, supported: ${Object.values(ConfigNames)}`)
   .setAction(async ({ verify, all, pool }, localDRE) => {
     await localDRE.run('set-DRE');
-    const network = localDRE.network.name as eEthereumNetwork;
+    const network = localDRE.network.name as eNetwork;
     const poolConfig = loadPoolConfig(pool);
     const { ReserveAssets, ReservesConfig } = poolConfig as ICommonConfiguration;
     const treasuryAddress = await getTreasuryAddress(poolConfig);
 
     const addressesProvider = await getLendingPoolAddressesProvider();
-    const lendingPoolProxy = await getLendingPool();
-    const lendingPoolConfigurator = await getLendingPoolConfiguratorProxy();
+    const lendingPoolProxy = LendingPoolFactory.connect(
+      await addressesProvider.getLendingPool(),
+      await getFirstSigner()
+    );
+
+    const lendingPoolConfigurator = LendingPoolConfiguratorFactory.connect(
+      await addressesProvider.getLendingPoolConfigurator(),
+      await getFirstSigner()
+    );
 
     const configs = Object.entries(ReservesConfig) as [string, IReserveParams][];
     for (const entry of Object.entries(getParamPerNetwork(ReserveAssets, network))) {
diff --git a/test-suites/test-aave/__setup.spec.ts b/test-suites/test-aave/__setup.spec.ts
index 00935f53..b157610f 100644
--- a/test-suites/test-aave/__setup.spec.ts
+++ b/test-suites/test-aave/__setup.spec.ts
@@ -176,7 +176,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
       UniWBTCWETH: mockTokens.UniWBTCWETH.address,
       UniAAVEWETH: mockTokens.UniAAVEWETH.address,
       UniBATWETH: mockTokens.UniBATWETH.address,
-      UniUSDCDAI: mockTokens.UniUSDCDAI.address,
+      UniDAIUSDC: mockTokens.UniDAIUSDC.address,
       UniCRVWETH: mockTokens.UniCRVWETH.address,
       UniLINKWETH: mockTokens.UniLINKWETH.address,
       UniMKRWETH: mockTokens.UniMKRWETH.address,
@@ -189,6 +189,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
       BptWBTCWETH: mockTokens.BptWBTCWETH.address,
       WMATIC: mockTokens.WMATIC.address,
       USD: USD_ADDRESS,
+      STAKE: mockTokens.STAKE.address,
     },
     fallbackOracle
   );
diff --git a/test-suites/test-aave/delegation-aware-atoken.spec.ts b/test-suites/test-aave/delegation-aware-atoken.spec.ts
index 656f7422..7e938172 100644
--- a/test-suites/test-aave/delegation-aware-atoken.spec.ts
+++ b/test-suites/test-aave/delegation-aware-atoken.spec.ts
@@ -3,7 +3,7 @@ import { BUIDLEREVM_CHAINID } from '../../helpers/buidler-constants';
 import { buildPermitParams, getSignatureFromTypedData } from '../../helpers/contracts-helpers';
 import { expect } from 'chai';
 import { ethers } from 'ethers';
-import { eEthereumNetwork, ProtocolErrors } from '../../helpers/types';
+import { ProtocolErrors } from '../../helpers/types';
 import { makeSuite, TestEnv } from './helpers/make-suite';
 import { DRE } from '../../helpers/misc-utils';
 import {
@@ -35,10 +35,17 @@ makeSuite('AToken: underlying delegation', (testEnv: TestEnv) => {
     delegationERC20 = await deployMintableDelegationERC20(['DEL', 'DEL', '18']);
 
     delegationAToken = await deployDelegationAwareAToken(
-      [pool.address, delegationERC20.address, await getTreasuryAddress(AaveConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'],
+      [
+        pool.address,
+        delegationERC20.address,
+        await getTreasuryAddress(AaveConfig),
+        ZERO_ADDRESS,
+        'aDEL',
+        'aDEL',
+      ],
       false
     );
-    
+
     //await delegationAToken.initialize(pool.address, ZERO_ADDRESS, delegationERC20.address, ZERO_ADDRESS, '18', 'aDEL', 'aDEL');
 
     console.log((await delegationAToken.decimals()).toString());
diff --git a/test-suites/test-lp/__setup.spec.ts b/test-suites/test-amm/__setup.spec.ts
similarity index 92%
rename from test-suites/test-lp/__setup.spec.ts
rename to test-suites/test-amm/__setup.spec.ts
index e7515f25..7d55702e 100644
--- a/test-suites/test-lp/__setup.spec.ts
+++ b/test-suites/test-amm/__setup.spec.ts
@@ -46,7 +46,7 @@ import {
 } from '../../helpers/oracles-helpers';
 import { DRE, waitForTx } from '../../helpers/misc-utils';
 import { initReservesByHelper, configureReservesByHelper } from '../../helpers/init-helpers';
-import LpConfig from '../../markets/lp';
+import AmmConfig from '../../markets/amm';
 import { ZERO_ADDRESS } from '../../helpers/constants';
 import {
   getLendingPool,
@@ -55,16 +55,16 @@ import {
 } from '../../helpers/contracts-getters';
 import { WETH9Mocked } from '../../types/WETH9Mocked';
 
-const MOCK_USD_PRICE_IN_WEI = LpConfig.ProtocolGlobalParams.MockUsdPriceInWei;
-const ALL_ASSETS_INITIAL_PRICES = LpConfig.Mocks.AllAssetsInitialPrices;
-const USD_ADDRESS = LpConfig.ProtocolGlobalParams.UsdAddress;
-const MOCK_CHAINLINK_AGGREGATORS_PRICES = LpConfig.Mocks.AllAssetsInitialPrices;
-const LENDING_RATE_ORACLE_RATES_COMMON = LpConfig.LendingRateOracleRatesCommon;
+const MOCK_USD_PRICE_IN_WEI = AmmConfig.ProtocolGlobalParams.MockUsdPriceInWei;
+const ALL_ASSETS_INITIAL_PRICES = AmmConfig.Mocks.AllAssetsInitialPrices;
+const USD_ADDRESS = AmmConfig.ProtocolGlobalParams.UsdAddress;
+const MOCK_CHAINLINK_AGGREGATORS_PRICES = AmmConfig.Mocks.AllAssetsInitialPrices;
+const LENDING_RATE_ORACLE_RATES_COMMON = AmmConfig.LendingRateOracleRatesCommon;
 
 const deployAllMockTokens = async (deployer: Signer) => {
   const tokens: { [symbol: string]: MockContract | MintableERC20 | WETH9Mocked } = {};
 
-  const lpConfigData = getReservesConfigByPool(AavePools.lp);
+  const ammConfigData = getReservesConfigByPool(AavePools.amm);
 
   for (const tokenSymbol of Object.keys(TokenContractId)) {
     if (tokenSymbol === 'WETH') {
@@ -74,7 +74,7 @@ const deployAllMockTokens = async (deployer: Signer) => {
     }
     let decimals = 18;
 
-    let configData = (<any>lpConfigData)[tokenSymbol];
+    let configData = (<any>ammConfigData)[tokenSymbol];
 
     if (!configData) {
       decimals = 18;
@@ -97,7 +97,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
 
   const mockTokens = await deployAllMockTokens(deployer);
 
-  const addressesProvider = await deployLendingPoolAddressesProvider(LpConfig.MarketId);
+  const addressesProvider = await deployLendingPoolAddressesProvider(AmmConfig.MarketId);
   await waitForTx(await addressesProvider.setPoolAdmin(aaveAdmin));
 
   //setting users[1] as emergency admin, which is in position 2 in the DRE addresses list
@@ -175,7 +175,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
       UniWBTCWETH: mockTokens.UniWBTCWETH.address,
       UniAAVEWETH: mockTokens.UniAAVEWETH.address,
       UniBATWETH: mockTokens.UniBATWETH.address,
-      UniUSDCDAI: mockTokens.UniUSDCDAI.address,
+      UniDAIUSDC: mockTokens.UniDAIUSDC.address,
       UniCRVWETH: mockTokens.UniCRVWETH.address,
       UniLINKWETH: mockTokens.UniLINKWETH.address,
       UniMKRWETH: mockTokens.UniMKRWETH.address,
@@ -188,6 +188,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
       BptWBTCWETH: mockTokens.BptWBTCWETH.address,
       WMATIC: mockTokens.WMATIC.address,
       USD: USD_ADDRESS,
+      STAKE: mockTokens.STAKE.address,
     },
     fallbackOracle
   );
@@ -228,7 +229,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
     aaveAdmin
   );
 
-  const reservesParams = getReservesConfigByPool(AavePools.lp);
+  const reservesParams = getReservesConfigByPool(AavePools.amm);
 
   const testHelpers = await deployAaveProtocolDataProvider(addressesProvider.address);
 
@@ -237,7 +238,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => {
 
   console.log('Initialize configuration');
 
-  const config = loadPoolConfig(ConfigNames.Lp);
+  const config = loadPoolConfig(ConfigNames.Amm);
   
   const { 
     ATokenNamePrefix,
@@ -293,7 +294,7 @@ before(async () => {
   const MAINNET_FORK = process.env.MAINNET_FORK === 'true';
 
   if (MAINNET_FORK) {
-    await rawBRE.run('lp:mainnet');
+    await rawBRE.run('amm:mainnet');
   } else {
     console.log('-> Deploying test environment...');
     await buildTestEnv(deployer, secondaryWallet);
diff --git a/test-suites/test-lp/addresses-provider-registry.spec.ts b/test-suites/test-amm/addresses-provider-registry.spec.ts
similarity index 100%
rename from test-suites/test-lp/addresses-provider-registry.spec.ts
rename to test-suites/test-amm/addresses-provider-registry.spec.ts
diff --git a/test-suites/test-lp/atoken-modifiers.spec.ts b/test-suites/test-amm/atoken-modifiers.spec.ts
similarity index 100%
rename from test-suites/test-lp/atoken-modifiers.spec.ts
rename to test-suites/test-amm/atoken-modifiers.spec.ts
diff --git a/test-suites/test-lp/atoken-permit.spec.ts b/test-suites/test-amm/atoken-permit.spec.ts
similarity index 100%
rename from test-suites/test-lp/atoken-permit.spec.ts
rename to test-suites/test-amm/atoken-permit.spec.ts
diff --git a/test-suites/test-lp/atoken-transfer.spec.ts b/test-suites/test-amm/atoken-transfer.spec.ts
similarity index 98%
rename from test-suites/test-lp/atoken-transfer.spec.ts
rename to test-suites/test-amm/atoken-transfer.spec.ts
index 9d1b8359..0290f941 100644
--- a/test-suites/test-lp/atoken-transfer.spec.ts
+++ b/test-suites/test-amm/atoken-transfer.spec.ts
@@ -4,7 +4,7 @@ import { expect } from 'chai';
 import { ethers } from 'ethers';
 import { RateMode, ProtocolErrors } from '../../helpers/types';
 import { makeSuite, TestEnv } from './helpers/make-suite';
-import { CommonsConfig } from '../../markets/lp/commons';
+import { CommonsConfig } from '../../markets/amm/commons';
 
 const AAVE_REFERRAL = CommonsConfig.ProtocolGlobalParams.AaveReferral;
 
diff --git a/test-suites/test-lp/configurator.spec.ts b/test-suites/test-amm/configurator.spec.ts
similarity index 99%
rename from test-suites/test-lp/configurator.spec.ts
rename to test-suites/test-amm/configurator.spec.ts
index f4557791..e4e3f4fa 100644
--- a/test-suites/test-lp/configurator.spec.ts
+++ b/test-suites/test-amm/configurator.spec.ts
@@ -2,7 +2,7 @@ import { TestEnv, makeSuite } from './helpers/make-suite';
 import { APPROVAL_AMOUNT_LENDING_POOL, RAY } from '../../helpers/constants';
 import { convertToCurrencyDecimals } from '../../helpers/contracts-helpers';
 import { ProtocolErrors } from '../../helpers/types';
-import { strategyWETH } from '../../markets/lp/reservesConfigs';
+import { strategyWETH } from '../../markets/amm/reservesConfigs';
 
 const { expect } = require('chai');
 
diff --git a/test-suites/test-lp/delegation-aware-atoken.spec.ts b/test-suites/test-amm/delegation-aware-atoken.spec.ts
similarity index 96%
rename from test-suites/test-lp/delegation-aware-atoken.spec.ts
rename to test-suites/test-amm/delegation-aware-atoken.spec.ts
index aeaf4499..73ca6883 100644
--- a/test-suites/test-lp/delegation-aware-atoken.spec.ts
+++ b/test-suites/test-amm/delegation-aware-atoken.spec.ts
@@ -20,7 +20,7 @@ import {
 import { DelegationAwareATokenFactory } from '../../types';
 import { DelegationAwareAToken } from '../../types/DelegationAwareAToken';
 import { MintableDelegationERC20 } from '../../types/MintableDelegationERC20';
-import LpConfig from '../../markets/lp';
+import AmmConfig from '../../markets/amm';
 
 const { parseEther } = ethers.utils;
 
@@ -35,7 +35,7 @@ makeSuite('AToken: underlying delegation', (testEnv: TestEnv) => {
     delegationERC20 = await deployMintableDelegationERC20(['DEL', 'DEL', '18']);
 
     delegationAToken = await deployDelegationAwareAToken(
-      [pool.address, delegationERC20.address, await getTreasuryAddress(LpConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'],
+      [pool.address, delegationERC20.address, await getTreasuryAddress(AmmConfig), ZERO_ADDRESS, 'aDEL', 'aDEL'],
       false
     );
     
diff --git a/test-suites/test-lp/flashloan.spec.ts b/test-suites/test-amm/flashloan.spec.ts
similarity index 100%
rename from test-suites/test-lp/flashloan.spec.ts
rename to test-suites/test-amm/flashloan.spec.ts
diff --git a/test-suites/test-lp/helpers/actions.ts b/test-suites/test-amm/helpers/actions.ts
similarity index 100%
rename from test-suites/test-lp/helpers/actions.ts
rename to test-suites/test-amm/helpers/actions.ts
diff --git a/test-suites/test-lp/helpers/almost-equal.ts b/test-suites/test-amm/helpers/almost-equal.ts
similarity index 100%
rename from test-suites/test-lp/helpers/almost-equal.ts
rename to test-suites/test-amm/helpers/almost-equal.ts
diff --git a/test-suites/test-lp/helpers/make-suite.ts b/test-suites/test-amm/helpers/make-suite.ts
similarity index 98%
rename from test-suites/test-lp/helpers/make-suite.ts
rename to test-suites/test-amm/helpers/make-suite.ts
index c65f0df0..71d96bf5 100644
--- a/test-suites/test-lp/helpers/make-suite.ts
+++ b/test-suites/test-amm/helpers/make-suite.ts
@@ -36,7 +36,7 @@ import { getParamPerNetwork } from '../../../helpers/contracts-helpers';
 import { WETH9Mocked } from '../../../types/WETH9Mocked';
 import { WETHGateway } from '../../../types/WETHGateway';
 import { solidity } from 'ethereum-waffle';
-import { lpConfig } from '../../../markets/lp';
+import { AmmConfig } from '../../../markets/amm';
 import { FlashLiquidationAdapter } from '../../../types';
 import { HardhatRuntimeEnvironment } from 'hardhat/types';
 import { usingTenderly } from '../../../helpers/tenderly-utils';
@@ -118,7 +118,7 @@ export async function initializeMakeSuite() {
 
   if (process.env.MAINNET_FORK === 'true') {
     testEnv.registry = await getLendingPoolAddressesProviderRegistry(
-      getParamPerNetwork(lpConfig.ProviderRegistry, eEthereumNetwork.main)
+      getParamPerNetwork(AmmConfig.ProviderRegistry, eEthereumNetwork.main)
     );
   } else {
     testEnv.registry = await getLendingPoolAddressesProviderRegistry();
diff --git a/test-suites/test-lp/helpers/scenario-engine.ts b/test-suites/test-amm/helpers/scenario-engine.ts
similarity index 100%
rename from test-suites/test-lp/helpers/scenario-engine.ts
rename to test-suites/test-amm/helpers/scenario-engine.ts
diff --git a/test-suites/test-lp/helpers/scenarios/borrow-negatives.json b/test-suites/test-amm/helpers/scenarios/borrow-negatives.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/borrow-negatives.json
rename to test-suites/test-amm/helpers/scenarios/borrow-negatives.json
diff --git a/test-suites/test-lp/helpers/scenarios/borrow-repay-stable.json b/test-suites/test-amm/helpers/scenarios/borrow-repay-stable.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/borrow-repay-stable.json
rename to test-suites/test-amm/helpers/scenarios/borrow-repay-stable.json
diff --git a/test-suites/test-lp/helpers/scenarios/borrow-repay-variable.json b/test-suites/test-amm/helpers/scenarios/borrow-repay-variable.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/borrow-repay-variable.json
rename to test-suites/test-amm/helpers/scenarios/borrow-repay-variable.json
diff --git a/test-suites/test-lp/helpers/scenarios/credit-delegation.json b/test-suites/test-amm/helpers/scenarios/credit-delegation.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/credit-delegation.json
rename to test-suites/test-amm/helpers/scenarios/credit-delegation.json
diff --git a/test-suites/test-lp/helpers/scenarios/deposit.json b/test-suites/test-amm/helpers/scenarios/deposit.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/deposit.json
rename to test-suites/test-amm/helpers/scenarios/deposit.json
diff --git a/test-suites/test-lp/helpers/scenarios/rebalance-stable-rate.json b/test-suites/test-amm/helpers/scenarios/rebalance-stable-rate.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/rebalance-stable-rate.json
rename to test-suites/test-amm/helpers/scenarios/rebalance-stable-rate.json
diff --git a/test-suites/test-lp/helpers/scenarios/set-use-as-collateral.json b/test-suites/test-amm/helpers/scenarios/set-use-as-collateral.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/set-use-as-collateral.json
rename to test-suites/test-amm/helpers/scenarios/set-use-as-collateral.json
diff --git a/test-suites/test-lp/helpers/scenarios/swap-rate-mode.json b/test-suites/test-amm/helpers/scenarios/swap-rate-mode.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/swap-rate-mode.json
rename to test-suites/test-amm/helpers/scenarios/swap-rate-mode.json
diff --git a/test-suites/test-lp/helpers/scenarios/withdraw-negatives.json b/test-suites/test-amm/helpers/scenarios/withdraw-negatives.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/withdraw-negatives.json
rename to test-suites/test-amm/helpers/scenarios/withdraw-negatives.json
diff --git a/test-suites/test-lp/helpers/scenarios/withdraw.json b/test-suites/test-amm/helpers/scenarios/withdraw.json
similarity index 100%
rename from test-suites/test-lp/helpers/scenarios/withdraw.json
rename to test-suites/test-amm/helpers/scenarios/withdraw.json
diff --git a/test-suites/test-lp/helpers/utils/calculations.ts b/test-suites/test-amm/helpers/utils/calculations.ts
similarity index 100%
rename from test-suites/test-lp/helpers/utils/calculations.ts
rename to test-suites/test-amm/helpers/utils/calculations.ts
diff --git a/test-suites/test-lp/helpers/utils/helpers.ts b/test-suites/test-amm/helpers/utils/helpers.ts
similarity index 100%
rename from test-suites/test-lp/helpers/utils/helpers.ts
rename to test-suites/test-amm/helpers/utils/helpers.ts
diff --git a/test-suites/test-lp/helpers/utils/interfaces/index.ts b/test-suites/test-amm/helpers/utils/interfaces/index.ts
similarity index 100%
rename from test-suites/test-lp/helpers/utils/interfaces/index.ts
rename to test-suites/test-amm/helpers/utils/interfaces/index.ts
diff --git a/test-suites/test-lp/helpers/utils/math.ts b/test-suites/test-amm/helpers/utils/math.ts
similarity index 100%
rename from test-suites/test-lp/helpers/utils/math.ts
rename to test-suites/test-amm/helpers/utils/math.ts
diff --git a/test-suites/test-lp/lending-pool-addresses-provider.spec.ts b/test-suites/test-amm/lending-pool-addresses-provider.spec.ts
similarity index 100%
rename from test-suites/test-lp/lending-pool-addresses-provider.spec.ts
rename to test-suites/test-amm/lending-pool-addresses-provider.spec.ts
diff --git a/test-suites/test-lp/liquidation-atoken.spec.ts b/test-suites/test-amm/liquidation-atoken.spec.ts
similarity index 100%
rename from test-suites/test-lp/liquidation-atoken.spec.ts
rename to test-suites/test-amm/liquidation-atoken.spec.ts
diff --git a/test-suites/test-lp/liquidation-underlying.spec.ts b/test-suites/test-amm/liquidation-underlying.spec.ts
similarity index 99%
rename from test-suites/test-lp/liquidation-underlying.spec.ts
rename to test-suites/test-amm/liquidation-underlying.spec.ts
index 7bc78dad..e44a2d80 100644
--- a/test-suites/test-lp/liquidation-underlying.spec.ts
+++ b/test-suites/test-amm/liquidation-underlying.spec.ts
@@ -7,7 +7,7 @@ import { makeSuite } from './helpers/make-suite';
 import { ProtocolErrors, RateMode } from '../../helpers/types';
 import { calcExpectedVariableDebtTokenBalance } from './helpers/utils/calculations';
 import { getReserveData, getUserData } from './helpers/utils/helpers';
-import { CommonsConfig } from '../../markets/lp/commons';
+import { CommonsConfig } from '../../markets/amm/commons';
 
 import { parseEther } from 'ethers/lib/utils';
 
diff --git a/test-suites/test-lp/mainnet/check-list.spec.ts b/test-suites/test-amm/mainnet/check-list.spec.ts
similarity index 100%
rename from test-suites/test-lp/mainnet/check-list.spec.ts
rename to test-suites/test-amm/mainnet/check-list.spec.ts
diff --git a/test-suites/test-lp/pausable-functions.spec.ts b/test-suites/test-amm/pausable-functions.spec.ts
similarity index 100%
rename from test-suites/test-lp/pausable-functions.spec.ts
rename to test-suites/test-amm/pausable-functions.spec.ts
diff --git a/test-suites/test-lp/pool-modifiers.spec.ts b/test-suites/test-amm/pool-modifiers.spec.ts
similarity index 100%
rename from test-suites/test-lp/pool-modifiers.spec.ts
rename to test-suites/test-amm/pool-modifiers.spec.ts
diff --git a/test-suites/test-lp/rate-strategy.spec.ts b/test-suites/test-amm/rate-strategy.spec.ts
similarity index 100%
rename from test-suites/test-lp/rate-strategy.spec.ts
rename to test-suites/test-amm/rate-strategy.spec.ts
diff --git a/test-suites/test-lp/scenario.spec.ts b/test-suites/test-amm/scenario.spec.ts
similarity index 93%
rename from test-suites/test-lp/scenario.spec.ts
rename to test-suites/test-amm/scenario.spec.ts
index 99bed044..f9c4d78b 100644
--- a/test-suites/test-lp/scenario.spec.ts
+++ b/test-suites/test-amm/scenario.spec.ts
@@ -8,7 +8,7 @@ import { getReservesConfigByPool } from '../../helpers/configuration';
 import { AavePools, iLpPoolAssets, IReserveParams } from '../../helpers/types';
 import { executeStory } from './helpers/scenario-engine';
 
-const scenarioFolder = './test-suites/test-lp/helpers/scenarios/';
+const scenarioFolder = './test-suites/test-amm/helpers/scenarios/';
 
 const selectedScenarios: string[] = [];
 
@@ -25,7 +25,7 @@ fs.readdirSync(scenarioFolder).forEach((file) => {
       actionsConfiguration.skipIntegrityCheck = false; //set this to true to execute solidity-coverage
 
       calculationsConfiguration.reservesParams = <iLpPoolAssets<IReserveParams>>(
-        getReservesConfigByPool(AavePools.lp)
+        getReservesConfigByPool(AavePools.amm)
       );
     });
     after('Reset', () => {
diff --git a/test-suites/test-lp/stable-rate-economy.spec.ts b/test-suites/test-amm/stable-rate-economy.spec.ts
similarity index 100%
rename from test-suites/test-lp/stable-rate-economy.spec.ts
rename to test-suites/test-amm/stable-rate-economy.spec.ts
diff --git a/test-suites/test-lp/stable-token.spec.ts b/test-suites/test-amm/stable-token.spec.ts
similarity index 100%
rename from test-suites/test-lp/stable-token.spec.ts
rename to test-suites/test-amm/stable-token.spec.ts
diff --git a/test-suites/test-lp/subgraph-scenarios.spec.ts b/test-suites/test-amm/subgraph-scenarios.spec.ts
similarity index 96%
rename from test-suites/test-lp/subgraph-scenarios.spec.ts
rename to test-suites/test-amm/subgraph-scenarios.spec.ts
index 24e119f1..a622eb34 100644
--- a/test-suites/test-lp/subgraph-scenarios.spec.ts
+++ b/test-suites/test-amm/subgraph-scenarios.spec.ts
@@ -19,7 +19,7 @@ makeSuite('Subgraph scenario tests', async (testEnv) => {
     actionsConfiguration.skipIntegrityCheck = false; //set this to true to execute solidity-coverage
 
     calculationsConfiguration.reservesParams = <iLpPoolAssets<IReserveParams>>(
-      getReservesConfigByPool(AavePools.lp)
+      getReservesConfigByPool(AavePools.amm)
     );
   });
   after('Reset', () => {
diff --git a/test-suites/test-lp/uniswapAdapters.base.spec.ts b/test-suites/test-amm/uniswapAdapters.base.spec.ts
similarity index 100%
rename from test-suites/test-lp/uniswapAdapters.base.spec.ts
rename to test-suites/test-amm/uniswapAdapters.base.spec.ts
diff --git a/test-suites/test-lp/uniswapAdapters.flashLiquidation.spec.ts b/test-suites/test-amm/uniswapAdapters.flashLiquidation.spec.ts
similarity index 100%
rename from test-suites/test-lp/uniswapAdapters.flashLiquidation.spec.ts
rename to test-suites/test-amm/uniswapAdapters.flashLiquidation.spec.ts
diff --git a/test-suites/test-lp/uniswapAdapters.liquiditySwap.spec.ts b/test-suites/test-amm/uniswapAdapters.liquiditySwap.spec.ts
similarity index 100%
rename from test-suites/test-lp/uniswapAdapters.liquiditySwap.spec.ts
rename to test-suites/test-amm/uniswapAdapters.liquiditySwap.spec.ts
diff --git a/test-suites/test-lp/uniswapAdapters.repay.spec.ts b/test-suites/test-amm/uniswapAdapters.repay.spec.ts
similarity index 100%
rename from test-suites/test-lp/uniswapAdapters.repay.spec.ts
rename to test-suites/test-amm/uniswapAdapters.repay.spec.ts
diff --git a/test-suites/test-lp/upgradeability.spec.ts b/test-suites/test-amm/upgradeability.spec.ts
similarity index 100%
rename from test-suites/test-lp/upgradeability.spec.ts
rename to test-suites/test-amm/upgradeability.spec.ts
diff --git a/test-suites/test-lp/variable-debt-token.spec.ts b/test-suites/test-amm/variable-debt-token.spec.ts
similarity index 100%
rename from test-suites/test-lp/variable-debt-token.spec.ts
rename to test-suites/test-amm/variable-debt-token.spec.ts
diff --git a/test-suites/test-lp/weth-gateway.spec.ts b/test-suites/test-amm/weth-gateway.spec.ts
similarity index 100%
rename from test-suites/test-lp/weth-gateway.spec.ts
rename to test-suites/test-amm/weth-gateway.spec.ts