diff --git a/flavors.txt b/flavors.txt
deleted file mode 100644
index ed20242a67490e84c0221ef2c1d9b41ca9d59e49..0000000000000000000000000000000000000000
--- a/flavors.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-csirtmu.tiny1x2	1	2 GB	20 GB
-csirtmu.tiny1x4	1	4 GB	20 GB
-csirtmu.small2x4	2	4 GB	20 GB
-csirtmu.small2x8	2	8 GB	40 GB
-csirtmu.medium4x8	4	8 GB	40 GB
-csirtmu.medium4x16	4	16 GB	40 GB
-csirtmu.large8x16	8	16 GB	80 GB
-csirtmu.large8x32	8	32 GB	80 GB
-csirtmu.jumbo16x32	16	32 GB	100 GB
-csirtmu.jumbo16x64	16	64 GB	100 GB
\ No newline at end of file
diff --git a/generate.py b/generate.py
index 16f040252f1cfc6c509ef6e676ae7fca88afafe4..fc6ef567c507dcdb056b42ba32476d1c0856efa3 100644
--- a/generate.py
+++ b/generate.py
@@ -5,11 +5,14 @@ import yaml
 import jinja2
 
 from modules.network_parser import add_networks
+from modules.provider import print_prov_attributes
 
 if (len(sys.argv) != 2):
     print ("Error: Expecting 1 argument (yml file).")
     sys.exit();
 
+
+# Loading external files
 try:
     ymlfile = open(str(sys.argv[1]))
     yml = yaml.safe_load(ymlfile)
@@ -17,25 +20,32 @@ except IOError:
     print ("Error: file does not exist.")
 
 try:
-    v_mappings_file = open("name_mapping/vagrant.yml")
-    vagrant_mappings = yaml.safe_load(v_mappings_file)
+    mapping_file = open("name_mapping/mapping.yml")
+    name_mappings = yaml.safe_load(mapping_file)
 except IOError:
     print ("Error: cannot find mappings.")
 
+try:
+    flavors_file = open("name_mapping/flavors.yml")
+    flavors = yaml.safe_load(flavors_file)
+except IOError:
+    print ("Error: cannot find the list of flavors.")
+
+
 # Converts yaml attribute names to vagrant attribute names.
 def do_mapping(name, command_type):
-    return vagrant_mappings[str(command_type)][name]
+    return name_mappings[str(command_type)][name]
 
 def add_formated_command(key, value):
-    if (key in vagrant_mappings['string']):
+    if (key in name_mappings['string']):
         devices[host['name']].append(
                 'device.' + str(do_mapping(key, 'string'))
                 + ' = \"' + str(value) + '\"')
-    elif (key in vagrant_mappings['integer']):
+    elif (key in name_mappings['integer']):
         devices[host['name']].append(
                 'device.' + str(do_mapping(key, 'integer'))
                 + ' = ' + str(value))
-    elif (key in vagrant_mappings['boolean']):
+    elif (key in name_mappings['boolean']):
         devices[host['name']].append(
                 'device.' + str(do_mapping(key, 'boolean'))
                 + ' = ' + str(value).lower())
@@ -50,6 +60,8 @@ for host in yml['hosts']:
         if (key != 'name'):
             add_formated_command(key, value)
     add_networks(host['name'], yml, devices)
+    print_prov_attributes(host, flavors
+            , name_mappings['need_provider'], devices)
 
 
 # Generating output via Jinja2
diff --git a/modules/network_parser.py b/modules/network_parser.py
index 9b412d01a8724bba6b16e3e5f866ac41e18b5b52..52f6d3d57dfb2112f2b915c9dab113192e07828f 100644
--- a/modules/network_parser.py
+++ b/modules/network_parser.py
@@ -23,6 +23,8 @@ def add_networks(hostname, yml, devices):
         if (mapping['host'] == hostname):
             _add_ip(hostname, yml['net_mappings'], devices)
             if (yml['networks']):
-                _add_netmask(hostname, mapping['network'], yml['networks'], devices)
+                _add_netmask(
+                        hostname, mapping['network']
+                        , yml['networks'], devices)
                 
 
diff --git a/modules/provider.py b/modules/provider.py
new file mode 100644
index 0000000000000000000000000000000000000000..76318572dc4b21464d1898691f662778d7c88661
--- /dev/null
+++ b/modules/provider.py
@@ -0,0 +1,35 @@
+def _print_flavor(host, flavors, provider_attributes, devices):
+    if ('memory' not in host):
+        devices[host['name']].append('  vb.'
+                + provider_attributes['memory'] + ' = '
+                + str(flavors[host['flavor']]['memory']))
+    if ('cpus' not in host):
+        devices[host['name']].append('  vb.'
+                + provider_attributes['cpus'] + ' = '
+                + str(flavors[host['flavor']]['cores']))
+
+def _add_params(host, flavors, provider_attributes, devices):
+    if ('memory' in host):
+        devices[host['name']].append('  vb.'
+                + provider_attributes['memory'] + ' = '
+                + str(host['memory']))
+    if ('cpus' in host):
+        devices[host['name']].append('  vb.'
+                + provider_attributes['cpus'] + ' = '
+                + str(host['cpus']))
+    if ('flavor' in host and host['flavor'] in flavors):
+        _print_flavor(host, flavors, provider_attributes, devices)
+
+def _need_provider(host, provider_attributes):
+    for attribute in provider_attributes:
+        if (attribute in host):
+            return True
+    return False
+
+def print_prov_attributes(host, flavors, provider_attributes, devices):
+    if (_need_provider(host, provider_attributes)):
+        devices[host['name']].append(
+                "device.vm.provider \"virtualbox\" do |vb|")
+        _add_params(host, flavors, provider_attributes, devices)     
+        devices[host['name']].append("end")
+    
diff --git a/name_mapping/flavors.yml b/name_mapping/flavors.yml
new file mode 100644
index 0000000000000000000000000000000000000000..55a4cebae68f2388eb40203ac99e1fed4c54b4bf
--- /dev/null
+++ b/name_mapping/flavors.yml
@@ -0,0 +1,40 @@
+csirtmu.tiny1x2:
+    cores: 1
+    memory: 2048
+    hd: 20480
+csirtmu.tiny1x4:
+    cores: 1
+    memory: 4096
+    hd: 20480
+csirtmu.small2x4:
+    cores: 2
+    memory: 4096
+    hd: 20480
+csirtmu.small2x8:
+    cores: 2
+    memory: 8192
+    hd: 40960
+csirtmu.medium4x8:
+    cores: 4
+    memory: 8192
+    hd: 40960
+csirtmu.medium4x16:
+    cores: 4
+    memory: 16384
+    hd: 40960
+csirtmu.large8x16:
+    cores: 8
+    memory: 16384
+    hd: 81920
+csirtmu.large8x32:
+    cores: 8
+    memory: 32768
+    hd: 81920
+csirtmu.jumbo16x32:
+    cores: 16
+    memory: 32768
+    hd: 102400
+csirtmu.jumbo16x64:
+    cores: 16
+    memory: 65536
+    hd: 102400
diff --git a/name_mapping/vagrant.yml b/name_mapping/mapping.yml
similarity index 97%
rename from name_mapping/vagrant.yml
rename to name_mapping/mapping.yml
index be0736478eb806c8c7473af1374b842997b23b35..95c4a0f16baf78f7097dba7743f36e2119aabac4 100644
--- a/name_mapping/vagrant.yml
+++ b/name_mapping/mapping.yml
@@ -60,7 +60,6 @@ boolean:
 other:
     box_url: vm.box_url
     guest: vm.guest
-    network: vm.network
     provider: vm.provider
     provision: vm.provision
     synced_folder: vm.synced_folder
@@ -74,4 +73,9 @@ other:
     vagrant_host: vagrant.host
     vagrant_plugins: vagrant.plugins
     vagrant_sensitive: vagrant.sensitive
+need_provider:
+    flavor: flavor
+    memory: memory
+    cpus: cpus
+    
 
diff --git a/test.yaml b/test.yaml
index 585a6430ea62b88aedd64e8848e74465d18061d3..6e01df1b064169fab832546caa3a26a832b9d3c7 100644
--- a/test.yaml
+++ b/test.yaml
@@ -4,6 +4,8 @@ name: small-sandbox
 hosts:
   - name: server
     base_box: ubuntu/bionic64
+    flavor: csirtmu.tiny1x4
+    cpus: 2
 
   - name: home
     base_box: ubuntu/bionic64