diff --git a/debian/autoreconf b/debian/autoreconf
deleted file mode 100644
index 9a3a67f..0000000
--- a/debian/autoreconf
+++ /dev/null
@@ -1 +0,0 @@
-openbsc
diff --git a/debian/changelog b/debian/changelog
index e9a4212..28b5ebf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,75 +1,5 @@
-openbsc (0.15.1) UNRELEASED; urgency=medium
+osmo-bsc (0.1.0) UNRELEASED; urgency=low
 
-  * Move forward toward a new release.
-  * Prevent SGSN starting with 'auth-policy remote' when no 'gsup remote-*' are configured.
-    Note: such configs are broken without extra workarounds anyway.
+  * Initial release.
 
- -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Tue, 24 May 2016 23:14:31 +0200
-
-openbsc (0.14.0) unstable; urgency=low
-
-  * New upstream tag and additional patches.
-
- -- Holger Hans Peter Freyther <holger@freyther.de>  Sat, 14 Mar 2015 20:33:25 +0100
-
-openbsc (0.12.0+git26-7) unstable; urgency=low
-
-  * 64bit fix for the MGCP rewriting
-
- -- Holger Hans Peter Freyther <holger@freyther.de>  Wed, 07 Nov 2012 11:39:34 +0100
-
-openbsc (0.12.0+git26-6) precise; urgency=low
-
-  * Added init script for osmocom-sgsn. 
-
- -- Eric Butler <eric@codebutler.com>  Fri, 24 Aug 2012 21:04:32 -0700
-
-openbsc (0.12.0+git26-5) precise; urgency=low
-
-  * Don't enable MNCC sock by default.
-  * Automatically create important directories.
-  * Fix init script 'stop' command.
-
- -- Eric Butler <eric@codebutler.com>  Fri, 24 Aug 2012 20:56:33 -0700
-
-openbsc (0.12.0+git26-4) precise; urgency=low
-
-  * Specify HLR path and enable RTP proxy.
-
- -- Eric Butler <eric@codebutler.com>  Mon, 20 Aug 2012 00:21:07 -0700
-
-openbsc (0.12.0+git26-3) precise; urgency=low
-
-  * Fix init script.
-
- -- Eric Butler <eric@codebutler.com>  Sun, 19 Aug 2012 16:05:44 -0700
-
-openbsc (0.12.0+git26-2) precise; urgency=low
-
-  * Fix libdbi package dependency.
-
- -- Eric Butler <eric@codebutler.com>  Wed, 15 Aug 2012 00:35:37 -0700
-
-openbsc (0.12.0+git26-1) precise; urgency=low
-
-  * Fix version issue.
-
- -- Eric Butler <eric@codebutler.com>  Tue, 14 Aug 2012 21:00:51 -0700
-
-openbsc (0.12.0+git26) precise; urgency=low
-
-  * Updated ubuntu package.
-
- -- Eric Butler <eric@codebutler.com>  Tue, 14 Aug 2012 17:36:51 -0700
-
-openbsc (0.9.13.115.eb113-1) natty; urgency=low
-
-  * New upstream release
-
- -- Harald Welte <laforge@gnumonks.org>  Wed, 11 May 2011 18:41:24 +0000
-
-openbsc (0.9.4-1) unstable; urgency=low
-
-  * Initial release
-
- -- Harald Welte <laforge@gnumonks.org>  Tue, 24 Aug 2010 13:34:24 +0200
+ -- Alexander Couzens <lynxis@fe80.eu>  Tue, 08 Aug 2017 01:12:56 +0000
diff --git a/debian/control b/debian/control
index 87b6f07..e6e5724 100644
--- a/debian/control
+++ b/debian/control
@@ -1,181 +1,42 @@
-Source: openbsc
-Maintainer: Harald Welte <laforge@gnumonks.org>
+Source: osmo-bsc
 Section: net
-Priority: optional
-Build-Depends: debhelper (>= 9),
+Priority: extra
+Maintainer: Alexander Couzens <lynxis@fe80.eu>
+Build-Depends: debhelper (>=9),
+               dh-autoreconf,
                autotools-dev,
-               autoconf-archive,
+               autoconf,
+               automake,
+               libtool,
                pkg-config,
+               python-minimal,
+               libdbi-dev,
+               libssl-dev,
+               libsctp-dev,
+               libtalloc-dev,
+               libasn1c-dev,
+               libc-ares-dev,
                libgtp-dev,
                libosmocore-dev,
                libosmo-sccp-dev,
-               libdbi0-dev,
-               dh-autoreconf,
+               libosmo-ranap-dev,
                libosmo-abis-dev,
                libosmo-netif-dev,
-               libdbd-sqlite3,
-               libpcap-dev,
-               libssl-dev,
-               libc-ares-dev,
-               libsmpp34-dev
+               libosmo-legacy-mgcp-dev
 Standards-Version: 3.9.8
-Vcs-Git: git://bs11-abis.gnumonks.org/openbsc.git
-Vcs-Browser: http://openbsc.osmocom.org/trac/browser
-Homepage: https://projects.osmocom.org/projects/openbsc
+Vcs-Git: git://git.osmocom.org/osmo-bsc.git
+Vcs-Browser: https://git.osmocom.org/osmo-bsc/
+Homepage: https://projects.osmocom.org/projects/osmo-bsc
 
-Package: osmocom-bsc
+Package: osmo-bsc
 Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Description: GSM Base Station Controller
- This is the BSC-only version of OpenBSC. It requires a Mobile Switching Center
- (MSC) to operate.
- .
- You might rather prefer to use osmocom-nitb which is considered a
- "GSM Network-in-a-Box" and does not depend on a MSC.
+Multi-Arch: foreign
+Depends: ${misc:Depends}, ${shlibs:Depends}
+Description: OsmoBSC: Osmocom's Base Station Controller for 2G circuit-switched mobile networks
 
-Package: osmocom-nitb
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends},
-         libdbd-sqlite3
-Description: GSM Network-in-a-Box, implements BSC, MSC, SMSC, HLR, VLR
- This is the Network-in-a-Box version of OpenBSC. It has all the GSM network
- components bundled together. When using osmocom-nitb, there is no need for a
- Mobile Switching Center (MSC) which is needed when using osmocom-bsc.
-
-Package: osmocom-ipaccess-utils
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Description: Command line utilities for ip.access nanoBTS
- This package contains utilities that are specific for nanoBTS when being used
- together with OpenBSC. It contains mainly three tools: ipaccess-find,
- ipaccess-config and ipaccess-proxy.
-
-Package: osmocom-bs11-utils
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Description: Command line utilities for Siemens BS-11 BTS
- There is a tool in this package for configuring the Siemens BS-11 BTS.
- Additionally, it contains one tool for making use of an ISDN-card and the
- public telephone network as frequency standard for the E1 line.
-
-Package: osmocom-sgsn
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Suggests: osmocom-bsc
-Description: Osmocom Serving GPRS Support Node
- This is an implementation of the GPRS Serving GPRS Support Node (SGSN). As
- such it implements the GPRS Mobility Management (GMM) and SM (Session
- Management).
- .
- The SGSN connects via the Gb-interface to the BSS (like the osmo-pcu or an
- ip.access nanoBTS), and it connects via the GTP protocol to a Gateway GPRS
- Support Node (GGSN) like openggsn.
-
-Package: osmocom-gbproxy
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Recommends: osmocom-sgsn
-Description: Osmocom GPRS Gb Interface Proxy
- The purpose of the Gb proxy is to aggregate the Gb links of multiple
- BSS's and present them in one Gb link to the SGSN.
- .
- This package is part of OpenBSC and closely related to osmocom-sgsn.
-
-Package: osmocom-bsc-nat
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Recommends: osmocom-bsc
-Description: Osmocom Base Station Controller Network Address Translation
- This NAT is useful for masquerading multiple BSCs behind one. It listens
- for incoming BSCs on port 5000 and connects to a specified Mobile Switching
- Center (MSC).
- .
- This package is part of OpenBSC and closely related to osmocom-bsc.
-
-Package: openbsc-dev
-Architecture: all
-Depends: ${misc:Depends}
-Description: Header file needed by tools tightly integrated
- Some other programs depend on gsm_data_shared.h and gsm_data_shared.c
- from OpenBSC. This package installs these files to your file system so
- that the other packages can build-depend on this package.
- .
- The directory structure is copied after the structure in the repository
- and the header and .c file are installed into /usr/src/osmocom/openbsc/.
-
-Package: osmo-gtphub
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Osmocom GTP Hub
- Proxy for comms between multiple SGSNs and GGSNs.
-
-Package: osmocom-bsc-dbg
-Architecture: any
+Package: osmo-bsc-dbg
 Section: debug
-Priority: extra
-Depends: osmocom-bsc (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC BSC
- Make debugging possible
-
-Package: osmocom-nitb-dbg
 Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-nitb (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC NITB
- Make debugging possible
-
-Package: osmocom-ipaccess-utils-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-ipaccess-utils (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC ip.access utils
- Make debugging possible
-
-Package: osmocom-bs11-utils-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-bs11-utils (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC BS11 utils
- Make debugging possible
-
-Package: osmocom-sgsn-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-sgsn (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC Serving GPRS Support Node
- Make debugging possible
-
-Package: osmocom-gbproxy-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-gbproxy (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC GPRS GBProxy
- Make debugging possible
-
-Package: osmocom-bsc-nat-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmocom-bsc-nat (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for the OpenBSC Network Address Translation
- Make debugging possible
-
-Package: osmo-gtphub-dbg
-Architecture: any
-Section: debug
-Priority: extra
-Depends: osmo-gtphub (= ${binary:Version}), ${misc:Depends}
-Description: Debug symbols for Osmocom GTP Hub
- Make debugging possible
+Multi-Arch: same
+Depends: osmo-bsc (= ${binary:Version}), ${misc:Depends}
+Description: OsmoBSC: Osmocom's Base Station Controller for 2G circuit-switched mobile networks
diff --git a/debian/copyright b/debian/copyright
index 1e4dee1..c748589 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,74 +1,18 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: OpenBSC
-Source: http://openbsc.osmocom.org/
+Upstream-Name: osmo-bsc
+Source: git://git.osmocom.org/osmo-bsc
 
-Files: *
-Copyright: 2008-2015        Harald Welte <laforge@gnumonks.org>
-           2008-2015        Holger Hans Peter Freyther <zecke@selfish.org>
-           2009-2015        On-Waves
-           2008             Jan Luebbe <jluebbe@debian.org>
-           2008,2010-2011   Daniel Willmann <daniel@totalueberwachung.de>
-           2009,2011,2013   Andreas Eversberg <Andreas.Eversberg@versatel.de>
-           2009,2011        Dieter Spaar <spaar@mirider.augusta.de>
-           2009             Mike Haben <michael.haben@btinternet.com>
-           2010             Sylvain Munaut <246tnt@gmail.com>
-           2012-2013        Pablo Neira Ayuso <pablo@gnumonks.org>
-           2013-2015        Sysmocom s.f.m.c. GmbH  (Jacob Erlbeck)
-           2014             Alexander Chemeris <Alexander.Chemeris@fairwaves.co>
-License: AGPL-3+
-Comment: Contributions by Stefan Schmidt <stefan@datenfreihafen.org> as well
-
-Files: wireshark/0001-abis_oml.patch
-       wireshark/0002-ericsson_rbs2409.patch
-       wireshark/0003-lucent-hnb.patch
-       wireshark/0005-rsl-hsl.patch
-Copyright: 1998         Gerald Combs <gerald@wireshark.org>
-           2007,2011    Anders Broman <anders.broman@ericsson.com>
-           2009         Holger Hans Peter Freyther <zecke@selfish.org>
-           2009-2011    Harald Welte <laforge@gnumonks.org>
-License: GPL-2+
-
-Files: openbsc/include/mISDNif.h
-Copyright: 2008         Karsten Keil <kkeil@novell.com>
-License: LGPL-2.1
-
-Files: openbsc/src/libmgcp/g711common.h
-Copyright: 2009         Abramo Bagnara <abramo@alsa-project.org>
-License: GPL-2+
-
-Files: openbsc/git-version-gen
-Copyright: 2007-2010    Free Software Foundation
-License: GPL-3+
-
-Files: openbsc/osmoappdesc.py
-       openbsc/tests/smpp_test_runner.py
-       openbsc/tests/ctrl_test_runner.py
-       openbsc/tests/vty_test_runner.py
-Copyright: 2013         Katerina Barone-Adesi <kat.obsc@gmail.com>
-           2013         Jacob Erlbeck <jerlbeck@sysmocom.de>
-           2013-2014    Holger Hans Peter Freyther <zecke@selfish.org>
-License: GPL-3+
-
-Files: openbsc/src/libbsc/bsc_ctrl_lookup.c
-Copyright: 2010-2011    Daniel Willmann <daniel@totalueberwachung.de>
-           2010-2011    On-Waves
-License: GPL-2+
-
-Files: openbsc/src/libmsc/mncc_sock.c
-       openbsc/src/libmsc/mncc_builtin.c
-Copyright: 2008-2010    Harald Welte <laforge@gnumonks.org>
-           2009         Andreas Eversberg <Andreas.Eversberg@versatel.de>
-           2012         Holger Hans Peter Freyther <zecke@selfish.org>
-License: GPL-2+
-
-Files: debian/*
-Copyright: 2012-2015    Holger Hans Peter Freyther <zecke@selfish.org>
-           2016         Ruben Undheim <ruben.undheim@gmail.com>
-License: GPL-2+
-
-
-License: AGPL-3+
- This package is free software; you can redistribute it and/or modify
+Files:     *
+Copyright: 2008-2015 Holger Hans Peter Freyther <zecke@selfish.org>
+           2008-2016 Harald Welte <laforge@gnumonks.org>
+           2009-2015 On-Waves
+           2010-2011 Daniel Willmann <daniel@totalueberwachung.de>
+           2011-2017 sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+           2014-2015 Alexander Chemeris <Alexander.Chemeris@fairwaves.co>
+           2008 Jan Luebbe <jluebbe@debian.org>
+           2013 Andreas Eversberg <jolly@eversberg.eu>
+License:   AGPL-3.0+
+ This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as published by
  the Free Software Foundation; either version 3 of the License, or
  (at your option) any later version.
@@ -76,62 +20,129 @@
  This program 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 General Public License for more details.
+ GNU Affero General Public License for more details.
  .
  You should have received a copy of the GNU Affero General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-
-License: GPL-2+
- This package is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or (at
- your option) any later version.
+Files:     src/libbsc/bsc_ctrl_lookup.c
+           src/libbsc/pcu_sock.c
+Copyright: 2008-2010 Harald Welte <laforge@gnumonks.org>
+           2009-2012 Andreas Eversberg <jolly@eversberg.eu>
+           2010-2011 Daniel Willmann <daniel@totalueberwachung.de>
+           2010-2011 On-Waves
+           2012 Holger Hans Peter Freyther
+License:   GPL-2.0+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
  .
- This program 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 General Public License
- for more details.
- .
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
- .
- On Debian systems, the complete text of the GNU General Public
- License version 2 can be found in "/usr/share/common-licenses/GPL-2".
-
-
-License: GPL-3+
- This package is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or (at
- your option) any later version.
- .
- This program 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 General Public License
- for more details.
- .
- You should have received a copy of the GNU General Public License
- along with this program.  If not, see <http://www.gnu.org/licenses/>.
- .
- On Debian systems, the complete text of the GNU General Public
- License version 3 can be found in "/usr/share/common-licenses/GPL-3".
-
-
-License: LGPL-2.1
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; version
- 2.1 of the License.
- .
- This library is distributed in the hope that it will be useful,
+ This program 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.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
  .
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  .
- On Debian systems, the complete text of the GNU Lesser General
- Public License version 2.1 can be found in
- "/usr/share/common-licenses/LGPL-2.1".
+ On Debian systems, the complete text of the GNU General Public License
+ Version 2 can be found in `/usr/share/common-licenses/GPL-2'.
+
+Files:     osmoappdesc.py
+Copyright: 2013 Katerina Barone-Adesi <kat.obsc@gmail.com>
+License:   GPL-3.0+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program 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 General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>
+ .
+ Most systems won't be able to use these, so they're separated out
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ Version 3 can be found in `/usr/share/common-licenses/GPL-3'.
+
+Files:     tests/vty_test_runner.py
+Copyright: 2013 Holger Hans Peter Freyther
+           2013 Katerina Barone-Adesi <kat.obsc@gmail.com>
+License:   GPL-3.0+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program 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 General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ Version 3 can be found in `/usr/share/common-licenses/GPL-3'.
+
+Files:     include/mISDNif.h
+Copyright: 2008 Karsten Keil <kkeil@novell.com>
+License:   LGPL-2.1
+ This code is free software; you can redistribute it and/or modify
+ it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
+ version 2.1 as published by the Free Software Foundation.
+ .
+ This code 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.
+ .
+ On Debian systems, the complete text of the GNU Lesser General Public License
+ Version 2.1 can be found in `/usr/share/common-licenses/LGPL-2.1'.
+
+Files:     include/openbsc/bsc_msc_data.h
+Copyright: 2010-2015 Holger Hans Peter Freyther <zecke@selfish.org>
+           2010-2015 On-Waves
+License:   AGPL-3.0+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program 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 Affero General Public License for more details.
+ .
+ You should have received a copy of the GNU Affero General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ NOTE: This is about a *remote* MSC for OsmoBSC and is not part of libmsc.
+
+Files:     src/libbsc/bts_nokia_site.c
+Copyright: 2011 Dieter Spaar <spaar@mirider.augusta.de>
+License:   AGPL-3.0+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program 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 Affero General Public License for more details.
+ .
+ You should have received a copy of the GNU Affero General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ TODO: Attention: There are some static variables used for states during
+ configuration. Those variables have to be moved to a BTS specific context,
+ otherwise there will most certainly be problems if more than one Nokia BTS
+ is used.
+
diff --git a/debian/docs b/debian/docs
deleted file mode 100644
index cd545c2..0000000
--- a/debian/docs
+++ /dev/null
@@ -1 +0,0 @@
-openbsc/README
diff --git a/debian/openbsc-dev.install b/debian/openbsc-dev.install
deleted file mode 100644
index 0c05545..0000000
--- a/debian/openbsc-dev.install
+++ /dev/null
@@ -1,4 +0,0 @@
-openbsc/include/openbsc/gsm_data_shared.h usr/src/osmocom/openbsc/openbsc/include/openbsc/
-openbsc/include/openbsc/common_cs.h usr/src/osmocom/openbsc/openbsc/include/openbsc/
-openbsc/src/libcommon/gsm_data_shared.c usr/src/osmocom/openbsc/openbsc/src/libcommon/
-usr/lib/*/pkgconfig/openbsc.pc
diff --git a/debian/osmo-bsc.install b/debian/osmo-bsc.install
new file mode 100644
index 0000000..85e2103
--- /dev/null
+++ b/debian/osmo-bsc.install
@@ -0,0 +1,2 @@
+usr/bin
+usr/share/doc/openbsc/examples/osmo-bsc
diff --git a/debian/osmo-gtphub.default b/debian/osmo-gtphub.default
deleted file mode 100644
index 6af82da..0000000
--- a/debian/osmo-gtphub.default
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_FILE="/etc/osmocom/osmo-gtphub.cfg"
-
diff --git a/debian/osmo-gtphub.examples b/debian/osmo-gtphub.examples
deleted file mode 100644
index 48c2dc0..0000000
--- a/debian/osmo-gtphub.examples
+++ /dev/null
@@ -1 +0,0 @@
-openbsc/doc/examples/osmo-gtphub
diff --git a/debian/osmo-gtphub.init b/debian/osmo-gtphub.init
deleted file mode 100755
index 160d55b..0000000
--- a/debian/osmo-gtphub.init
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          osmo-gtphub
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Osmocom GTP hub
-# Description:       Osmocom GTP hub
-### END INIT INFO
-
-# Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-NAME=osmo-gtphub                         # Introduce the short server's name here
-DESC="Osmocom GTP hub"                   # Introduce a short description here
-DAEMON=/usr/bin/osmo-gtphub              # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/osmo-gtphub
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/osmo-gtphub ] && . /etc/default/osmo-gtphub
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-DAEMON_ARGS="$DAEMON_ARGS -D -c $CONFIG_FILE"
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-	# Return
-	#   0 if daemon has been started
-	#   1 if daemon was already running
-	#   2 if daemon could not be started
-	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
-		|| return 1
-	start-stop-daemon --start --quiet --exec $DAEMON -- \
-		$DAEMON_ARGS \
-		|| return 2
-	# Add code here, if necessary, that waits for the process to be ready
-	# to handle requests from services started subsequently which depend
-	# on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-	# Return
-	#   0 if daemon has been stopped
-	#   1 if daemon was already stopped
-	#   2 if daemon could not be stopped
-	#   other if a failure occurred
-	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
-	RETVAL="$?"
-	[ "$RETVAL" = 2 ] && return 2
-	# Wait for children to finish too if this is a daemon that forks
-	# and if the daemon is only ever run from this initscript.
-	# If the above conditions are not satisfied then add some other code
-	# that waits for the process to drop all resources that could be
-	# needed by services started subsequently.  A last resort is to
-	# sleep for some time.
-	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-	[ "$?" = 2 ] && return 2
-	return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-	#
-	# If the daemon can reload its configuration without
-	# restarting (for example, when it is sent a SIGHUP),
-	# then implement that here.
-	#
-	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
-	return 0
-}
-
-case "$1" in
-  start)
-    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
-    do_start
-    case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-  ;;
-  stop)
-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-	do_stop
-	case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-	;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-	#
-	# If do_reload() is not implemented then leave this commented out
-	# and leave 'force-reload' as an alias for 'restart'.
-	#
-	#log_daemon_msg "Reloading $DESC" "$NAME"
-	#do_reload
-	#log_end_msg $?
-	#;;
-  restart|force-reload)
-	#
-	# If the "reload" option is implemented then remove the
-	# 'force-reload' alias
-	#
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-		# Failed to stop
-		log_end_msg 1
-		;;
-	esac
-	;;
-  *)
-	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-	exit 3
-	;;
-esac
-
-:
diff --git a/debian/osmo-gtphub.install b/debian/osmo-gtphub.install
deleted file mode 100644
index 908c1a5..0000000
--- a/debian/osmo-gtphub.install
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/osmo-gtphub
diff --git a/debian/osmocom-bs11-utils.install b/debian/osmocom-bs11-utils.install
deleted file mode 100644
index 757a854..0000000
--- a/debian/osmocom-bs11-utils.install
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/bin/bs11_config
-/usr/bin/isdnsync
diff --git a/debian/osmocom-bsc-nat.init b/debian/osmocom-bsc-nat.init
deleted file mode 100755
index 984a7ce..0000000
--- a/debian/osmocom-bsc-nat.init
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          osmocom-bsc-nat
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Osmocom GSM network-in-a-box
-# Description:       A minimal implementation of the GSM Base Station Controller,
-#                    Mobile Switching Center, Home Location regster and all other
-#                    components to run a self-contained GSM network.
-### END INIT INFO
-
-# Author: Harald Welte <laforge@gnumonks.org>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-NAME=osmo-bsc_nat                      # Introduce the short server's name here
-DESC="Osmocom GSM BSC Multiplexer (NAT)" # Introduce a short description here
-DAEMON=/usr/bin/osmo-bsc_nat           # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/osmocom-bsc-nat
-CONFIG_FILE=/etc/osmocom/osmocom-bsc-nat.cfg
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/osmocom-bsc-nat ] && . /etc/default/osmocom-bsc-nat
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-DAEMON_ARGS="-D -c $CONFIG_FILE"
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-	# Return
-	#   0 if daemon has been started
-	#   1 if daemon was already running
-	#   2 if daemon could not be started
-	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
-		|| return 1
-	start-stop-daemon --start --quiet --exec $DAEMON -- \
-		$DAEMON_ARGS \
-		|| return 2
-	# Add code here, if necessary, that waits for the process to be ready
-	# to handle requests from services started subsequently which depend
-	# on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-	# Return
-	#   0 if daemon has been stopped
-	#   1 if daemon was already stopped
-	#   2 if daemon could not be stopped
-	#   other if a failure occurred
-	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
-	RETVAL="$?"
-	[ "$RETVAL" = 2 ] && return 2
-	# Wait for children to finish too if this is a daemon that forks
-	# and if the daemon is only ever run from this initscript.
-	# If the above conditions are not satisfied then add some other code
-	# that waits for the process to drop all resources that could be
-	# needed by services started subsequently.  A last resort is to
-	# sleep for some time.
-	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-	[ "$?" = 2 ] && return 2
-	return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-	#
-	# If the daemon can reload its configuration without
-	# restarting (for example, when it is sent a SIGHUP),
-	# then implement that here.
-	#
-	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
-	return 0
-}
-
-case "$1" in
-  start)
-    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
-    do_start
-    case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-  ;;
-  stop)
-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-	do_stop
-	case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-	;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-	#
-	# If do_reload() is not implemented then leave this commented out
-	# and leave 'force-reload' as an alias for 'restart'.
-	#
-	#log_daemon_msg "Reloading $DESC" "$NAME"
-	#do_reload
-	#log_end_msg $?
-	#;;
-  restart|force-reload)
-	#
-	# If the "reload" option is implemented then remove the
-	# 'force-reload' alias
-	#
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-	  	# Failed to stop
-		log_end_msg 1
-		;;
-	esac
-	;;
-  *)
-	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-	exit 3
-	;;
-esac
-
-:
diff --git a/debian/osmocom-bsc-nat.install b/debian/osmocom-bsc-nat.install
deleted file mode 100644
index b561a7e..0000000
--- a/debian/osmocom-bsc-nat.install
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/osmo-bsc_nat
diff --git a/debian/osmocom-bsc.examples b/debian/osmocom-bsc.examples
deleted file mode 100644
index a95f12b..0000000
--- a/debian/osmocom-bsc.examples
+++ /dev/null
@@ -1 +0,0 @@
-openbsc/doc/examples/osmo-bsc_mgcp
diff --git a/debian/osmocom-bsc.install b/debian/osmocom-bsc.install
deleted file mode 100644
index ab9459e..0000000
--- a/debian/osmocom-bsc.install
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/bin/osmo-bsc_mgcp
-/usr/bin/osmo-bsc
diff --git a/debian/osmocom-gbproxy.init b/debian/osmocom-gbproxy.init
deleted file mode 100755
index 924f32d..0000000
--- a/debian/osmocom-gbproxy.init
+++ /dev/null
@@ -1,151 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          osmo-gbproxy
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Osmocom GBproxy
-# Description:       A tool to proxy the GPRS Gb interface.
-### END INIT INFO
-
-# Author: Harald Welte <laforge@gnumonks.org>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-NAME=osmo-gbproxy                      # Introduce the short server's name here
-DESC="Osmocom GBProxy" # Introduce a short description here
-DAEMON=/usr/bin/osmo-gbproxy           # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/osmocom-gbproxy
-CONFIG_FILE=/etc/osmocom/osmocom-gbproxy.cfg
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/osmocom-gbproxy ] && . /etc/default/osmocom-gbproxy
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-DAEMON_ARGS="-D -c $CONFIG_FILE"
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-	# Return
-	#   0 if daemon has been started
-	#   1 if daemon was already running
-	#   2 if daemon could not be started
-	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
-		|| return 1
-	start-stop-daemon --start --quiet --exec $DAEMON -- \
-		$DAEMON_ARGS \
-		|| return 2
-	# Add code here, if necessary, that waits for the process to be ready
-	# to handle requests from services started subsequently which depend
-	# on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-	# Return
-	#   0 if daemon has been stopped
-	#   1 if daemon was already stopped
-	#   2 if daemon could not be stopped
-	#   other if a failure occurred
-	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
-	RETVAL="$?"
-	[ "$RETVAL" = 2 ] && return 2
-	# Wait for children to finish too if this is a daemon that forks
-	# and if the daemon is only ever run from this initscript.
-	# If the above conditions are not satisfied then add some other code
-	# that waits for the process to drop all resources that could be
-	# needed by services started subsequently.  A last resort is to
-	# sleep for some time.
-	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-	[ "$?" = 2 ] && return 2
-	return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-	#
-	# If the daemon can reload its configuration without
-	# restarting (for example, when it is sent a SIGHUP),
-	# then implement that here.
-	#
-	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
-	return 0
-}
-
-case "$1" in
-  start)
-    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
-    do_start
-    case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-  ;;
-  stop)
-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-	do_stop
-	case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-	;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-	#
-	# If do_reload() is not implemented then leave this commented out
-	# and leave 'force-reload' as an alias for 'restart'.
-	#
-	#log_daemon_msg "Reloading $DESC" "$NAME"
-	#do_reload
-	#log_end_msg $?
-	#;;
-  restart|force-reload)
-	#
-	# If the "reload" option is implemented then remove the
-	# 'force-reload' alias
-	#
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-	  	# Failed to stop
-		log_end_msg 1
-		;;
-	esac
-	;;
-  *)
-	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-	exit 3
-	;;
-esac
-
-:
diff --git a/debian/osmocom-gbproxy.install b/debian/osmocom-gbproxy.install
deleted file mode 100644
index ba3f6ee..0000000
--- a/debian/osmocom-gbproxy.install
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/osmo-gbproxy
diff --git a/debian/osmocom-ipaccess-utils.install b/debian/osmocom-ipaccess-utils.install
deleted file mode 100644
index de13c18..0000000
--- a/debian/osmocom-ipaccess-utils.install
+++ /dev/null
@@ -1,3 +0,0 @@
-/usr/bin/ipaccess-config
-/usr/bin/abisip-find
-/usr/bin/ipaccess-proxy
diff --git a/debian/osmocom-nitb.default b/debian/osmocom-nitb.default
deleted file mode 100644
index ef76a5f..0000000
--- a/debian/osmocom-nitb.default
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_FILE="/etc/osmocom/osmo-nitb.cfg"
-HLR_FILE="/var/lib/osmocom/hlr.sqlite3"
-
-DAEMON_ARGS="-P"
-
-# Uncomment if using LCR+Asterisk
-# DAEMON_ARGS="-m -P"
-
diff --git a/debian/osmocom-nitb.dirs b/debian/osmocom-nitb.dirs
deleted file mode 100644
index efbca2b..0000000
--- a/debian/osmocom-nitb.dirs
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/osmocom
-/var/log/osmocom
-/var/lib/osmocom
diff --git a/debian/osmocom-nitb.examples b/debian/osmocom-nitb.examples
deleted file mode 100644
index c098d5c..0000000
--- a/debian/osmocom-nitb.examples
+++ /dev/null
@@ -1 +0,0 @@
-openbsc/doc/examples/osmo-nitb
diff --git a/debian/osmocom-nitb.init b/debian/osmocom-nitb.init
deleted file mode 100755
index 0747446..0000000
--- a/debian/osmocom-nitb.init
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          osmo-nitb
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Osmocom GSM network-in-a-box
-# Description:       A minimal implementation of the GSM Base Station Controller,
-#                    Mobile Switching Center, Home Location regster and all other
-#                    components to run a self-contained GSM network.
-### END INIT INFO
-
-# Author: Harald Welte <laforge@gnumonks.org>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-NAME=osmo-nitb                      # Introduce the short server's name here
-DESC="Osmocom GSM Network-in-a-Box" # Introduce a short description here
-DAEMON=/usr/bin/osmo-nitb           # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/osmocom-nitb
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/osmocom-nitb ] && . /etc/default/osmocom-nitb
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-DAEMON_ARGS="$DAEMON_ARGS -D -c $CONFIG_FILE -l $HLR_FILE"
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-	# Return
-	#   0 if daemon has been started
-	#   1 if daemon was already running
-	#   2 if daemon could not be started
-	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
-		|| return 1
-	start-stop-daemon --start --quiet --exec $DAEMON -- \
-		$DAEMON_ARGS \
-		|| return 2
-	# Add code here, if necessary, that waits for the process to be ready
-	# to handle requests from services started subsequently which depend
-	# on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-	# Return
-	#   0 if daemon has been stopped
-	#   1 if daemon was already stopped
-	#   2 if daemon could not be stopped
-	#   other if a failure occurred
-	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
-	RETVAL="$?"
-	[ "$RETVAL" = 2 ] && return 2
-	# Wait for children to finish too if this is a daemon that forks
-	# and if the daemon is only ever run from this initscript.
-	# If the above conditions are not satisfied then add some other code
-	# that waits for the process to drop all resources that could be
-	# needed by services started subsequently.  A last resort is to
-	# sleep for some time.
-	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-	[ "$?" = 2 ] && return 2
-	return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-	#
-	# If the daemon can reload its configuration without
-	# restarting (for example, when it is sent a SIGHUP),
-	# then implement that here.
-	#
-	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
-	return 0
-}
-
-case "$1" in
-  start)
-    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
-    do_start
-    case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-  ;;
-  stop)
-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-	do_stop
-	case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-	;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-	#
-	# If do_reload() is not implemented then leave this commented out
-	# and leave 'force-reload' as an alias for 'restart'.
-	#
-	#log_daemon_msg "Reloading $DESC" "$NAME"
-	#do_reload
-	#log_end_msg $?
-	#;;
-  restart|force-reload)
-	#
-	# If the "reload" option is implemented then remove the
-	# 'force-reload' alias
-	#
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-	  	# Failed to stop
-		log_end_msg 1
-		;;
-	esac
-	;;
-  *)
-	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-	exit 3
-	;;
-esac
-
-:
diff --git a/debian/osmocom-nitb.install b/debian/osmocom-nitb.install
deleted file mode 100644
index 26caf71..0000000
--- a/debian/osmocom-nitb.install
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/bin/osmo-nitb
-openbsc/contrib/*.py usr/bin/
\ No newline at end of file
diff --git a/debian/osmocom-sgsn.default b/debian/osmocom-sgsn.default
deleted file mode 100644
index 77c9679..0000000
--- a/debian/osmocom-sgsn.default
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_FILE="/etc/osmocom/osmo-sgsn.cfg"
-
diff --git a/debian/osmocom-sgsn.examples b/debian/osmocom-sgsn.examples
deleted file mode 100644
index 15de78d..0000000
--- a/debian/osmocom-sgsn.examples
+++ /dev/null
@@ -1 +0,0 @@
-openbsc/doc/examples/osmo-sgsn
diff --git a/debian/osmocom-sgsn.init b/debian/osmocom-sgsn.init
deleted file mode 100755
index 0794dc1..0000000
--- a/debian/osmocom-sgsn.init
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          osmo-sgsn
-# Required-Start:    $network $local_fs
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Osmocom Serving GPRS Support Node
-# Description:       Osmocom Serving GPRS Support Node
-### END INIT INFO
-
-# Author: Harald Welte <laforge@gnumonks.org>
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-NAME=osmo-sgsn                           # Introduce the short server's name here
-DESC="Osmocom Serving GPRS Support Node" # Introduce a short description here
-DAEMON=/usr/bin/osmo-sgsn                # Introduce the server's location here
-SCRIPTNAME=/etc/init.d/osmocom-sgsn
-
-# Exit if the package is not installed
-[ -x $DAEMON ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/osmocom-sgsn ] && . /etc/default/osmocom-sgsn
-
-# Load the VERBOSE setting and other rcS variables
-. /lib/init/vars.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
-. /lib/lsb/init-functions
-
-DAEMON_ARGS="$DAEMON_ARGS -D -c $CONFIG_FILE"
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-	# Return
-	#   0 if daemon has been started
-	#   1 if daemon was already running
-	#   2 if daemon could not be started
-	start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null \
-		|| return 1
-	start-stop-daemon --start --quiet --exec $DAEMON -- \
-		$DAEMON_ARGS \
-		|| return 2
-	# Add code here, if necessary, that waits for the process to be ready
-	# to handle requests from services started subsequently which depend
-	# on this one.  As a last resort, sleep for some time.
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-	# Return
-	#   0 if daemon has been stopped
-	#   1 if daemon was already stopped
-	#   2 if daemon could not be stopped
-	#   other if a failure occurred
-	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME
-	RETVAL="$?"
-	[ "$RETVAL" = 2 ] && return 2
-	# Wait for children to finish too if this is a daemon that forks
-	# and if the daemon is only ever run from this initscript.
-	# If the above conditions are not satisfied then add some other code
-	# that waits for the process to drop all resources that could be
-	# needed by services started subsequently.  A last resort is to
-	# sleep for some time.
-	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
-	[ "$?" = 2 ] && return 2
-	return "$RETVAL"
-}
-
-#
-# Function that sends a SIGHUP to the daemon/service
-#
-do_reload() {
-	#
-	# If the daemon can reload its configuration without
-	# restarting (for example, when it is sent a SIGHUP),
-	# then implement that here.
-	#
-	start-stop-daemon --stop --signal 1 --quiet $PIDFILE --name $NAME
-	return 0
-}
-
-case "$1" in
-  start)
-    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
-    do_start
-    case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-  ;;
-  stop)
-	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
-	do_stop
-	case "$?" in
-		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
-	esac
-	;;
-  status)
-       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
-       ;;
-  #reload|force-reload)
-	#
-	# If do_reload() is not implemented then leave this commented out
-	# and leave 'force-reload' as an alias for 'restart'.
-	#
-	#log_daemon_msg "Reloading $DESC" "$NAME"
-	#do_reload
-	#log_end_msg $?
-	#;;
-  restart|force-reload)
-	#
-	# If the "reload" option is implemented then remove the
-	# 'force-reload' alias
-	#
-	log_daemon_msg "Restarting $DESC" "$NAME"
-	do_stop
-	case "$?" in
-	  0|1)
-		do_start
-		case "$?" in
-			0) log_end_msg 0 ;;
-			1) log_end_msg 1 ;; # Old process is still running
-			*) log_end_msg 1 ;; # Failed to start
-		esac
-		;;
-	  *)
-	  	# Failed to stop
-		log_end_msg 1
-		;;
-	esac
-	;;
-  *)
-	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-	exit 3
-	;;
-esac
-
-:
diff --git a/debian/osmocom-sgsn.install b/debian/osmocom-sgsn.install
deleted file mode 100644
index d89c456..0000000
--- a/debian/osmocom-sgsn.install
+++ /dev/null
@@ -1 +0,0 @@
-/usr/bin/osmo-sgsn
diff --git a/debian/rules b/debian/rules
index 4e187a6..72a7d18 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,32 +1,57 @@
 #!/usr/bin/make -f
+# You must remove unused comment lines for the released package.
+# See debhelper(7) (uncomment to enable)
+# This is an autogenerated template for debian/rules.
+#
+# Output every command that modifies files on the build system.
+#export DH_VERBOSE = 1
+#
+# Copy some variable definitions from pkg-info.mk and vendor.mk
+# under /usr/share/dpkg/ to here if they are useful.
+#
+# See FEATURE AREAS/ENVIRONMENT in dpkg-buildflags(1)
+# Apply all hardening options
+#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+# Package maintainers to append CFLAGS
+#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
+# Package maintainers to append LDFLAGS
+#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+#
+# With debhelper version 9 or newer, the dh command exports
+# all buildflags.  So there is no need to include the
+# /usr/share/dpkg/buildflags.mk file here if compat is 9 or newer.
+#
+# These are rarely used code. (START)
+#
+# The following include for *.mk magically sets miscellaneous
+# variables while honoring existing values of pertinent
+# environment variables:
+#
+# Architecture-related variables such as DEB_TARGET_MULTIARCH:
+#include /usr/share/dpkg/architecture.mk
+# Vendor-related variables such as DEB_VENDOR:
+#include /usr/share/dpkg/vendor.mk
+# Package-related variables such as DEB_DISTRIBUTION
+#include /usr/share/dpkg/pkg-info.mk
+#
+# You may alternatively set them susing a simple script such as:
+# DEB_VENDOR ?= $(shell dpkg-vendor --query  Vendor)
+#
+# These are rarely used code. (END)
+#
 
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-DEBIAN  := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2)
-DEBVERS := $(shell echo '$(DEBIAN)' | cut -d- -f1)
-VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g')
-
-export DEB_BUILD_MAINT_OPTIONS = hardening=+all
-
+# main packaging script based on dh7 syntax
 %:
-	dh $@ --sourcedirectory=openbsc --with autoreconf
+	dh $@ --with autoreconf 
 
-# This is needed for debian stable (squeeze)
-override_dh_autoreconf:
-	cd openbsc && autoreconf --install --force
-
-override_dh_strip:
-	dh_strip -posmocom-bsc --dbg-package=osmocom-bsc-dbg
-	dh_strip -posmocom-nitb --dbg-package=osmocom-nitb-dbg
-	dh_strip -posmocom-ipaccess-utils --dbg-package=osmocom-ipaccess-utils-dbg
-	dh_strip -posmocom-bs11-utils --dbg-package=osmocom-bs11-utils-dbg
-	dh_strip -posmocom-sgsn --dbg-package=osmocom-sgsn-dbg
-	dh_strip -posmocom-gbproxy --dbg-package=osmocom-gbproxy-dbg
-	dh_strip -posmocom-bsc-nat --dbg-package=osmocom-bsc-nat-dbg
-	dh_strip -posmo-gtphub --dbg-package=osmo-gtphub-dbg
-
+CONFIGURE_FLAGS += --enable-osmo-bsc
 override_dh_auto_configure:
-	echo $(VERSION) > openbsc/.tarball-version
-	dh_auto_configure --sourcedirectory=openbsc -- --enable-nat --enable-osmo-bsc --enable-smpp
+	dh_auto_configure -- $(CONFIGURE_FLAGS)
+#
+# Do not install libtool archive, python .pyc .pyo
+#override_dh_install:
+#	dh_install --list-missing -X.la -X.pyc -X.pyo
 
+# See https://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-dbg
+override_dh_strip:
+	dh_strip --dbg-package=osmo-bsc-dbg
