ifneq (,$(filter libcoap,$(USEPKG)))
  USEMODULE += pnet
endif

ifneq (,$(filter pnet,$(USEMODULE)))
  USEMODULE += posix
  USEMODULE += socket_base
  USEMODULE += net_help
endif

ifneq (,$(filter transport_layer,$(USEMODULE)))
  USEMODULE += tcp
  USEMODULE += udp
endif

ifneq (,$(filter udp,$(USEMODULE)))
  USEMODULE += socket_base
endif

ifneq (,$(filter tcp,$(USEMODULE)))
  USEMODULE += socket_base
endif

ifneq (,$(filter socket_base,$(USEMODULE)))
  USEMODULE += sixlowpan
  USEMODULE += net_help
  USEMODULE += vtimer
endif

ifneq (,$(filter sixlowborder,$(USEMODULE)))
  USEMODULE += sixlowpan
endif

ifneq (,$(filter rpl,$(USEMODULE)))
  USEMODULE += trickle
  USEMODULE += routing
endif

ifneq (,$(filter routing,$(USEMODULE)))
  USEMODULE += sixlowpan
endif

ifneq (,$(filter sixlowpan,$(USEMODULE)))
  USEMODULE += ieee802154
  USEMODULE += net_help
  USEMODULE += net_if
  USEMODULE += posix
  USEMODULE += vtimer
endif

ifneq (,$(filter ng_sixlowpan_ctx,$(USEMODULE)))
  USEMODULE += ng_ipv6_addr
  USEMODULE += vtimer
endif

ifneq (,$(filter ng_icmpv6,$(USEMODULE)))
  USEMODULE += ng_ipv6
endif

ifneq (,$(filter ng_ipv6_hdr,$(USEMODULE)))
  USEMODULE += ng_inet_csum
  USEMODULE += ng_pktbuf
endif

ifneq (,$(filter ng_ipv6_router,$(USEMODULE)))
  USEMODULE += ng_ipv6
endif

ifneq (,$(filter ng_ipv6,$(USEMODULE)))
  USEMODULE += ng_icmpv6
  USEMODULE += ng_inet_csum
  USEMODULE += ng_ipv6_addr
  USEMODULE += ng_ipv6_hdr
  USEMODULE += ng_ipv6_nc
  USEMODULE += ng_ipv6_netif
  USEMODULE += ng_netbase
endif

ifneq (,$(filter ng_ipv6_nc,$(USEMODULE)))
  USEMODULE += ng_ipv6_addr
endif

ifneq (,$(filter ng_ipv6_netif,$(USEMODULE)))
  USEMODULE += ng_ipv6_addr
  USEMODULE += ng_netif
endif

ifneq (,$(filter ng_netbase,$(USEMODULE)))
  USEMODULE += ng_netapi
  USEMODULE += ng_netreg
  USEMODULE += ng_netif
  USEMODULE += ng_pktbuf
endif

ifneq (,$(filter ng_pktdump,$(USEMODULE)))
  USEMODULE += ng_pktbuf
  USEMODULE += od
endif

ifneq (,$(filter aodvv2,$(USEMODULE)))
  USEMODULE += vtimer
  USEMODULE += sixlowpan
  USEMODULE += oonf_common
  USEMODULE += oonf_rfc5444
endif

ifneq (,$(filter uart0,$(USEMODULE)))
  USEMODULE += posix
endif

ifneq (,$(filter posix,$(USEMODULE)))
  USEMODULE += timex
  USEMODULE += vtimer
endif

ifneq (,$(filter cbor,$(USEMODULE)))
  USEMODULE += net_help
endif

ifneq (,$(filter cc110x%,$(USEMODULE)))
  USEMODULE += protocol_multiplex
  USEMODULE += vtimer
endif

ifneq (,$(filter cc110x,$(USEMODULE)))
  USEMODULE += transceiver
endif

ifneq (,$(filter cc110x_legacy,$(USEMODULE)))
  USEMODULE += transceiver
endif

ifneq (,$(filter cc2420,$(USEMODULE)))
  USEMODULE += transceiver
  USEMODULE += ieee802154
endif

ifneq (,$(filter at86rf231,$(USEMODULE)))
  USEMODULE += netdev_802154
  USEMODULE += ieee802154
endif

ifneq (,$(filter l2_ping,$(USEMODULE)))
  USEMODULE += vtimer
endif

ifneq (,$(filter vtimer,$(USEMODULE)))
  USEMODULE += timex
endif

ifneq (,$(filter net_if,$(USEMODULE)))
  USEMODULE += transceiver
  USEMODULE += net_help
  USEMODULE += hashes
endif

ifneq (,$(filter ccn_lite,$(USEMODULE)))
  USEMODULE += crypto
endif

ifneq (,$(filter netdev_802154,$(USEMODULE)))
  USEMODULE += netdev_base
endif

ifneq (,$(filter rgbled,$(USEMODULE)))
  USEMODULE += color
endif

ifneq (,$(filter libfixmath-unittests,$(USEMODULE)))
  USEPKG += libfixmath
endif

ifneq (,$(filter defaulttransceiver,$(USEMODULE)))
  FEATURES_REQUIRED += transceiver
endif

ifneq (,$(filter nhdp,$(USEMODULE)))
  USEMODULE += vtimer
  USEMODULE += oonf_common
  USEMODULE += oonf_rfc5444
endif

ifneq (,$(filter fib,$(USEMODULE)))
  USEMODULE += timex
  USEMODULE += vtimer
  USEMODULE += net_help
endif

ifneq (,$(filter oonf_common,$(USEMODULE)))
  USEPKG += oonf_api
  USEMODULE += socket_base
endif