diff --git a/.gitignore b/.gitignore
index 6912fef..9421a45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
+builds/
 deps/
diff --git a/builds/VyOS-proxy/README.ex b/builds/VyOS-proxy/README.ex
deleted file mode 100644
index b6816b2..0000000
--- a/builds/VyOS-proxy/README.ex
+++ /dev/null
@@ -1,65 +0,0 @@
-# Overview
-
-Describe the intended usage of this charm and anything unique about how this
-charm relates to others here.
-
-This README will be displayed in the Charm Store, it should be either Markdown
-or RST. Ideal READMEs include instructions on how to use the charm, expected
-usage, and charm features that your audience might be interested in. For an
-example of a well written README check out Hadoop:
-http://jujucharms.com/charms/precise/hadoop
-
-Use this as a Markdown reference if you need help with the formatting of this
-README: http://askubuntu.com/editing-help
-
-This charm provides [service][]. Add a description here of what the service
-itself actually does.
-
-Also remember to check the [icon guidelines][] so that your charm looks good
-in the Juju GUI.
-
-# Usage
-
-Step by step instructions on using the charm:
-
-juju deploy servicename
-
-and so on. If you're providing a web service or something that the end user
-needs to go to, tell them here, especially if you're deploying a service that
-might listen to a non-default port.
-
-You can then browse to http://ip-address to configure the service.
-
-## Scale out Usage
-
-If the charm has any recommendations for running at scale, outline them in
-examples here. For example if you have a memcached relation that improves
-performance, mention it here.
-
-## Known Limitations and Issues
-
-This not only helps users but gives people a place to start if they want to help
-you add features to your charm.
-
-# Configuration
-
-The configuration options will be listed on the charm store, however If you're
-making assumptions or opinionated decisions in the charm (like setting a default
-administrator password), you should detail that here so the user knows how to
-change it immediately, etc.
-
-# Contact Information
-
-Though this will be listed in the charm store itself don't assume a user will
-know that, so include that information here:
-
-## Upstream Project Name
-
-  - Upstream website
-  - Upstream bug tracker
-  - Upstream mailing list or contact information
-  - Feel free to add things if it's useful for users
-
-
-[service]: http://example.com
-[icon guidelines]: https://jujucharms.com/docs/stable/authors-charm-icon
diff --git a/builds/VyOS-proxy/bin/layer_option b/builds/VyOS-proxy/bin/layer_option
deleted file mode 100755
index 90dc400..0000000
--- a/builds/VyOS-proxy/bin/layer_option
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python3
-
-import sys
-sys.path.append('lib')
-
-import argparse
-from charms.layer import options
-
-
-parser = argparse.ArgumentParser(description='Access layer options.')
-parser.add_argument('section',
-                    help='the section, or layer, the option is from')
-parser.add_argument('option',
-                    help='the option to access')
-
-args = parser.parse_args()
-value = options(args.section).get(args.option, '')
-if isinstance(value, bool):
-    sys.exit(0 if value else 1)
-elif isinstance(value, list):
-    for val in value:
-        print(val)
-else:
-    print(value)
diff --git a/builds/VyOS-proxy/hooks/config-changed b/builds/VyOS-proxy/hooks/config-changed
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/config-changed
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/hook.template b/builds/VyOS-proxy/hooks/hook.template
deleted file mode 100644
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/hook.template
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/install b/builds/VyOS-proxy/hooks/install
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/install
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/leader-elected b/builds/VyOS-proxy/hooks/leader-elected
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/leader-elected
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/leader-settings-changed b/builds/VyOS-proxy/hooks/leader-settings-changed
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/leader-settings-changed
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/start b/builds/VyOS-proxy/hooks/start
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/start
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/stop b/builds/VyOS-proxy/hooks/stop
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/stop
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/update-status b/builds/VyOS-proxy/hooks/update-status
deleted file mode 100755
index d36afe1..0000000
--- a/builds/VyOS-proxy/hooks/update-status
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import sys
-sys.path.append('lib')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/hooks/upgrade-charm b/builds/VyOS-proxy/hooks/upgrade-charm
deleted file mode 100755
index 1465e8e..0000000
--- a/builds/VyOS-proxy/hooks/upgrade-charm
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env python3
-
-# Load modules from $CHARM_DIR/lib
-import os
-import sys
-sys.path.append('lib')
-
-# This is an upgrade-charm context, make sure we install latest deps
-if not os.path.exists('wheelhouse/.upgrade'):
-    open('wheelhouse/.upgrade', 'w').close()
-    if os.path.exists('wheelhouse/.bootstrapped'):
-        os.unlink('wheelhouse/.bootstrapped')
-else:
-    os.unlink('wheelhouse/.upgrade')
-
-from charms.layer import basic
-basic.bootstrap_charm_deps()
-basic.init_config_states()
-
-
-# This will load and run the appropriate @hook and other decorated
-# handlers from $CHARM_DIR/reactive, $CHARM_DIR/hooks/reactive,
-# and $CHARM_DIR/hooks/relations.
-#
-# See https://jujucharms.com/docs/stable/authors-charm-building
-# for more information on this pattern.
-from charms.reactive import main
-main()
diff --git a/builds/VyOS-proxy/lib/charms/layer/__init__.py b/builds/VyOS-proxy/lib/charms/layer/__init__.py
deleted file mode 100644
index 33d37e9..0000000
--- a/builds/VyOS-proxy/lib/charms/layer/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import os
-
-
-class LayerOptions(dict):
-    def __init__(self, layer_file, section=None):
-        import yaml  # defer, might not be available until bootstrap
-        with open(layer_file) as f:
-            layer = yaml.safe_load(f.read())
-        opts = layer.get('options', {})
-        if section and section in opts:
-            super(LayerOptions, self).__init__(opts.get(section))
-        else:
-            super(LayerOptions, self).__init__(opts)
-
-
-def options(section=None, layer_file=None):
-    if not layer_file:
-        base_dir = os.environ.get('CHARM_DIR', os.getcwd())
-        layer_file = os.path.join(base_dir, 'layer.yaml')
-
-    return LayerOptions(layer_file, section)
diff --git a/builds/VyOS-proxy/lib/charms/layer/basic.py b/builds/VyOS-proxy/lib/charms/layer/basic.py
deleted file mode 100644
index 50bd625..0000000
--- a/builds/VyOS-proxy/lib/charms/layer/basic.py
+++ /dev/null
@@ -1,159 +0,0 @@
-import os
-import sys
-import shutil
-import platform
-from glob import glob
-from subprocess import check_call
-
-from charms.layer.execd import execd_preinstall
-
-
-def bootstrap_charm_deps():
-    """
-    Set up the base charm dependencies so that the reactive system can run.
-    """
-    # execd must happen first, before any attempt to install packages or
-    # access the network, because sites use this hook to do bespoke
-    # configuration and install secrets so the rest of this bootstrap
-    # and the charm itself can actually succeed. This call does nothing
-    # unless the operator has created and populated $CHARM_DIR/exec.d.
-    execd_preinstall()
-    # ensure that $CHARM_DIR/bin is on the path, for helper scripts
-    os.environ['PATH'] += ':%s' % os.path.join(os.environ['CHARM_DIR'], 'bin')
-    venv = os.path.abspath('../.venv')
-    vbin = os.path.join(venv, 'bin')
-    vpip = os.path.join(vbin, 'pip')
-    vpy = os.path.join(vbin, 'python')
-    if os.path.exists('wheelhouse/.bootstrapped'):
-        from charms import layer
-        cfg = layer.options('basic')
-        if cfg.get('use_venv') and '.venv' not in sys.executable:
-            # activate the venv
-            os.environ['PATH'] = ':'.join([vbin, os.environ['PATH']])
-            reload_interpreter(vpy)
-        return
-    # bootstrap wheelhouse
-    if os.path.exists('wheelhouse'):
-        with open('/root/.pydistutils.cfg', 'w') as fp:
-            # make sure that easy_install also only uses the wheelhouse
-            # (see https://github.com/pypa/pip/issues/410)
-            charm_dir = os.environ['CHARM_DIR']
-            fp.writelines([
-                "[easy_install]\n",
-                "allow_hosts = ''\n",
-                "find_links = file://{}/wheelhouse/\n".format(charm_dir),
-            ])
-        apt_install(['python3-pip', 'python3-setuptools', 'python3-yaml'])
-        from charms import layer
-        cfg = layer.options('basic')
-        # include packages defined in layer.yaml
-        apt_install(cfg.get('packages', []))
-        # if we're using a venv, set it up
-        if cfg.get('use_venv'):
-            if not os.path.exists(venv):
-                distname, version, series = platform.linux_distribution()
-                if series in ('precise', 'trusty'):
-                    apt_install(['python-virtualenv'])
-                else:
-                    apt_install(['virtualenv'])
-                cmd = ['virtualenv', '-ppython3', '--never-download', venv]
-                if cfg.get('include_system_packages'):
-                    cmd.append('--system-site-packages')
-                check_call(cmd)
-            os.environ['PATH'] = ':'.join([vbin, os.environ['PATH']])
-            pip = vpip
-        else:
-            pip = 'pip3'
-            # save a copy of system pip to prevent `pip3 install -U pip`
-            # from changing it
-            if os.path.exists('/usr/bin/pip'):
-                shutil.copy2('/usr/bin/pip', '/usr/bin/pip.save')
-        # need newer pip, to fix spurious Double Requirement error:
-        # https://github.com/pypa/pip/issues/56
-        check_call([pip, 'install', '-U', '--no-index', '-f', 'wheelhouse',
-                    'pip'])
-        # install the rest of the wheelhouse deps
-        check_call([pip, 'install', '-U', '--no-index', '-f', 'wheelhouse'] +
-                   glob('wheelhouse/*'))
-        if not cfg.get('use_venv'):
-            # restore system pip to prevent `pip3 install -U pip`
-            # from changing it
-            if os.path.exists('/usr/bin/pip.save'):
-                shutil.copy2('/usr/bin/pip.save', '/usr/bin/pip')
-                os.remove('/usr/bin/pip.save')
-        os.remove('/root/.pydistutils.cfg')
-        # flag us as having already bootstrapped so we don't do it again
-        open('wheelhouse/.bootstrapped', 'w').close()
-        # Ensure that the newly bootstrapped libs are available.
-        # Note: this only seems to be an issue with namespace packages.
-        # Non-namespace-package libs (e.g., charmhelpers) are available
-        # without having to reload the interpreter. :/
-        reload_interpreter(vpy if cfg.get('use_venv') else sys.argv[0])
-
-
-def reload_interpreter(python):
-    """
-    Reload the python interpreter to ensure that all deps are available.
-
-    Newly installed modules in namespace packages sometimes seemt to
-    not be picked up by Python 3.
-    """
-    os.execle(python, python, sys.argv[0], os.environ)
-
-
-def apt_install(packages):
-    """
-    Install apt packages.
-
-    This ensures a consistent set of options that are often missed but
-    should really be set.
-    """
-    if isinstance(packages, (str, bytes)):
-        packages = [packages]
-
-    env = os.environ.copy()
-
-    if 'DEBIAN_FRONTEND' not in env:
-        env['DEBIAN_FRONTEND'] = 'noninteractive'
-
-    cmd = ['apt-get',
-           '--option=Dpkg::Options::=--force-confold',
-           '--assume-yes',
-           'install']
-    check_call(cmd + packages, env=env)
-
-
-def init_config_states():
-    import yaml
-    from charmhelpers.core import hookenv
-    from charms.reactive import set_state
-    from charms.reactive import toggle_state
-    config = hookenv.config()
-    config_defaults = {}
-    config_defs = {}
-    config_yaml = os.path.join(hookenv.charm_dir(), 'config.yaml')
-    if os.path.exists(config_yaml):
-        with open(config_yaml) as fp:
-            config_defs = yaml.load(fp).get('options', {})
-            config_defaults = {key: value.get('default')
-                               for key, value in config_defs.items()}
-    for opt in config_defs.keys():
-        if config.changed(opt):
-            set_state('config.changed')
-            set_state('config.changed.{}'.format(opt))
-        toggle_state('config.set.{}'.format(opt), config.get(opt))
-        toggle_state('config.default.{}'.format(opt),
-                     config.get(opt) == config_defaults[opt])
-    hookenv.atexit(clear_config_states)
-
-
-def clear_config_states():
-    from charmhelpers.core import hookenv, unitdata
-    from charms.reactive import remove_state
-    config = hookenv.config()
-    remove_state('config.changed')
-    for opt in config.keys():
-        remove_state('config.changed.{}'.format(opt))
-        remove_state('config.set.{}'.format(opt))
-        remove_state('config.default.{}'.format(opt))
-    unitdata.kv().flush()
diff --git a/builds/VyOS-proxy/lib/charms/layer/execd.py b/builds/VyOS-proxy/lib/charms/layer/execd.py
deleted file mode 100644
index 30574190..0000000
--- a/builds/VyOS-proxy/lib/charms/layer/execd.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# Copyright 2014-2016 Canonical Limited.
-#
-# This file is part of layer-basic, the reactive base layer for Juju.
-#
-# charm-helpers is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3 as
-# published by the Free Software Foundation.
-#
-# charm-helpers is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with charm-helpers.  If not, see <http://www.gnu.org/licenses/>.
-
-# This module may only import from the Python standard library.
-import os
-import sys
-import subprocess
-import time
-
-'''
-execd/preinstall
-
-It is often necessary to configure and reconfigure machines
-after provisioning, but before attempting to run the charm.
-Common examples are specialized network configuration, enabling
-of custom hardware, non-standard disk partitioning and filesystems,
-adding secrets and keys required for using a secured network.
-
-The reactive framework's base layer invokes this mechanism as
-early as possible, before any network access is made or dependencies
-unpacked or non-standard modules imported (including the charms.reactive
-framework itself).
-
-Operators needing to use this functionality may branch a charm and
-create an exec.d directory in it. The exec.d directory in turn contains
-one or more subdirectories, each of which contains an executable called
-charm-pre-install and any other required resources. The charm-pre-install
-executables are run, and if successful, state saved so they will not be
-run again.
-
-    $CHARM_DIR/exec.d/mynamespace/charm-pre-install
-
-An alternative to branching a charm is to compose a new charm that contains
-the exec.d directory, using the original charm as a layer,
-
-A charm author could also abuse this mechanism to modify the charm
-environment in unusual ways, but for most purposes it is saner to use
-charmhelpers.core.hookenv.atstart().
-'''
-
-
-def default_execd_dir():
-    return os.path.join(os.environ['CHARM_DIR'], 'exec.d')
-
-
-def execd_module_paths(execd_dir=None):
-    """Generate a list of full paths to modules within execd_dir."""
-    if not execd_dir:
-        execd_dir = default_execd_dir()
-
-    if not os.path.exists(execd_dir):
-        return
-
-    for subpath in os.listdir(execd_dir):
-        module = os.path.join(execd_dir, subpath)
-        if os.path.isdir(module):
-            yield module
-
-
-def execd_submodule_paths(command, execd_dir=None):
-    """Generate a list of full paths to the specified command within exec_dir.
-    """
-    for module_path in execd_module_paths(execd_dir):
-        path = os.path.join(module_path, command)
-        if os.access(path, os.X_OK) and os.path.isfile(path):
-            yield path
-
-
-def execd_sentinel_path(submodule_path):
-    module_path = os.path.dirname(submodule_path)
-    execd_path = os.path.dirname(module_path)
-    module_name = os.path.basename(module_path)
-    submodule_name = os.path.basename(submodule_path)
-    return os.path.join(execd_path,
-                        '.{}_{}.done'.format(module_name, submodule_name))
-
-
-def execd_run(command, execd_dir=None, stop_on_error=True, stderr=None):
-    """Run command for each module within execd_dir which defines it."""
-    if stderr is None:
-        stderr = sys.stdout
-    for submodule_path in execd_submodule_paths(command, execd_dir):
-        # Only run each execd once. We cannot simply run them in the
-        # install hook, as potentially storage hooks are run before that.
-        # We cannot rely on them being idempotent.
-        sentinel = execd_sentinel_path(submodule_path)
-        if os.path.exists(sentinel):
-            continue
-
-        try:
-            subprocess.check_call([submodule_path], stderr=stderr,
-                                  universal_newlines=True)
-            with open(sentinel, 'w') as f:
-                f.write('{} ran successfully {}\n'.format(submodule_path,
-                                                          time.ctime()))
-                f.write('Removing this file will cause it to be run again\n')
-        except subprocess.CalledProcessError as e:
-            # Logs get the details. We can't use juju-log, as the
-            # output may be substantial and exceed command line
-            # length limits.
-            print("ERROR ({}) running {}".format(e.returncode, e.cmd),
-                  file=stderr)
-            print("STDOUT<<EOM", file=stderr)
-            print(e.output, file=stderr)
-            print("EOM", file=stderr)
-
-            # Unit workload status gets a shorter fail message.
-            short_path = os.path.relpath(submodule_path)
-            block_msg = "Error ({}) running {}".format(e.returncode,
-                                                       short_path)
-            try:
-                subprocess.check_call(['status-set', 'blocked', block_msg],
-                                      universal_newlines=True)
-                if stop_on_error:
-                    sys.exit(0)  # Leave unit in blocked state.
-            except Exception:
-                pass  # We care about the exec.d/* failure, not status-set.
-
-            if stop_on_error:
-                sys.exit(e.returncode or 1)  # Error state for pre-1.24 Juju
-
-
-def execd_preinstall(execd_dir=None):
-    """Run charm-pre-install for each module within execd_dir."""
-    execd_run('charm-pre-install', execd_dir=execd_dir)
diff --git a/builds/VyOS-proxy/wheelhouse/Jinja2-2.8.tar.gz b/builds/VyOS-proxy/wheelhouse/Jinja2-2.8.tar.gz
deleted file mode 100644
index 9c38426..0000000
--- a/builds/VyOS-proxy/wheelhouse/Jinja2-2.8.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/MarkupSafe-0.23.tar.gz b/builds/VyOS-proxy/wheelhouse/MarkupSafe-0.23.tar.gz
deleted file mode 100644
index 6b19006..0000000
--- a/builds/VyOS-proxy/wheelhouse/MarkupSafe-0.23.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/PyYAML-3.11.zip b/builds/VyOS-proxy/wheelhouse/PyYAML-3.11.zip
deleted file mode 100644
index c361e86..0000000
--- a/builds/VyOS-proxy/wheelhouse/PyYAML-3.11.zip
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/Tempita-0.5.2.tar.gz b/builds/VyOS-proxy/wheelhouse/Tempita-0.5.2.tar.gz
deleted file mode 100644
index 755befc..0000000
--- a/builds/VyOS-proxy/wheelhouse/Tempita-0.5.2.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/cffi-1.7.0.tar.gz b/builds/VyOS-proxy/wheelhouse/cffi-1.7.0.tar.gz
deleted file mode 100644
index 55da260..0000000
--- a/builds/VyOS-proxy/wheelhouse/cffi-1.7.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/charmhelpers-0.7.0.tar.gz b/builds/VyOS-proxy/wheelhouse/charmhelpers-0.7.0.tar.gz
deleted file mode 100644
index 93acb40..0000000
--- a/builds/VyOS-proxy/wheelhouse/charmhelpers-0.7.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/charms.reactive-0.4.4.tar.gz b/builds/VyOS-proxy/wheelhouse/charms.reactive-0.4.4.tar.gz
deleted file mode 100644
index 0912b6a..0000000
--- a/builds/VyOS-proxy/wheelhouse/charms.reactive-0.4.4.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/cryptography-1.4.tar.gz b/builds/VyOS-proxy/wheelhouse/cryptography-1.4.tar.gz
deleted file mode 100644
index e7dfece..0000000
--- a/builds/VyOS-proxy/wheelhouse/cryptography-1.4.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/idna-2.1.tar.gz b/builds/VyOS-proxy/wheelhouse/idna-2.1.tar.gz
deleted file mode 100644
index c028c71..0000000
--- a/builds/VyOS-proxy/wheelhouse/idna-2.1.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/netaddr-0.7.18.tar.gz b/builds/VyOS-proxy/wheelhouse/netaddr-0.7.18.tar.gz
deleted file mode 100644
index 0df6b47..0000000
--- a/builds/VyOS-proxy/wheelhouse/netaddr-0.7.18.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/paramiko-2.0.1.tar.gz b/builds/VyOS-proxy/wheelhouse/paramiko-2.0.1.tar.gz
deleted file mode 100644
index 6f2d318..0000000
--- a/builds/VyOS-proxy/wheelhouse/paramiko-2.0.1.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/pip-8.1.2.tar.gz b/builds/VyOS-proxy/wheelhouse/pip-8.1.2.tar.gz
deleted file mode 100644
index e7a1a3c..0000000
--- a/builds/VyOS-proxy/wheelhouse/pip-8.1.2.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/pyaml-15.8.2.tar.gz b/builds/VyOS-proxy/wheelhouse/pyaml-15.8.2.tar.gz
deleted file mode 100644
index 3c49aaf..0000000
--- a/builds/VyOS-proxy/wheelhouse/pyaml-15.8.2.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/pyasn1-0.1.9.tar.gz b/builds/VyOS-proxy/wheelhouse/pyasn1-0.1.9.tar.gz
deleted file mode 100644
index 1900b07..0000000
--- a/builds/VyOS-proxy/wheelhouse/pyasn1-0.1.9.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/pycparser-2.14.tar.gz b/builds/VyOS-proxy/wheelhouse/pycparser-2.14.tar.gz
deleted file mode 100644
index 6cdaab1..0000000
--- a/builds/VyOS-proxy/wheelhouse/pycparser-2.14.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/setuptools-23.1.0.zip b/builds/VyOS-proxy/wheelhouse/setuptools-23.1.0.zip
deleted file mode 100644
index 23e512a..0000000
--- a/builds/VyOS-proxy/wheelhouse/setuptools-23.1.0.zip
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/wheelhouse/six-1.10.0.tar.gz b/builds/VyOS-proxy/wheelhouse/six-1.10.0.tar.gz
deleted file mode 100644
index ac8eec5..0000000
--- a/builds/VyOS-proxy/wheelhouse/six-1.10.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/builds/VyOS-proxy/Makefile b/layers/vyos-proxy/Makefile
similarity index 100%
rename from builds/VyOS-proxy/Makefile
rename to layers/vyos-proxy/Makefile
diff --git a/builds/VyOS-proxy/README.md b/layers/vyos-proxy/README.md
similarity index 100%
rename from builds/VyOS-proxy/README.md
rename to layers/vyos-proxy/README.md
diff --git a/builds/VyOS-proxy/actions.yaml b/layers/vyos-proxy/actions.yaml
similarity index 100%
rename from builds/VyOS-proxy/actions.yaml
rename to layers/vyos-proxy/actions.yaml
diff --git a/builds/VyOS-proxy/actions/ping b/layers/vyos-proxy/actions/ping
similarity index 100%
rename from builds/VyOS-proxy/actions/ping
rename to layers/vyos-proxy/actions/ping
diff --git a/builds/VyOS-proxy/config.yaml b/layers/vyos-proxy/config.yaml
similarity index 100%
rename from builds/VyOS-proxy/config.yaml
rename to layers/vyos-proxy/config.yaml
diff --git a/builds/VyOS-proxy/copyright b/layers/vyos-proxy/copyright
similarity index 100%
rename from builds/VyOS-proxy/copyright
rename to layers/vyos-proxy/copyright
diff --git a/builds/VyOS-proxy/icon.svg b/layers/vyos-proxy/icon.svg
similarity index 100%
rename from builds/VyOS-proxy/icon.svg
rename to layers/vyos-proxy/icon.svg
diff --git a/builds/VyOS-proxy/layer.yaml b/layers/vyos-proxy/layer.yaml
similarity index 100%
rename from builds/VyOS-proxy/layer.yaml
rename to layers/vyos-proxy/layer.yaml
diff --git a/builds/VyOS-proxy/metadata.yaml b/layers/vyos-proxy/metadata.yaml
similarity index 100%
rename from builds/VyOS-proxy/metadata.yaml
rename to layers/vyos-proxy/metadata.yaml
diff --git a/builds/VyOS-proxy/reactive/__init__.py b/layers/vyos-proxy/reactive/__init__.py
similarity index 100%
rename from builds/VyOS-proxy/reactive/__init__.py
rename to layers/vyos-proxy/reactive/__init__.py
diff --git a/builds/VyOS-proxy/reactive/vyos_proxy.py b/layers/vyos-proxy/reactive/vyos_proxy.py
similarity index 100%
rename from builds/VyOS-proxy/reactive/vyos_proxy.py
rename to layers/vyos-proxy/reactive/vyos_proxy.py
diff --git a/builds/VyOS-proxy/requirements.txt b/layers/vyos-proxy/requirements.txt
similarity index 100%
rename from builds/VyOS-proxy/requirements.txt
rename to layers/vyos-proxy/requirements.txt
diff --git a/builds/VyOS-proxy/revision b/layers/vyos-proxy/revision
similarity index 100%
rename from builds/VyOS-proxy/revision
rename to layers/vyos-proxy/revision
diff --git a/builds/VyOS-proxy/tox.ini b/layers/vyos-proxy/tox.ini
similarity index 100%
rename from builds/VyOS-proxy/tox.ini
rename to layers/vyos-proxy/tox.ini
diff --git a/layers/vyos-proxy/wheelhouse.txt b/layers/vyos-proxy/wheelhouse.txt
new file mode 100644
index 0000000..24d2c9c
--- /dev/null
+++ b/layers/vyos-proxy/wheelhouse.txt
@@ -0,0 +1 @@
+paramiko==2.0.1
