diff --git a/modules/ansible_data_generator.py b/modules/ansible_data_generator.py
deleted file mode 100644
index 99e8ee4a09a865f35f17c7eb21135506d539e373..0000000000000000000000000000000000000000
--- a/modules/ansible_data_generator.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from modules.device_creator import open_file
-
-INTERFACE_FILE = "name_mapping/interface.yml"
-
-def create_network_map(definitions):
-    """ Creates a structure with network topology for Jinja2 template. """
-
-    routings = []
-
-    for router_mapping in definitions["router_mappings"]:
-        routing = dict()
-        routing["router_name"] = router_mapping["router"]
-        routing["router_network"] = router_mapping["network"]
-        routing["router_network_ip"] = _find_network_ip(router_mapping["network"], definitions)
-        routing["router_ip"] = router_mapping["ip"]
-        routings.append(routing)
-
-    return routings
-
-
-def _find_router_ip(network_name, router_mappings):
-    for router_mapping in router_mappings:
-        if router_mapping["network"] == network_name:
-            return router_mapping["ip"]
-
-def _find_network_ip(network_name, definitions):
-    for network in definitions["networks"]:
-        if network["name"] == network_name:
-            return network["cidr"]
-
-def _find_interface(host_name, hosts):
-
-    for host in hosts:
-        if host["name"] == host_name:
-            interfaces = open_file(INTERFACE_FILE)
-            if host["base_box"] in interfaces:
-                return interfaces[host["base_box"]]
-
-    return "eth1"
-
-
-def create_host_map(net_mappings, router_mappings, host_list):
-    """ Creates a structure with hosts and their primary routers ip """
-
-    hosts = []
-
-    for net_mapping in net_mappings:
-        host = dict()
-        host["host_name"] = net_mapping["host"]
-        host["host_ip"] = net_mapping["ip"]
-        host["router_ip"] = _find_router_ip(
-            net_mapping["network"], router_mappings)
-        host["interface"] = _find_interface(net_mapping["host"], host_list)
-        hosts.append(host)
-    return hosts
-
-def create_network_ips(networks):
-
-    network_ips = []
-    for network in networks:
-        if network["cidr"] not in network_ips:
-            network_ips.append(network["cidr"])
-
-    return network_ips
diff --git a/modules/attribute_formatter.py b/modules/attribute_formatter.py
deleted file mode 100644
index 4c6b6a128d7c2c0e0b6c55202294cbf470837f0d..0000000000000000000000000000000000000000
--- a/modules/attribute_formatter.py
+++ /dev/null
@@ -1,30 +0,0 @@
-""" This module handles the creation of simple vagrant commands from yaml
-attributes. """
-
-def _format_variable_name(key, variable_type, mappings):
-    """ Formats the variable to the required vagrantfile definition. """
-    return "device." + mappings[variable_type][key] + " = "
-
-
-def _format_and_add(key, value, mappings, device_definition):
-    """ Formats and adds the definition of a simple attribute. """
-
-    if key in mappings["string"]:
-        device_definition.append(
-            _format_variable_name(key, "string", mappings)
-            + '\"' + str(value) + '\"')
-    elif key in mappings["integer"]:
-        device_definition.append(
-            _format_variable_name(key, "integer", mappings)
-            + str(value))
-    elif key in mappings["boolean"]:
-        device_definition.append(
-            _format_variable_name(key, "boolean", mappings)
-            + str(value).lower())
-
-
-def add_simple_commands(device, mappings, device_definition):
-    """ Adds definitions of string, integer and boolean vagrant attributes. """
-
-    for key, value in device.items():
-        _format_and_add(key, value, mappings, device_definition)
diff --git a/modules/device_creator.py b/modules/device_creator.py
deleted file mode 100644
index 12f67b6064f2c9a0c621f1854ac0dc04bb40b170..0000000000000000000000000000000000000000
--- a/modules/device_creator.py
+++ /dev/null
@@ -1,84 +0,0 @@
-""" This package handles file import and creation of an input structure for
-Jinja2 """
-
-import yaml
-import sys
-
-from modules.attribute_formatter import add_simple_commands
-from modules.provider import add_prov_attributes, add_router_specification
-from modules.network_parser import add_networks, add_router_ip
-
-MAPPING_FILE = "name_mapping/mapping.yml"
-FLAVORS_FILE = "name_mapping/flavors.yml"
-
-
-def open_file(file_name):
-    """ Opens and returns a file from the argument. """
-    try:
-        input_file = open(str(file_name))
-        return yaml.safe_load(input_file)
-    except IOError:
-        print("Error: Cannot find a required file: " + str(file_name))
-        sys.exit(1)
-  
-def _add_provisioning(hostname, host_definitions):
-    """ Adds provisioning to the device if the file exists. """
-    try:
-        provision_file = open("provision/" + str(hostname) + ".yml")
-        host_definitions[hostname].append("device.vm.provision \"ansible\" do |ansible|")
-        host_definitions[hostname].append("  ansible.playbook = \"provision/" + hostname + ".yml\"")
-        host_definitions[hostname].append("end")
-    except IOError:
-        pass
-
-def _add_rsync(box, host_name, definitions):
-    """ add rsync to debian machines """
-
-    if box == "generic/debian10":
-        definitions[host_name].append("# standard shared folder doesn't work on debian")
-        definitions[host_name].append("device.vm.synced_folder \".\", \"/vagrant\", type: \"rsync\", rsync__exclude: \".git/\"")
-    
-    if box == "kalilinux/rolling-light":
-        definitions[host_name].append("device.ssh.password = \"vagrant\"")
-
-def _create_hosts(yml, mappings, flavors, ansible_local):
-    """ Creates a dictionary with formatted definition of each host. """
-    host_definitions = {}
-
-    for host in yml['hosts']:
-        host_definitions[host['name']] = []
-
-        add_simple_commands(host, mappings, host_definitions[host['name']])
-        add_networks(host["name"], yml, host_definitions)
-        add_prov_attributes(
-            host, flavors, mappings['need_provider'], host_definitions)
-        _add_provisioning(host["name"], host_definitions)
-        if ansible_local:
-            _add_rsync(host["base_box"], host["name"], host_definitions)
-
-    return host_definitions
-
-
-def _create_routers(yml, ansible_local):
-    """ Creates a dictionary with formatted definition of each router. """
-    router_definitions = {}
-
-    for router in yml['routers']:
-        router_definitions[router['name']] = []
-        add_router_ip(router["name"], yml, router_definitions)
-        add_router_specification(router, router_definitions, ansible_local)
-        if ansible_local:
-            _add_rsync("generic/debian10", router["name"], router_definitions)
-
-    return router_definitions
-
-
-def create_devices(definitions, ansible_local):
-    """ Returns a merged dictionary of host and router definitions. """
-
-    mappings = open_file(MAPPING_FILE)
-    flavors = open_file(FLAVORS_FILE)
-
-    return {
-        **_create_hosts(definitions, mappings, flavors, ansible_local),
-        **_create_routers(definitions, ansible_local)}
diff --git a/modules/file_generator.py b/modules/file_generator.py
deleted file mode 100644
index 087a0ccbc792be2f62a2efe84cf4f1f89b4c34ec..0000000000000000000000000000000000000000
--- a/modules/file_generator.py
+++ /dev/null
@@ -1,198 +0,0 @@
-import jinja2
-import os
-
-from modules.ansible_data_generator import create_network_map, create_host_map, create_network_ips
-
-def _load_template(template_name):
-    """ Returns a loaded jinja2 template. """
-
-    template_loader = jinja2.FileSystemLoader(searchpath="templates")
-    template_env = jinja2.Environment(loader=template_loader, trim_blocks=True)
-    return template_env.get_template(template_name)
-
-
-def _generate_file(filename, output_string):
-    """ Generates a file from output string. """
-
-    try:
-        new_file = open(filename, "w")
-        new_file.write(output_string)
-    except IOError:
-        print("Error: cannot write to this location.")
-
-
-def _create_role_directory(role_name, provisioning_dir):
-    """ Creates directory structure for a role. """
-
-    try:
-        os.mkdir(provisioning_dir)
-    except FileExistsError:
-        pass
-    try:
-        os.mkdir(provisioning_dir + "/roles")
-    except FileExistsError:
-        pass
-    try:
-        os.mkdir(provisioning_dir + "/roles/" + role_name)
-    except FileExistsError:
-        pass
-    try:
-        os.mkdir(provisioning_dir + "/roles/" + role_name +"/tasks")
-    except FileExistsError:
-        pass
-
-
-def _generate_playbook(definitions):
-    """ Generates the main playbook. """
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-    network = create_network_map(definitions)
-
-    template = _load_template("playbook")
-    output = template.render(hosts=host_map, routers=network)
-
-    try:
-        os.mkdir("provisioning")
-    except FileExistsError:
-        pass
-
-    _generate_file("./provisioning/playbook.yml", output)
-
-
-def _generate_device_configuration(definitions):
-    """ Generates a playbook with basic device configutarion. """
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-    network = create_network_map(definitions)
-    network_ips = create_network_ips(definitions["networks"])
-
-    template = _load_template("device_configuration")
-    output = template.render(hosts=host_map, routers=network, network_ips=network_ips, border_router_name = BORDER_ROUTER_NAME)
-
-    try:
-        os.mkdir("base_provisioning")
-    except FileExistsError:
-        pass
-
-    _generate_file("./base_provisioning/device_configuration.yml", output)
-
-
-def _generate_hosts_role(definitions):
-    """ Generates hosts role. """
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-
-    network = create_network_map(definitions)
-
-    template = _load_template("hosts")
-    output = template.render(hosts=host_map, routers=network)
-
-    _create_role_directory("hosts", "base_provisioning")
-    _generate_file("./base_provisioning/roles/hosts/tasks/main.yml", output)
-
-    user_template = _load_template("user_hosts")
-    user_output = template.render()
-
-    _create_role_directory("hosts", "provisioning")
-    _generate_file("./provisioning/roles/hosts/tasks/main.yml", output)
-
-
-def _generate_separate_hosts_role(definitions):
-    """ Generate roles for separate host devices. """
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-
-    for host in definitions["hosts"]:
-
-        for host_attributes in host_map:
-            if host_attributes["host_name"] == host["name"]:
-                host_name = host_attributes["host_name"]
-                router_ip = host_attributes["router_ip"]
-                interface = host_attributes["interface"]
-
-        template = _load_template("separate_hosts")
-        output = template.render(host_name=host_name, router_ip=router_ip, interface=interface)
-
-        _create_role_directory(host["name"], "base_provisioning")
-        _generate_file("./base_provisioning/roles/" + host["name"]  + "/tasks/main.yml", output)
-
-
-        template = _load_template("user_separate_hosts")
-        output = template.render(host_name=host_name)
-
-        _create_role_directory(host["name"], "provisioning")
-        _generate_file("./provisioning/roles/" + host["name"]  + "/tasks/main.yml", output)
-
-def _generate_routers_role(definitions):
-    """ Generates routers role. """
-
-    if not definitions['routers'] or not definitions['router_mappings']:
-        print("Info: No router definition was found. Skipping router creation.")
-        return
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-
-    network = create_network_map(definitions)
-
-    template = _load_template("routers")
-    output = template.render(hosts=host_map, routers=network, border_router_ip=BORDER_ROUTER_IP)
-
-    _create_role_directory("routers", "base_provisioning")
-    _generate_file("./base_provisioning/roles/routers/tasks/main.yml", output)
-
-
-def _find_cidr(network_name, definitions):
-    """ Finds cidr of a network from name. """
-
-    for network in definitions["networks"]:
-        if network["name"] == network_name:
-            return network["cidr"]
-
-def _get_br_routers(definitions):
-    """ Returns a list of router ips that are in the border router network. """
-
-    br_mappings = dict()
-    for router_mapping in definitions["router_mappings"]:
-        if router_mapping["network"] == BORDER_ROUTER_NETWORK_NAME:
-            for router_mapping2 in definitions["router_mappings"]:
-                if router_mapping["router"] == router_mapping2["router"] and router_mapping["network"] != router_mapping2["network"]:
-                    br_mappings[_find_cidr(router_mapping2["network"], definitions)] = router_mapping["ip"]
-
-    return br_mappings
-
-def _generate_br_role(definitions):
-    """ Generates br role. """
-
-    if not definitions['routers'] or not definitions['router_mappings']:
-        print("Info: No router definition was found. Skipping border router creation.")
-        return
-
-    network = create_network_map(definitions)
-
-    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
-
-    routers_in_br_network = _get_br_routers(definitions)
-
-    template = _load_template("br")
-    output = template.render(hosts = host_map, routers=network, br_routes=routers_in_br_network, border_router_name=BORDER_ROUTER_NAME, border_router_public_ip=BORDER_ROUTER_PUBLIC_IP)
-
-    _create_role_directory("br", "base_provisioning")
-    _generate_file("./base_provisioning/roles/br/tasks/main.yml", output)
-
-
-def generate_ansible_files(definitions, flags):
-    """
-    Generates ansible playbooks.
-
-    :param definitions: device definitions structure
-    :param flags: command line input flags
-    """
-
-    _generate_playbook(definitions)
-    _generate_device_configuration(definitions)
-    _generate_hosts_role(definitions)
-    _generate_separate_hosts_role(definitions)
-    _generate_routers_role(definitions)
-    _generate_br_role(definitions)
-
-    print("Info: Ansible files successfully created.")
diff --git a/modules/network_parser.py b/modules/network_parser.py
deleted file mode 100644
index 9e6693fa0bfac2fe4b2d8e753a29a2e74647c84e..0000000000000000000000000000000000000000
--- a/modules/network_parser.py
+++ /dev/null
@@ -1,83 +0,0 @@
-""" This module handles network creation. """
-
-import sys
-from conf.border_router import BORDER_ROUTER_NAME, BORDER_ROUTER_PUBLIC_IP
-
-
-def _find_networks(hostname, mappings, device_type):
-    """ Matches the device to networks. Returns a list of maiching networks. """
-    network_list = []
-
-    for mapping in mappings:
-        if device_type in ('host', 'router'):
-            if mapping[device_type] and mapping[device_type] == hostname:
-                network_list.append(mapping)
-
-    return network_list
-
-def _add_ip(hostname, mappings, device_type, definitions):
-    """ Adds a formatted ip address and network name to device definition. """
-
-    networks = _find_networks(hostname, mappings, device_type)
-
-    for network in networks:
-        if not network["ip"]:
-            print("Cannot find network mapping.")
-            sys.exit()
-
-        definitions[hostname].append(
-            "device.vm.network :private_network, ip: \""
-            + network["ip"] + '\", virtualbox__intnet: ' + network["network"])
-
-
-
-
-def _add_netmask(hostname, my_network, networks, definitions):
-    """ Adds netmask to the end of a formatted ip definition. """
-
-    for network in networks:
-        if network['name'] == my_network:
-            address, mask = network['cidr'].split('/')
-            definitions[hostname][-1] += (', netmask: \"' + mask + "\"")
-
-
-def _add_interfaces(hostname, mapping, device_type, networks, definitions):
-    """ Adds all network interfaces to a device. """
-
-    if not mapping["ip"]:
-        print("Cannot find network mapping.")
-        sys.exit()
-
-    definitions[hostname].append(
-        "device.vm.network :private_network, ip: \"" + mapping["ip"]
-        + "\", virtualbox__intnet: \"" + mapping["network"] + "\"")
-    
-    if hostname == BORDER_ROUTER_NAME:
-        definitions[BORDER_ROUTER_NAME].append("device.vm.network :public_network, ip: \" " + BORDER_ROUTER_PUBLIC_IP + "\"") 
-
-    _add_netmask(hostname, mapping["network"], networks, definitions)
-
-def add_networks(hostname, yml, definitions):
-    """ Adds ip address and natmask to a host. """
-
-    if not yml['net_mappings']:
-        return
-
-    for mapping in yml['net_mappings']:
-        if mapping['host'] == hostname:
-            _add_interfaces(
-                hostname, mapping,
-                'host', yml['networks'], definitions)
-
-
-def add_router_ip(routername, yml, definitions):
-    """ Adds ip address to a router. """
-
-    if not yml['router_mappings']:
-        return
-
-    for mapping in yml['router_mappings']:
-        if mapping['router'] == routername:
-            _add_interfaces(
-                routername, mapping,
-                'router', yml['networks'], definitions)
diff --git a/modules/provider.py b/modules/provider.py
deleted file mode 100644
index f3279ce8ef0d39b919ee58b1d5746b2d2e39b0a5..0000000000000000000000000000000000000000
--- a/modules/provider.py
+++ /dev/null
@@ -1,67 +0,0 @@
-""" This module handles VirtualBox attributes. """
-
-
-def _print_flavor(host, flavors, provider_attributes, definitions):
-    """ Formats and add a flavor for a device. """
-
-    if 'memory' not in host:
-        definitions[host['name']].append(
-            '  vb.' + provider_attributes['memory'] + ' = '
-            + str(flavors[host['flavor']]['memory']))
-    if 'cpus' not in host:
-        definitions[host['name']].append(
-            '  vb.' + provider_attributes['cpus'] + ' = '
-            + str(flavors[host['flavor']]['cores']))
-
-
-def _add_params(host, flavors, provider_attributes, definitions):
-    """ Formats and adds simple provision attributes. """
-
-    if 'memory' in host:
-        definitions[host['name']].append(
-            '  vb.' + provider_attributes['memory'] + ' = '
-            + str(host['memory']))
-    if 'cpus' in host:
-        definitions[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, definitions)
-
-
-def _need_provider(host, provider_attributes):
-    """ Checks if provision attributes are present. """
-
-    for attribute in provider_attributes:
-        if attribute in host:
-            return True
-    return False
-
-
-def add_prov_attributes(host, flavors, provider_attributes, definitions):
-    """ Adds provider attributes. """
-
-    if _need_provider(host, provider_attributes):
-        definitions[host['name']].append(
-            "device.vm.provider \"virtualbox\" do |vb|")
-        _add_params(host, flavors, provider_attributes, definitions)
-        definitions[host['name']].append("end")
-
-
-def add_router_specification(router, definitions, ansible_local):
-    """ Adds the default specification for a router. """
-
-    router_box = "generic/debian10"
-    router_memory = 256
-    router_cpus = 1
-
-    definitions[router['name']].append(
-        "device.vm.hostname = \"" + router['name'] + "\"")
-    definitions[router['name']].append(
-        "device.vm.box = \"" + router_box + "\"")
-    definitions[router['name']].append(
-        "device.vm.provider \"virtualbox\" do |vb|")
-    definitions[router['name']].append("  vb.memory = " + str(router_memory))
-    definitions[router['name']].append(
-        "  vb.cpus = " + str(router_cpus))
-    definitions[router['name']].append("end")