diff --git a/ChangeLog b/ChangeLog
index 7c1be27f..6f99ebac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,8 +3,14 @@
 
   19 Sep 2007; Roy Marples <uberlord@gentoo.org>:
 
+    Change from /lib/rcscripts to /lib/rc and adjust our files so changing
+    our libdir is much easier in future. This move makes sense it's so much
+    more than a holding place for our scripts now. It also has the added
+    benefit of not loading the splash plugin for rc4 and lower which is
+    ABI incompatible with us now.
+
     plugin hook function is now rc_plugin_hook instead of a name based
-	on the name of the plugin.
+    on the name of the plugin.
 
   18 Sep 2007; Roy Marples <uberlord@gentoo.org>:
 
diff --git a/Makefile b/Makefile
index b7eae221..fce9a7c3 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@
 SUBDIRS = conf.d etc init.d man net sh share src
 
 NAME = baselayout
-VERSION = 2.0.0_rc4
+VERSION = 2.0.0_rc5
 
 PKG = $(NAME)-$(VERSION)
 
@@ -21,7 +21,7 @@ OS=BSD
 endif
 endif
 
-BASE_DIRS = /$(LIB)/rcscripts/init.d /$(LIB)/rcscripts/tmp
+BASE_DIRS = $(RC_LIB)/init.d $(RC_LIB)/tmp
 KEEP_DIRS = /boot /home /mnt /root \
 	/usr/local/bin /usr/local/sbin /usr/local/share/doc /usr/local/share/man \
 	/var/lock /var/run
@@ -50,12 +50,12 @@ install::
 		$(INSTALL_DIR) $(DESTDIR)/etc/runlevels/single || exit $$? ; \
 		$(INSTALL_DIR) $(DESTDIR)/etc/runlevels/nonetwork || exit $$? ; \
 	fi
-	ln -snf ../../$(LIB)/rcscripts/sh/net.sh $(DESTDIR)/etc/init.d/$(NET_LO) || exit $$?
-	ln -snf ../../$(LIB)/rcscripts/sh/functions.sh $(DESTDIR)/etc/init.d || exit $$?
+	ln -snf ../../$(RC_LIB)/sh/net.sh $(DESTDIR)/etc/init.d/$(NET_LO) || exit $$?
+	ln -snf ../../$(RC_LIB)/sh/functions.sh $(DESTDIR)/etc/init.d || exit $$?
 	# Handle lib correctly
 	if test $(LIB) != "lib" ; then \
-		sed -i'.bak' -e 's,/lib/,/$(LIB)/,g' $(DESTDIR)/$(LIB)/rcscripts/sh/functions.sh || exit $$? ; \
-		rm -f $(DESTDIR)/$(LIB)/rcscripts/sh/functions.sh.bak ; \
+		sed -i'.bak' -e 's,/lib/,/$(LIB)/,g' $(DESTDIR)/$(RC_LIB)/sh/functions.sh || exit $$? ; \
+		rm -f $(DESTDIR)/$(RC_LIB)/sh/functions.sh.bak ; \
 	fi
 
 layout:
diff --git a/default.mk b/default.mk
index e65bad87..6cbe1b7a 100644
--- a/default.mk
+++ b/default.mk
@@ -4,6 +4,7 @@
 DESTDIR = /
 ROOT = /
 LIB = lib
+RC_LIB = /$(LIB)/rc
 
 #
 # Recursive rules
diff --git a/net.BSD/Makefile b/net.BSD/Makefile
index 11bd20a4..c000a354 100644
--- a/net.BSD/Makefile
+++ b/net.BSD/Makefile
@@ -1,4 +1,4 @@
-DIR   = /$(LIB)/rcscripts/net 
+DIR   = $(RC_LIB)/net 
 FILES = ifconfig.sh iwconfig.sh
 
 TOPDIR = ..
diff --git a/net.Linux/Makefile b/net.Linux/Makefile
index 3059f1e4..a1472747 100644
--- a/net.Linux/Makefile
+++ b/net.Linux/Makefile
@@ -1,4 +1,4 @@
-DIR   = /$(LIB)/rcscripts/net 
+DIR   = $(RC_LIB)/net 
 FILES = adsl.sh apipa.sh arping.sh bonding.sh br2684ctl.sh bridge.sh \
 	ccwgroup.sh clip.sh ifconfig.sh ifplugd.sh ip6to4.sh ipppd.sh \
 	iproute2.sh iwconfig.sh netplugd.sh pppd.sh pump.sh tuntap.sh \
diff --git a/net.Linux/udhcpc.sh b/net.Linux/udhcpc.sh
index af5bbea1..2fe23bd2 100644
--- a/net.Linux/udhcpc.sh
+++ b/net.Linux/udhcpc.sh
@@ -65,8 +65,11 @@ udhcpc_start() {
 			;;
 	esac
 
+	local script="${RC_LIBDIR}"/sh/udhcpc.sh
+	[ -x "${script}" ] || script=/lib/rcscripts/sh/udhcpc.sh
+
 	eval "${x}" "${args}" --interface="${IFACE}" --now \
-		--script="${RC_LIBDIR}"/sh/udhcpc.sh \
+		--script="${script}" \
 		--pidfile="${pidfile}" >/dev/null
 	eend $? || return 1
 
diff --git a/net/Makefile b/net/Makefile
index 5ed3d8b9..0aedc1cc 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1,4 +1,4 @@
-DIR   = /$(LIB)/rcscripts/net 
+DIR   = $(RC_LIB)/net 
 FILES = dhclient.sh dhcpcd.sh macchanger.sh macnet.sh ssidnet.sh system.sh \
 	wpa_supplicant.sh
 
diff --git a/sh.BSD/Makefile b/sh.BSD/Makefile
index 9c08bbd6..485de3a7 100644
--- a/sh.BSD/Makefile
+++ b/sh.BSD/Makefile
@@ -1,5 +1,5 @@
-DIR   = /$(LIB)/rcscripts/sh
-EXES = init.sh 
+DIR   = $(RC_LIB)/sh
+EXES = init.sh
 
 TOPDIR = ..
 include $(TOPDIR)/default.mk
diff --git a/sh.Linux/Makefile b/sh.Linux/Makefile
index 446d624d..89cd8154 100644
--- a/sh.Linux/Makefile
+++ b/sh.Linux/Makefile
@@ -1,4 +1,4 @@
-DIR   = /$(LIB)/rcscripts/sh
+DIR   = $(RC_LIB)/sh
 EXES = init.sh init-early.sh
 
 TOPDIR = ..
diff --git a/sh/Makefile b/sh/Makefile
index ac50fa90..aa9a4b45 100644
--- a/sh/Makefile
+++ b/sh/Makefile
@@ -1,4 +1,4 @@
-DIR   = /$(LIB)/rcscripts/sh
+DIR   = $(RC_LIB)/sh
 FILES = functions.sh init-functions.sh init-common-post.sh \
 	rc-functions.sh rc-mount.sh
 EXES  = gendepends.sh net.sh rc-mount.sh rc-help.sh runscript.sh
diff --git a/sh/functions.sh b/sh/functions.sh
index 5b4f8d91..495f2bd1 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -113,9 +113,9 @@ fi
 # This should solve both /sbin and /usr/sbin not present when
 # doing 'su -c foo', or for something like:  PATH= rcscript start
 case "${PATH}" in
-	/lib/rcscripts/bin:/bin:/sbin:/usr/bin:/usr/sbin) ;;
-	/lib/rcscripts/bin:/bin:/sbin:/usr/bin:/usr/sbin:*) ;;
-	*) export PATH="/lib/rcscripts/bin:/bin:/sbin:/usr/bin:/usr/sbin:${PATH}" ;;
+	/lib/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin) ;;
+	/lib/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:*) ;;
+	*) export PATH="/lib/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:${PATH}" ;;
 esac
 
 for arg in "$@" ; do
diff --git a/sh/rc-functions.sh b/sh/rc-functions.sh
index a1a7644b..79f479fc 100755
--- a/sh/rc-functions.sh
+++ b/sh/rc-functions.sh
@@ -2,12 +2,17 @@
 # Distributed under the terms of the GNU General Public License v2
 
 has_addon() {
-	[ -e "${RC_LIBDIR}/addons/$1.sh" ]
+	[ -e "${RC_LIBDIR}/addons/$1.sh" ] || [ -e /lib/rcscripts/addons/"$1".sh ]
 }
 
 import_addon() {
-	has_addon "$1" || return 1
-	. "${RC_LIBDIR}/addons/$1.sh"
+	if [ -e "${RC_LIBDIR}/addons/$1.sh" ]; then
+		. "${RC_LIBDIR}/addons/$1.sh"
+	elif [ -e /lib/rcscripts/addons/"$1".sh ]; then
+		. /lib/rcscripts/addons/"$1".sh
+	else
+		return 1
+	fi
 }
 
 start_addon() {
@@ -22,7 +27,7 @@ is_net_fs() {
 	[ -z "$1" ] && return 1
 
 	local t=$(mountinfo --fstype "$1")
-	for x in ${RC_NET_FS_LIST} ; do
+	for x in ${RC_NET_FS_LIST}; do
 		[ "${x}" = "${t}" ] && return 0
 	done
 	return 1
@@ -38,12 +43,12 @@ get_bootparam() {
 	[ -z "${match}" -o ! -r /proc/cmdline ] && return 1
 
 	set -- $(cat /proc/cmdline)
-	while [ -n "$1" ] ; do
+	while [ -n "$1" ]; do
 		case "$1" in
 			gentoo=*)
 				local params="${1##*=}"
 				local IFS=, x=
-				for x in ${params} ; do
+				for x in ${params}; do
 					[ "${x}" = "${match}" ] && return 0
 				done
 				;;
diff --git a/src/Makefile b/src/Makefile
index 93e71d26..4da64061 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -41,6 +41,7 @@ CFLAGS += -pedantic -std=c99 \
 
 DESTDIR =
 LIB = lib
+RC_LIB = /$(LIB)/rc
 
 # Set PAM = pam for pam support
 PAM = 
@@ -134,13 +135,13 @@ install: $(TARGET)
 	install -m 0755 -d $(DESTDIR)/sbin
 	install -m 0755 $(SBIN_TARGETS) $(DESTDIR)/sbin
 	ln -sf rc-update $(DESTDIR)/sbin/update-rc
-	install -m 0755 -d $(DESTDIR)/$(LIB)/rcscripts/conf.d
-	install -m 0644 $(SYS_WHITELIST) $(DESTDIR)/$(LIB)/rcscripts/conf.d
-	install -m 0755 -d $(DESTDIR)/$(LIB)/rcscripts/bin
+	install -m 0755 -d $(DESTDIR)/$(RC_LIB)/conf.d
+	install -m 0644 $(SYS_WHITELIST) $(DESTDIR)/$(RC_LIB)/conf.d
+	install -m 0755 -d $(DESTDIR)/$(RC_LIB)/bin
 	for x in $(BINLINKS); do ln -sf ../sbin/rc $(DESTDIR)/bin/$$x; done
 	for x in $(SBINLINKS); do ln -sf rc $(DESTDIR)/sbin/$$x; done
-	for x in $(RCLINKS); do ln -sf ../../../sbin/rc $(DESTDIR)/$(LIB)/rcscripts/bin/$$x; done
-	if test "$(PAM)" != "pam" ; then \
+	for x in $(RCLINKS); do ln -sf ../../../sbin/rc $(DESTDIR)/$(RC_LIB)/bin/$$x; done
+	if test "$(PAM)" = "pam" ; then \
 		install -m 0755 -d $(DESTDIR)/etc/pam.d ; \
 		install -m 0644 start-stop-daemon.pam $(DESTDIR)/etc/pam.d/start-stop-daemon ; \
 	fi
diff --git a/src/rc-misc.h b/src/rc-misc.h
index ec29987e..0df58b5c 100644
--- a/src/rc-misc.h
+++ b/src/rc-misc.h
@@ -14,7 +14,7 @@
 #define RC_LEVEL_BOOT           "boot"
 #define RC_LEVEL_DEFAULT        "default"
 
-#define RC_LIBDIR               "/" LIB "/rcscripts"
+#define RC_LIBDIR               "/" LIB "/rc"
 #define RC_SVCDIR               RC_LIBDIR "/init.d"
 #define RC_DEPTREE              RC_SVCDIR "/deptree"
 #define RC_RUNLEVELDIR          "/etc/runlevels"