diff --git a/configure.ac b/configure.ac
index 80f50e8..5482b8c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script
-AC_INIT([openbsc],
+AC_INIT([osmo-mgw],
 	m4_esyscmd([./git-version-gen .tarball-version]),
 	[openbsc@lists.osmocom.org])
 
@@ -41,41 +41,7 @@
 
 PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.9.5)
 PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.3.0)
-PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl)
-PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 0.9.5)
-PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.2.0)
-PKG_CHECK_MODULES(LIBOSMOGB, libosmogb >= 0.6.4)
 PKG_CHECK_MODULES(LIBOSMONETIF, libosmo-netif >= 0.0.1)
-PKG_CHECK_MODULES(LIBOSMOSIGTRAN, libosmo-sigtran) # TODO version?
-PKG_CHECK_MODULES(LIBCRYPTO, libcrypto >= 0.9.5)
-
-# Enabke/disable the NAT?
-AC_ARG_ENABLE([nat], [AS_HELP_STRING([--enable-nat], [Build the BSC NAT. Requires SCCP])],
-    [osmo_ac_build_nat="$enableval"],[osmo_ac_build_nat="no"])
-if test "$osmo_ac_build_nat" = "yes" ; then
-        PKG_CHECK_MODULES(LIBOSMOSCCP, libosmo-sccp >= 0.0.2)
-fi
-AM_CONDITIONAL(BUILD_NAT, test "x$osmo_ac_build_nat" = "xyes")
-AC_SUBST(osmo_ac_build_nat)
-
-# Enable/disable the BSC?
-AC_ARG_ENABLE([osmo-bsc], [AS_HELP_STRING([--enable-osmo-bsc], [Build the Osmo BSC])],
-    [osmo_ac_build_bsc="$enableval"],[osmo_ac_build_bsc="no"])
-if test "$osmo_ac_build_bsc" = "yes" ; then
-    PKG_CHECK_MODULES(LIBOSMOSCCP, libosmo-sccp >= 0.0.6)
-fi
-AM_CONDITIONAL(BUILD_BSC, test "x$osmo_ac_build_bsc" = "xyes")
-AC_SUBST(osmo_ac_build_bsc)
-
-# Enable/disable smpp support in the msc?
-AC_ARG_ENABLE([smpp], [AS_HELP_STRING([--enable-smpp], [Build the SMPP interface])],
-    [osmo_ac_build_smpp="$enableval"],[osmo_ac_build_smpp="no"])
-if test "$osmo_ac_build_smpp" = "yes" ; then
-    PKG_CHECK_MODULES(LIBSMPP34, libsmpp34 >= 1.12)
-    AC_DEFINE(BUILD_SMPP, 1, [Define if we want to build SMPP])
-fi
-AM_CONDITIONAL(BUILD_SMPP, test "x$osmo_ac_build_smpp" = "xyes")
-AC_SUBST(osmo_ac_build_smpp)
 
 # Enable/disable transcoding within osmo-bsc_mgcp?
 AC_ARG_ENABLE([mgcp-transcoding], [AS_HELP_STRING([--enable-mgcp-transcoding], [Build the MGCP gateway with internal transcoding enabled.])],
@@ -93,52 +59,6 @@
 AM_CONDITIONAL(BUILD_MGCP_TRANSCODING, test "x$osmo_ac_mgcp_transcoding" = "xyes")
 AC_SUBST(osmo_ac_mgcp_transcoding)
 
-# Enable/disable 3G aka IuPS + IuCS support?
-AC_ARG_ENABLE([iu], [AS_HELP_STRING([--enable-iu], [Build 3G support, aka IuPS and IuCS interfaces])],
-    [osmo_ac_iu="$enableval"],[osmo_ac_iu="no"])
-if test "x$osmo_ac_iu" = "xyes" ; then
-    PKG_CHECK_MODULES(LIBASN1C, libasn1c) # TODO version?
-    PKG_CHECK_MODULES(LIBOSMORANAP, libosmo-ranap) # TODO version?
-    AC_DEFINE(BUILD_IU, 1, [Define if we want to build IuPS and IuCS interfaces support])
-fi
-AM_CONDITIONAL(BUILD_IU, test "x$osmo_ac_iu" = "xyes")
-AC_SUBST(osmo_ac_iu)
-
-
-found_libgtp=yes
-PKG_CHECK_MODULES(LIBGTP, libgtp >= 0.92, , found_libgtp=no)
-AM_CONDITIONAL(HAVE_LIBGTP, test "$found_libgtp" = yes)
-AC_SUBST(found_libgtp)
-
-found_libcares=yes
-PKG_CHECK_MODULES([LIBCARES], [libcares], [], [found_libcares=no])
-AM_CONDITIONAL(HAVE_LIBCARES, test "$found_libcares" = yes)
-AC_SUBST(found_libcares)
-
-found_libgtp_and_libcares=no
-if test "$found_libgtp" = "yes" -a "$found_libcares" = "yes"; then
-    found_libgtp_and_libcares=yes
-fi
-AC_SUBST(found_libgtp_and_libcares)
-
-dnl checks for header files
-AC_HEADER_STDC
-AC_CHECK_HEADERS(dbi/dbd.h,,AC_MSG_ERROR(DBI library is not installed))
-
-found_pcap=yes
-AC_CHECK_HEADERS(pcap/pcap.h,,found_pcap=no)
-AM_CONDITIONAL(HAVE_PCAP, test "$found_pcap" = yes)
-
-found_cdk=yes
-AC_CHECK_HEADERS(cdk/cdk.h,,found_cdk=no)
-AM_CONDITIONAL(HAVE_LIBCDK, test "$found_cdk" = yes)
-
-found_sqlite3=yes
-PKG_CHECK_MODULES(SQLITE3, sqlite3, ,found_sqlite3=no)
-AM_CONDITIONAL(HAVE_SQLITE3, test "$found_sqlite3" = yes)
-AC_SUBST(found_sqlite3)
-
-
 dnl Checks for typedefs, structures and compiler characteristics
 
 # The following test is taken from WebKit's webkit.m4
@@ -173,31 +93,6 @@
    AC_SUBST([COVERAGE_LDFLAGS])
 fi
 
-AC_DEFUN([CHECK_TM_INCLUDES_TM_GMTOFF], [
-  AC_CACHE_CHECK(
-    [whether struct tm has tm_gmtoff member],
-    osmo_cv_tm_includes_tm_gmtoff,
-    [AC_LINK_IFELSE([
-      AC_LANG_PROGRAM([
-        #include <time.h>
-      ], [
-        time_t t = time(NULL);
-        struct tm* lt = localtime(&t);
-        int off = lt->tm_gmtoff;
-      ])
-    ],
-    osmo_cv_tm_includes_tm_gmtoff=yes,
-    osmo_cv_tm_includes_tm_gmtoff=no
-    )]
-  )
-  if test "x$osmo_cv_tm_includes_tm_gmtoff" = xyes; then
-    AC_DEFINE(HAVE_TM_GMTOFF_IN_TM, 1,
-              [Define if struct tm has tm_gmtoff member.])
-  fi
-])
-
-CHECK_TM_INCLUDES_TM_GMTOFF
-
 AC_ARG_ENABLE([vty_tests],
 		AC_HELP_STRING([--enable-vty-tests],
 				[Include the VTY/CTRL tests in make check (deprecated)
@@ -222,49 +117,16 @@
 AM_CONFIG_HEADER(bscconfig.h)
 
 AC_OUTPUT(
-    openbsc.pc
-    include/openbsc/Makefile
+    libosmo-legacy-mgcp.pc
     include/Makefile
+    include/osmocom/Makefile
+    include/osmocom/legacy_mgcp/Makefile
     src/Makefile
-    src/libtrau/Makefile
-    src/libbsc/Makefile
-    src/libmsc/Makefile
-    src/libvlr/Makefile
-    src/libmgcp/Makefile
-    src/libcommon/Makefile
-    src/libfilter/Makefile
-    src/libcommon-cs/Makefile
-    src/osmo-msc/Makefile
-    src/osmo-bsc/Makefile
-    src/osmo-bsc_nat/Makefile
+    src/libosmo-legacy-mgcp/Makefile
     src/osmo-bsc_mgcp/Makefile
-    src/ipaccess/Makefile
-    src/utils/Makefile
-    src/gprs/Makefile
     tests/Makefile
     tests/atlocal
-    tests/gsm0408/Makefile
-    tests/channel/Makefile
-    tests/bsc/Makefile
-    tests/bsc-nat/Makefile
-    tests/bsc-nat-trie/Makefile
-    tests/mgcp/Makefile
-    tests/gprs/Makefile
-    tests/gbproxy/Makefile
-    tests/abis/Makefile
-    tests/smpp/Makefile
-    tests/trau/Makefile
-    tests/sgsn/Makefile
-    tests/subscr/Makefile
-    tests/oap/Makefile
-    tests/gtphub/Makefile
-    tests/xid/Makefile
-    tests/sndcp_xid/Makefile
-    tests/slhc/Makefile
-    tests/v42bis/Makefile
-    tests/nanobts_omlattr/Makefile
-    tests/sms_queue/Makefile
-    tests/msc_vlr/Makefile
+    tests/legacy_mgcp/Makefile
     doc/Makefile
     doc/examples/Makefile
     contrib/Makefile
