diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..fdb03d0
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,106 @@
+reclass (1.4.1-1tcp4) xenial; urgency=medium
+
+  * rebuild for xenial
+
+ -- Filip Pytloun <filip@pytloun.cz>  Thu, 09 Jun 2016 13:59:21 +0200
+
+reclass (1.4.1-1tcp3) trusty; urgency=medium
+
+  * backport UndefinedVariableError fix from master
+
+ -- Filip Pytloun <filip@pytloun.cz>  Fri, 16 Oct 2015 21:01:14 +0200
+
+reclass (1.4.1-1tcp2) trusty; urgency=medium
+
+  * make symlink to reclass-salt and reclass-ansible
+
+ -- Filip Pytloun <filip@pytloun.cz>  Tue, 13 Oct 2015 14:07:54 +0200
+
+reclass (1.4.1-1tcp1) trusty; urgency=medium
+
+  * trusty build
+
+ -- Filip Pytloun <filip@pytloun.cz>  Mon, 13 Jul 2015 10:19:47 +0200
+
+reclass (1.4.1-1) unstable; urgency=low
+
+  * New upstream release reverting the logging changes, which weren't ready
+    yet.
+
+ -- martin f. krafft <madduck@debian.org>  Tue, 28 Oct 2014 15:56:59 +0100
+
+reclass (1.4-1) unstable; urgency=low
+
+  * New upstream release (closes: #761952).
+  * Compliant with Debian Policy 3.9.6.
+
+ -- martin f. krafft <madduck@debian.org>  Sat, 25 Oct 2014 15:12:25 +0200
+
+reclass (1.3-2) UNRELEASED; urgency=medium
+
+  * Add myself as uploader.
+  * Update Vcs-Git and Vcs-Browser URLs.
+  * Improve long description of reclass-doc.
+  * Have python-reclass depend on python-pkg-resources.
+    Closes: bug#757423.
+
+ -- Jonas Smedegaard <dr@jones.dk>  Wed, 17 Sep 2014 10:17:04 +0200
+
+reclass (1.3-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- martin f. krafft <madduck@debian.org>  Sat, 01 Mar 2014 14:48:19 +0100
+
+reclass (1.2.2-1) unstable; urgency=medium
+
+  * New upstream release, fixing recursion of class mappings.
+  * Updated Standards-Version to 3.9.5; no changes required.
+
+ -- martin f. krafft <madduck@debian.org>  Fri, 27 Dec 2013 09:44:42 +1300
+
+reclass (1.2.1-1) unstable; urgency=low
+
+  * New upstream release, fixing the Salt adapter.
+
+ -- martin f. krafft <madduck@debian.org>  Thu, 26 Dec 2013 17:08:15 +1300
+
+reclass (1.2-1) unstable; urgency=low
+
+  * New upstream release, with the following major changes:
+    - class mappings
+    - parameter interpolation across lists
+    - classes caching
+    - yaml_fs: nodes may reside in subdirectories
+  * Remove dangling symlink from /usr/share/doc/reclass/html, add a note about
+    documentation in reclass-doc (and online) to README.Debian instead.
+
+ -- martin f. krafft <madduck@debian.org>  Wed, 28 Aug 2013 13:24:17 +0200
+
+reclass (1.1-1) unstable; urgency=low
+
+  * Add a build-dependency on python-yaml, thanks Jeroen Dekkers.
+  * Fix inter-package dependencies (use binary:Version instead of
+    source:Version), again thanks Jeroen Dekkers.
+  * Move reclass binary package into 'admin' section.
+
+ -- martin f. krafft <madduck@debian.org>  Wed, 28 Aug 2013 09:13:48 +0200
+
+reclass (1.0.2-1) unstable; urgency=low
+
+  * New upstream release (version number fix).
+  * Split Python module into python-reclass.
+
+ -- martin f. krafft <madduck@debian.org>  Tue, 27 Aug 2013 21:43:20 +0200
+
+reclass (1.0.1-1) unstable; urgency=low
+
+  * New upstream release (documentation updates only).
+
+ -- martin f. krafft <madduck@debian.org>  Tue, 27 Aug 2013 18:07:39 +0200
+
+reclass (1.0-1) unstable; urgency=low
+
+  * Initial release (closes: #720922).
+
+ -- martin f. krafft <madduck@debian.org>  Mon, 26 Aug 2013 10:52:31 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+8
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..ba284e8
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,71 @@
+Source: reclass
+Section: python
+Priority: extra
+Maintainer: tcpcloud Packaging Team <pkg-team@tcpcloud.eu>
+XSBC-Original-Maintainer: martin f. krafft <madduck@debian.org>
+Uploaders: Jonas Smedegaard <dr@jones.dk>
+Build-Depends: python-setuptools, python, debhelper (>= 8.9.7), python-sphinx, python-yaml
+Standards-Version: 3.9.6
+XS-Python-Version: all
+Homepage: http://reclass.pantsfullofunix.net/
+Vcs-Git: git://anonscm.debian.org/collab-maint/reclass.git
+Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/reclass.git?h=debian
+
+Package: reclass
+Architecture: all
+Section: admin
+Depends: python-reclass (= ${binary:Version}), ${misc:Depends}, ${python:Depends}
+Suggests: reclass-doc
+Description: hierarchical inventory backend for configuration management systems
+ reclass is an "external node classifier" (ENC) as can be used with automation
+ tools, such as Puppet, Salt, and Ansible. It is also a stand-alone tool for
+ merging data sources recursively.
+ .
+ The purpose of an ENC is to allow a system administrator to maintain an
+ inventory of nodes to be managed, completely separately from the configuration
+ of the automation tool. Usually, the external node classifier completely
+ replaces the tool-specific inventory (such as site.pp for Puppet,
+ ext_pillar/master_tops for Salt, or /etc/ansible/hosts).
+ .
+ reclass allows you to define your nodes through class inheritance, while
+ always able to override details further up the tree (i.e. in more specific
+ nodes). Think of classes as feature sets, as commonalities between nodes, or
+ as tags. Add to that the ability to nest classes (multiple inheritance is
+ allowed, well-defined, and encouraged), and piece together your infrastructure
+ from smaller bits, eliminating redundancy and exposing all important
+ parameters to a single location, logically organised.
+ .
+ This package provides the reclass CLI and adapters for Salt and Ansible.
+
+Package: python-reclass
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}, python-pkg-resources
+Description: hierarchical inventory backend for configuration management systems
+ reclass is an "external node classifier" (ENC) as can be used with automation
+ tools, such as Puppet, Salt, and Ansible. It is also a stand-alone tool for
+ merging data sources recursively.
+ .
+ The purpose of an ENC is to allow a system administrator to maintain an
+ inventory of nodes to be managed, completely separately from the configuration
+ of the automation tool. Usually, the external node classifier completely
+ replaces the tool-specific inventory (such as site.pp for Puppet,
+ ext_pillar/master_tops for Salt, or /etc/ansible/hosts).
+ .
+ reclass allows you to define your nodes through class inheritance, while
+ always able to override details further up the tree (i.e. in more specific
+ nodes). Think of classes as feature sets, as commonalities between nodes, or
+ as tags. Add to that the ability to nest classes (multiple inheritance is
+ allowed, well-defined, and encouraged), and piece together your infrastructure
+ from smaller bits, eliminating redundancy and exposing all important
+ parameters to a single location, logically organised.
+
+Package: reclass-doc
+Architecture: all
+Section: doc
+Depends: ${sphinxdoc:Depends}, ${misc:Depends}
+Description: reclass documentation
+ reclass is an "external node classifier" (ENC) as can be used with automation
+ tools, such as Puppet, Salt, and Ansible. It is also a stand-alone tool for
+ merging data sources recursively.
+ .
+ This package provides the documentation for reclass.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..a009446
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,189 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: reclass
+Source: https://github.com/madduck/reclass
+
+Files: *
+Copyright: 2007–2013 martin f. krafft <madduck@madduck.net>
+License: Artistic-2.0
+
+Files: debian/*
+Copyright: 2013 martin f. krafft <madduck@debian.org>
+License: Artistic-2.0
+
+License: Artistic-2.0
+ "The Artistic Licence 2.0"
+ Copyright (c) 2000-2006, The Perl Foundation.
+ http://www.perlfoundation.org/legal/licenses/artistic-2_0.html
+ .
+ Everyone is permitted to copy and distribute verbatim copies of this license
+ document, but changing it is not allowed.
+ .
+ Preamble
+ ~~~~~~~~
+ This license establishes the terms under which a given free software Package
+ may be copied, modified, distributed, and/or redistributed. The intent is that
+ the Copyright Holder maintains some artistic control over the development of
+ that Package while still keeping the Package available as open source and free
+ software.
+ .
+ You are always permitted to make arrangements wholly outside of this license
+ directly with the Copyright Holder of a given Package. If the terms of this
+ license do not permit the full use that you propose to make of the Package,
+ you should contact the Copyright Holder and seek a different licensing
+ arrangement.
+ .
+ Definitions
+ ~~~~~~~~~~~
+ "Copyright Holder" means the individual(s) or organization(s) named in the
+ copyright notice for the entire Package.
+ .
+ "Contributor" means any party that has contributed code or other material to
+ the Package, in accordance with the Copyright Holder's procedures.
+ .
+ "You" and "your" means any person who would like to copy, distribute, or
+ modify the Package.
+ .
+ "Package" means the collection of files distributed by the Copyright Holder,
+ and derivatives of that collection and/or of those files. A given Package may
+ consist of either the Standard Version, or a Modified Version.
+ .
+ "Distribute" means providing a copy of the Package or making it accessible to
+ anyone else, or in the case of a company or organization, to others outside of
+ your company or organization.
+ .
+ "Distributor Fee" means any fee that you charge for Distributing this Package
+ or providing support for this Package to another party. It does not mean
+ licensing fees.
+ .
+ "Standard Version" refers to the Package if it has not been modified, or has
+ been modified only in ways explicitly requested by the Copyright Holder.
+ .
+ "Modified Version" means the Package, if it has been changed, and such changes
+ were not explicitly requested by the Copyright Holder.
+ .
+ "Original License" means this Artistic License as Distributed with the
+ Standard Version of the Package, in its current version or as it may be
+ modified by The Perl Foundation in the future.
+ .
+ "Source" form means the source code, documentation source, and configuration
+ files for the Package.
+ .
+ "Compiled" form means the compiled bytecode, object code, binary, or any other
+ form resulting from mechanical transformation or translation of the Source
+ form.
+ .
+ Permission for Use and Modification Without Distribution
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (1) You are permitted to use the Standard Version and create and use Modified
+ Versions for any purpose without restriction, provided that you do not
+ Distribute the Modified Version.
+ .
+ Permissions for Redistribution of the Standard Version
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (2) You may Distribute verbatim copies of the Source form of the Standard
+ Version of this Package in any medium without restriction, either gratis or
+ for a Distributor Fee, provided that you duplicate all of the original
+ copyright notices and associated disclaimers. At your discretion, such
+ verbatim copies may or may not include a Compiled form of the Package.
+ .
+ (3) You may apply any bug fixes, portability changes, and other modifications
+ made available from the Copyright Holder. The resulting Package will still be
+ considered the Standard Version, and as such will be subject to the Original
+ License.
+ .
+ Distribution of Modified Versions of the Package as Source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (4) You may Distribute your Modified Version as Source (either gratis or for
+ a Distributor Fee, and with or without a Compiled form of the Modified
+ Version) provided that you clearly document how it differs from the Standard
+ Version, including, but not limited to, documenting any non-standard features,
+ executables, or modules, and provided that you do at least ONE of the
+ following:
+ .
+     (a) make the Modified Version available to the Copyright Holder of the
+         Standard Version, under the Original License, so that the Copyright
+         Holder may include your modifications in the Standard Version.
+     (b) ensure that installation of your Modified Version does not prevent the
+         user installing or running the Standard Version. In addition, the
+         Modified Version must bear a name that is different from the name of
+         the Standard Version.
+     (c) allow anyone who receives a copy of the Modified Version to make the
+         Source form of the Modified Version available to others under
+         (i) the Original License or
+         (ii) a license that permits the licensee to freely copy, modify and
+             redistribute the Modified Version using the same licensing terms
+             that apply to the copy that the licensee received, and requires
+             that the Source form of the Modified Version, and of any works
+             derived from it, be made freely available in that license fees
+             are prohibited but Distributor Fees are allowed.
+ .
+ Distribution of Compiled Forms of the Standard Version or Modified Versions
+ without the Source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (5) You may Distribute Compiled forms of the Standard Version without the
+ Source, provided that you include complete instructions on how to get the
+ Source of the Standard Version. Such instructions must be valid at the time of
+ your distribution. If these instructions, at any time while you are carrying
+ out such distribution, become invalid, you must provide new instructions on
+ demand or cease further distribution. If you provide valid instructions or
+ cease distribution within thirty days after you become aware that the
+ instructions are invalid, then you do not forfeit any of your rights under
+ this license.
+ .
+ (6) You may Distribute a Modified Version in Compiled form without the Source,
+ provided that you comply with Section 4 with respect to the Source of the
+ Modified Version.
+ .
+ Aggregating or Linking the Package
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (7) You may aggregate the Package (either the Standard Version or Modified
+ Version) with other packages and Distribute the resulting aggregation provided
+ that you do not charge a licensing fee for the Package. Distributor Fees are
+ permitted, and licensing fees for other components in the aggregation are
+ permitted. The terms of this license apply to the use and Distribution of the
+ Standard or Modified Versions as included in the aggregation.
+ .
+ (8) You are permitted to link Modified and Standard Versions with other works,
+ to embed the Package in a larger work of your own, or to build stand-alone
+ binary or bytecode versions of applications that include the Package, and
+ Distribute the result without restriction, provided the result does not expose
+ a direct interface to the Package.
+ .
+ Items That are Not Considered Part of a Modified Version
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ (9) Works (including, but not limited to, modules and scripts) that merely
+ extend or make use of the Package, do not, by themselves, cause the Package to
+ be a Modified Version. In addition, such works are not considered parts of the
+ Package itself, and are not subject to the terms of this license.
+ .
+ General Provisions
+ ~~~~~~~~~~~~~~~~~~
+ (10) Any use, modification, and distribution of the Standard or Modified
+ Versions is governed by this Artistic License. By using, modifying or
+ distributing the Package, you accept this license. Do not use, modify, or
+ distribute the Package, if you do not accept this license.
+ .
+ (11) If your Modified Version has been derived from a Modified Version made by
+ someone other than you, you are nevertheless required to ensure that your
+ Modified Version complies with the requirements of this license.
+ .
+ (12) This license does not grant you the right to use any trademark, service
+ mark, tradename, or logo of the Copyright Holder.
+ .
+ (13) This license includes the non-exclusive, worldwide, free-of-charge patent
+ license to make, have made, use, offer to sell, sell, import and otherwise
+ transfer the Package with respect to any patent claims licensable by the
+ Copyright Holder that are necessarily infringed by the Package. If you
+ institute patent litigation (including a cross-claim or counterclaim) against
+ any party alleging that the Package constitutes direct or contributory patent
+ infringement, then this Artistic License to you shall terminate on the date
+ that such litigation is filed.
+ .
+ (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER
+ AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW.
+ UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY
+ OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..b9eb5b0
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,4 @@
+[DEFAULT]
+upstream-branch = master
+debian-branch = debian/xenial
+upstream-tag = %(version)s
diff --git a/debian/patches/0001-Fix-UndefinedVariableError-which-had-uh-undefined-va.patch b/debian/patches/0001-Fix-UndefinedVariableError-which-had-uh-undefined-va.patch
new file mode 100644
index 0000000..5928029
--- /dev/null
+++ b/debian/patches/0001-Fix-UndefinedVariableError-which-had-uh-undefined-va.patch
@@ -0,0 +1,31 @@
+From fbd22d42a20a0fdd53bc42fd27ad9f3d6af70f80 Mon Sep 17 00:00:00 2001
+From: Michael Kuty <6du1ro.n@gmail.com>
+Date: Fri, 16 Oct 2015 18:10:18 +0200
+Subject: [PATCH 1/2] Fix UndefinedVariableError, which had, uh, undefined
+ variables
+
+Signed-off-by: martin f. krafft <madduck@madduck.net>
+---
+ reclass/errors.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/reclass/errors.py b/reclass/errors.py
+index 4da2bc3..ddb95fd 100644
+--- a/reclass/errors.py
++++ b/reclass/errors.py
+@@ -131,9 +131,11 @@ class UndefinedVariableError(InterpolationError):
+         super(UndefinedVariableError, self).__init__(msg=None)
+         self._var = var
+         self._context = context
++    var = property(lambda self: self._var)
++    context = property(lambda self: self._context)
+ 
+     def _get_message(self):
+-        msg = "Cannot resolve " + var.join(PARAMETER_INTERPOLATION_SENTINELS)
++        msg = "Cannot resolve " + self._var.join(PARAMETER_INTERPOLATION_SENTINELS)
+         if self._context:
+             msg += ' in the context of %s' % self._context
+         return msg
+-- 
+2.1.4
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..a932daa
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+0001-Fix-UndefinedVariableError-which-had-uh-undefined-va.patch
diff --git a/debian/python-reclass.install b/debian/python-reclass.install
new file mode 100644
index 0000000..06b4743
--- /dev/null
+++ b/debian/python-reclass.install
@@ -0,0 +1 @@
+usr/lib/python2.7/dist-packages/reclass*
diff --git a/debian/reclass-doc.docs b/debian/reclass-doc.docs
new file mode 100644
index 0000000..8137b04
--- /dev/null
+++ b/debian/reclass-doc.docs
@@ -0,0 +1 @@
+doc/build/html
diff --git a/debian/reclass.README.Debian b/debian/reclass.README.Debian
new file mode 100644
index 0000000..395d91c
--- /dev/null
+++ b/debian/reclass.README.Debian
@@ -0,0 +1,10 @@
+reclass for Debian
+==================
+
+The documentation for reclass is provided in the reclass-doc package. Once
+installed, please have a look at /usr/share/doc/reclass-doc/html/index.html.
+
+Alternatively, you may also view the documentation online at
+http://reclass.pantsfullofunix.net/
+
+ -- martin f. krafft <madduck@debian.org>  Wed, 28 Aug 2013 13:23:23 +0200
diff --git a/debian/reclass.dirs b/debian/reclass.dirs
new file mode 100644
index 0000000..8289f78
--- /dev/null
+++ b/debian/reclass.dirs
@@ -0,0 +1 @@
+usr/share/reclass
diff --git a/debian/reclass.docs b/debian/reclass.docs
new file mode 100644
index 0000000..a1320b1
--- /dev/null
+++ b/debian/reclass.docs
@@ -0,0 +1 @@
+README.rst
diff --git a/debian/reclass.examples b/debian/reclass.examples
new file mode 100644
index 0000000..e39721e
--- /dev/null
+++ b/debian/reclass.examples
@@ -0,0 +1 @@
+examples/*
diff --git a/debian/reclass.install b/debian/reclass.install
new file mode 100644
index 0000000..f600704
--- /dev/null
+++ b/debian/reclass.install
@@ -0,0 +1 @@
+usr/bin/reclass
diff --git a/debian/reclass.links b/debian/reclass.links
new file mode 100644
index 0000000..15282bd
--- /dev/null
+++ b/debian/reclass.links
@@ -0,0 +1,2 @@
+/usr/share/reclass/reclass-salt /usr/bin/reclass-salt
+/usr/share/reclass/reclass-ansible /usr/bin/reclass-ansible
diff --git a/debian/reclass.manpages b/debian/reclass.manpages
new file mode 100644
index 0000000..4afc6ec
--- /dev/null
+++ b/debian/reclass.manpages
@@ -0,0 +1 @@
+doc/build/man/reclass.1
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..de18930
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,27 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DH_BUILDSYSTEM_OPTION=--buildsystem=python_distutils
+DH_OPTIONS=--with python2,sphinxdoc $(DH_BUILDSYSTEM_OPTION)
+
+%:
+	dh $@ $(DH_OPTIONS)
+
+override_dh_sphinxdoc:
+	dh_sphinxdoc || :
+
+override_dh_auto_build:
+	PYTHONPATH=.. $(MAKE) -C doc man html
+
+override_dh_install:
+	dh_install
+	mv debian/tmp/usr/bin/reclass-* debian/reclass/usr/share/reclass
+
+override_dh_installchangelogs:
+	dh_installchangelogs doc/source/changelog.rst
+
+override_dh_clean:
+	dh_clean -O$(DH_BUILDSYSTEM_OPTION)
+	$(MAKE) docsclean
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..5e0de7b
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1 @@
+extend-diff-ignore = "^(\.coverage$|reclass\.egg-info)"
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..efc8ac1
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=3
+opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/reclass-$1\.tar\.gz/ \
+  https://github.com/madduck/reclass/tags .*/reclass-(\d\S*)\.tar\.gz
