diff --git a/core/e2fsprogs/PKGBUILD b/core/e2fsprogs/PKGBUILD
index ead1ec85f..09bd73a49 100755
--- a/core/e2fsprogs/PKGBUILD
+++ b/core/e2fsprogs/PKGBUILD
@@ -1,14 +1,14 @@
-# Maintainer: Mike Staszel <mikestaszel@plugboxlinux.org> 
+# Maintainer: Ronald van Haren <ronald.archlinux.org> 
 # Contributor: judd <jvinet@zeroflux.org>
 
-# Plugbox Linux changes: Due to conflicts with heimdal, removed some files
-# There are no other (e.g. configure, make) changes
+# No Plugbox changes, just a version bump. If ABS goes above 1.41.12-2,
+# delete this from git.
 
 pkgname=e2fsprogs
 pkgver=1.41.12
-pkgrel=3
+pkgrel=2
 pkgdesc="Ext2/3/4 filesystem utilities"
-arch=('arm')
+arch=('i686' 'x86_64')
 license=('GPL' 'LGPL' 'MIT')
 url="http://e2fsprogs.sourceforge.net"
 groups=('base')
@@ -31,6 +31,7 @@ build() {
       --disable-fsck --disable-uuidd \
       --disable-libuuid --disable-libblkid || return 1
 
+
   make || return 1
 }
 
@@ -44,8 +45,4 @@ package() {
   install -Dm644 "${srcdir}/MIT-LICENSE" \
     "${pkgdir}/usr/share/licenses/${pkgname}/MIT-LICENSE" || return 1
 
-  # Remove heimdal conflicts (Plugbox modification)
-  #rm $pkgdir/usr/bin/compile_et
-  #rm $pkgdir/usr/lib/libcom_err.a
-  #rm $pkgdir/usr/lib/libcom_err.so
 }
diff --git a/core/heimdal/001_all_heimdal-no_libedit.patch b/core/heimdal/001_all_heimdal-no_libedit.patch
new file mode 100755
index 000000000..a551bdce1
--- /dev/null
+++ b/core/heimdal/001_all_heimdal-no_libedit.patch
@@ -0,0 +1,10 @@
+--- cf/krb-readline.m4	2005-06-16 18:28:32.000000000 +0200
++++ cf/krb-readline.m4	2005-06-27 23:17:06.000000000 +0200
+@@ -6,7 +6,6 @@
+ dnl el_init
+ 
+ AC_DEFUN([KRB_READLINE],[
+-AC_FIND_FUNC_NO_LIBS(el_init, edit, [], [], [$LIB_tgetent])
+ if test "$ac_cv_func_el_init" = yes ; then
+ 	AC_CACHE_CHECK(for four argument el_init, ac_cv_func_el_init_four,[
+ 		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
diff --git a/core/heimdal/002_all_heimal-fPIC.patch b/core/heimdal/002_all_heimal-fPIC.patch
new file mode 100755
index 000000000..c67dbae76
--- /dev/null
+++ b/core/heimdal/002_all_heimal-fPIC.patch
@@ -0,0 +1,12 @@
+--- lib/editline/Makefile.am	2005-06-16 18:28:44.000000000 +0200
++++ lib/editline/Makefile.am	2005-06-27 23:21:02.000000000 +0200
+@@ -41,6 +41,9 @@
+ 
+ EXTRA_DIST = $(man_MANS)
+ 
++$(libeditline_la_OBJECTS): %.lo: %.c
++	$(LTCOMPILE) -fPIC -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
++
+ snprintf.c:
+ 	$(LN_S) $(srcdir)/../roken/snprintf.c .
+ strdup.c:
diff --git a/core/heimdal/003_all_heimdal-rxapps.patch b/core/heimdal/003_all_heimdal-rxapps.patch
new file mode 100755
index 000000000..40fc05f08
--- /dev/null
+++ b/core/heimdal/003_all_heimdal-rxapps.patch
@@ -0,0 +1,22 @@
+--- appl/kx/rxtelnet.in	2005-06-16 18:29:10.000000000 +0200
++++ appl/kx/rxtelnet.in	2005-06-27 23:21:34.000000000 +0200
+@@ -2,7 +2,7 @@
+ # $Id: rxtelnet.in,v 1.31 2004/03/07 17:22:06 lha Exp $
+ #
+ usage="Usage: $0 [-l username] [-k] [-fF] [-t args_to_telnet] [-x args_to_xterm] [-K args_to_kx] [-w term_emulator] [-b telnet_binary] [-n] [-v] [-h | --help] [--version] host [port]"
+-binary=telnet
++binary=ktelnet
+ term=
+ kx_args=-P
+ while true
+--- appl/kx/rxterm.in	2005-06-16 18:29:10.000000000 +0200
++++ appl/kx/rxterm.in	2005-06-27 23:21:55.000000000 +0200
+@@ -2,7 +2,7 @@
+ # $Id: rxterm.in,v 1.23 2002/03/18 17:37:34 joda Exp $
+ #
+ usage="Usage: $0 [-l username] [-k] [-f] [-r rsh_args] [-x xterm_args] [-K kx_args] [-w term_emulator] [-b rsh_binary][-v] [-h | --help] [--version] host"
+-binary=rsh
++binary=krsh
+ term=xterm
+ while true
+ do
diff --git a/core/heimdal/005_all_heimdal-suid_fix.patch b/core/heimdal/005_all_heimdal-suid_fix.patch
new file mode 100755
index 000000000..35a9ed9f6
--- /dev/null
+++ b/core/heimdal/005_all_heimdal-suid_fix.patch
@@ -0,0 +1,20 @@
+--- appl/su/Makefile.am	2005-06-16 18:27:46.000000000 +0200
++++ appl/su/Makefile.am	2005-06-27 23:25:21.000000000 +0200
+@@ -7,6 +7,7 @@
+ bin_PROGRAMS = su
+ bin_SUIDS = su
+ su_SOURCES = su.c supaths.h
++su_LDFLAGS = -Wl,-z,now
+ man_MANS = su.1
+ 
+ LDADD = $(LIB_kafs) \
+--- appl/otp/Makefile.am	2005-06-16 18:28:46.000000000 +0200
++++ appl/otp/Makefile.am	2005-06-27 23:25:40.000000000 +0200
+@@ -8,6 +8,7 @@
+ bin_SUIDS = otp
+ otp_SOURCES = otp.c otp_locl.h
+ otpprint_SOURCES = otpprint.c otp_locl.h
++otp_LDFLAGS = -Wl,-z,now
+ 
+ man_MANS = otp.1  otpprint.1
+ 
diff --git a/core/heimdal/012_all_heimdal-berkdb.patch b/core/heimdal/012_all_heimdal-berkdb.patch
new file mode 100755
index 000000000..46762c220
--- /dev/null
+++ b/core/heimdal/012_all_heimdal-berkdb.patch
@@ -0,0 +1,124 @@
+Binary files heimdal-0.7-old/cf/.find-func-no-libs2.m4.swp and heimdal-0.7/cf/.find-func-no-libs2.m4.swp differ
+Index: heimdal/cf/db.m4
+===================================================================
+--- heimdal.orig/cf/db.m4
++++ heimdal/cf/db.m4
+@@ -18,24 +18,13 @@ db_type=unknown
+ 
+ if test "$enable_berkeley_db" != no; then
+ 
+-  AC_CHECK_HEADERS([				\
+-	db4/db.h				\
+-	db3/db.h				\
+-	db.h					\
+-	db_185.h				\
+-  ])
++  AC_CHECK_HEADERS([db.h])
+ 
+ dnl db_create is used by db3 and db4
+ 
+-  AC_FIND_FUNC_NO_LIBS(db_create, db4 db3 db, [
++  AC_FIND_FUNC_NO_LIBS(db_create, db, [
+   #include <stdio.h>
+-  #ifdef HAVE_DB4_DB_H
+-  #include <db4/db.h>
+-  #elif defined(HAVE_DB3_DB_H)
+-  #include <db3/db.h>
+-  #else
+   #include <db.h>
+-  #endif
+   ],[NULL, NULL, 0])
+ 
+   if test "$ac_cv_func_db_create" = "yes"; then
+@@ -50,17 +39,9 @@ dnl db_create is used by db3 and db4
+ 
+ dnl dbopen is used by db1/db2
+ 
+-    AC_FIND_FUNC_NO_LIBS(dbopen, db2 db, [
++    AC_FIND_FUNC_NO_LIBS(dbopen, db, [
+     #include <stdio.h>
+-    #if defined(HAVE_DB2_DB_H)
+-    #include <db2/db.h>
+-    #elif defined(HAVE_DB_185_H)
+-    #include <db_185.h>
+-    #elif defined(HAVE_DB_H)
+     #include <db.h>
+-    #else
+-    #error no db.h
+-    #endif
+     ],[NULL, 0, 0, 0, NULL])
+ 
+     if test "$ac_cv_func_dbopen" = "yes"; then
+Index: heimdal/lib/hdb/db.c
+===================================================================
+--- heimdal.orig/lib/hdb/db.c
++++ heimdal/lib/hdb/db.c
+@@ -37,11 +37,7 @@ RCSID("$Id: db.c 20215 2007-02-09 21:59:
+ 
+ #if HAVE_DB1
+ 
+-#if defined(HAVE_DB_185_H)
+-#include <db_185.h>
+-#elif defined(HAVE_DB_H)
+ #include <db.h>
+-#endif
+ 
+ static krb5_error_code
+ DB_close(krb5_context context, HDB *db)
+Index: heimdal/lib/hdb/db3.c
+===================================================================
+--- heimdal.orig/lib/hdb/db3.c
++++ heimdal/lib/hdb/db3.c
+@@ -37,13 +37,7 @@ RCSID("$Id: db3.c 21610 2007-07-17 07:10
+ 
+ #if HAVE_DB3
+ 
+-#ifdef HAVE_DB4_DB_H
+-#include <db4/db.h>
+-#elif defined(HAVE_DB3_DB_H)
+-#include <db3/db.h>
+-#else
+ #include <db.h>
+-#endif
+ 
+ static krb5_error_code
+ DB_close(krb5_context context, HDB *db)
+Index: heimdal/lib/roken/getcap.c
+===================================================================
+--- heimdal.orig/lib/roken/getcap.c
++++ heimdal/lib/roken/getcap.c
+@@ -38,11 +38,13 @@
+ #include "roken.h"
+ RCSID("$Id: getcap.c 16561 2006-01-13 14:25:32Z lha $");
+ 
++#if defined(HAVE_DBOPEN) && defined(HAVE_DB_H)
++#define USE_DB
++#endif
++
+ #include <sys/types.h>
+ #include <ctype.h>
+-#if defined(HAVE_DB_185_H)
+-#include <db_185.h>
+-#elif defined(HAVE_DB_H)
++#ifdef USE_DB
+ #include <db.h>
+ #endif
+ #include <errno.h>	
+Index: heimdal/lib/roken/ndbm_wrap.c
+===================================================================
+--- heimdal.orig/lib/roken/ndbm_wrap.c
++++ heimdal/lib/roken/ndbm_wrap.c
+@@ -37,13 +37,7 @@ RCSID("$Id: ndbm_wrap.c 21634 2007-07-17
+ #endif
+ 
+ #include "ndbm_wrap.h"
+-#if defined(HAVE_DB4_DB_H)
+-#include <db4/db.h>
+-#elif defined(HAVE_DB3_DB_H)
+-#include <db3/db.h>
+-#else
+ #include <db.h>
+-#endif
+ 
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/core/heimdal/013_all_heimdal-pthread-lib.patch b/core/heimdal/013_all_heimdal-pthread-lib.patch
new file mode 100755
index 000000000..19f879407
--- /dev/null
+++ b/core/heimdal/013_all_heimdal-pthread-lib.patch
@@ -0,0 +1,11 @@
+--- heimdal-0.7.1/cf/pthreads.m4.old	2005-09-09 12:12:28.000000000 +0000
++++ heimdal-0.7.1/cf/pthreads.m4	2005-09-17 22:23:23.000000000 +0000
+@@ -32,7 +32,7 @@
+ 	2.*)
+ 		native_pthread_support=yes
+ 		PTHREADS_CFLAGS=-pthread
+-		PTHREADS_LIBS=-pthread
++		PTHREADS_LIBS=-lpthread
+ 		;;
+ 	esac
+ 	;;
diff --git a/core/heimdal/014_all_heimdal-path.patch b/core/heimdal/014_all_heimdal-path.patch
new file mode 100755
index 000000000..36a86f1f9
--- /dev/null
+++ b/core/heimdal/014_all_heimdal-path.patch
@@ -0,0 +1,50 @@
+--- appl/rcp/rcp.c.old	2006-05-03 13:31:59.398493625 +0200
++++ appl/rcp/rcp.c	2006-05-03 13:32:04.494485981 +0200
+@@ -34,7 +34,7 @@
+ #include "rcp_locl.h"
+ #include <getarg.h>
+ 
+-#define RSH_PROGRAM "rsh"
++#define RSH_PROGRAM "krsh"
+ 
+ struct  passwd *pwd;
+ uid_t	userid;
+--- appl/rcp/rcp_locl.h.old	2006-05-03 02:30:31.602025409 +0200
++++ appl/rcp/rcp_locl.h	2006-05-03 02:30:35.886018983 +0200
+@@ -64,4 +64,4 @@
+ #define	_PATH_CP	"/bin/cp"
+ #endif
+ #undef _PATH_RSH
+-#define	_PATH_RSH	BINDIR "/rsh"
++#define	_PATH_RSH	BINDIR "/krsh"
+--- appl/telnet/telnetd/telnetd.h.old	2006-05-03 02:23:14.582680939 +0200
++++ appl/telnet/telnetd/telnetd.h	2006-05-03 02:23:23.746667193 +0200
+@@ -192,7 +192,7 @@
+ #endif
+ 
+ #undef _PATH_LOGIN
+-#define _PATH_LOGIN	BINDIR "/login"
++#define _PATH_LOGIN	BINDIR "/klogin"
+ 
+ /* fallbacks */
+ 
+--- appl/login/shadow.c.old	2006-05-05 06:31:29.517138115 +0200
++++ appl/login/shadow.c	2006-05-05 06:32:26.433052741 +0200
+@@ -38,7 +38,7 @@
+ #ifdef HAVE_SHADOW_H
+ 
+ #ifndef _PATH_CHPASS
+-#define _PATH_CHPASS "/usr/bin/passwd"
++#define _PATH_CHPASS "/usr/bin/kpasswd"
+ #endif
+ 
+ static int
+@@ -52,7 +52,7 @@
+         printf("fork /bin/passwd");
+         exit(1);
+     case 0:
+-        execlp(_PATH_CHPASS, "passwd", who->pw_name, (char *) 0);
++        execlp(_PATH_CHPASS, "kpasswd", who->pw_name, (char *) 0);
+         exit(1);
+     default:
+         waitpid(pid, &status, 0);
diff --git a/core/heimdal/PKGBUILD b/core/heimdal/PKGBUILD
new file mode 100755
index 000000000..c35111d18
--- /dev/null
+++ b/core/heimdal/PKGBUILD
@@ -0,0 +1,120 @@
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+# Plugbox Changes: compile_et and libcom_err conflict with e2fsprogs
+#                  Arch Linux has these files in e2fsprogs, and these
+#                  changes help us do the same.
+
+#
+### Attention: remove old pkg before building - it links against itself! ###
+#
+
+pkgname=heimdal
+pkgver=1.3.3
+pkgrel=4
+pkgdesc="Implementation of Kerberos V5 libraries"
+arch=('i686' 'x86_64')
+url="http://www.h5l.org/"
+license=('custom')
+depends=('db' 'openssl' 'sqlite3' 'e2fsprogs' 'libldap')
+backup=(etc/krb5.conf)
+options=('!libtool' '!emptydirs')
+install=heimdal.install
+source=(http://www.h5l.org/dist/src/${pkgname}-${pkgver}.tar.gz
+	001_all_heimdal-no_libedit.patch
+	002_all_heimal-fPIC.patch
+	003_all_heimdal-rxapps.patch
+	005_all_heimdal-suid_fix.patch
+	012_all_heimdal-berkdb.patch
+	013_all_heimdal-pthread-lib.patch
+	014_all_heimdal-path.patch
+	heimdal-kdc.rc
+	kadmind.rc
+	kpasswd.rc)
+md5sums=('963c09f1b14c41660be70b55fae9f163'
+         '98e28f11f906c967aac22d6184102c9e'
+         '6d5571bdedba2e2423b90bccdbac2c0a'
+         '2feec3924ee5230b54175b4d4000c872'
+         '45aeb207f360f9f4e9e0fabc8bfeecbc'
+         '56f5d10d0ec40f2fda82ef144ffac1e0'
+         '1b8665b771c4eb6b56ea8582c96e56e3'
+         '8208ae8c0b6ff5ab4f64af1693e9e396'
+         'e59650992b9541a30dfce727a194f6e0'
+         '1f2f86a67bbfddb7af581d35fdca9627'
+         'f8f1eca95b9d3f2b4ebf2417b71b81cf')
+
+build() {
+  cd ${srcdir}/heimdal-${pkgver}
+  patch -Np0 -i ${srcdir}/001_all_heimdal-no_libedit.patch
+  patch -Np0 -i ${srcdir}/002_all_heimal-fPIC.patch
+  patch -Np0 -i ${srcdir}/003_all_heimdal-rxapps.patch
+  patch -Np0 -i ${srcdir}/005_all_heimdal-suid_fix.patch
+  patch -Np1 -i ${srcdir}/012_all_heimdal-berkdb.patch
+  patch -Np1 -i ${srcdir}/013_all_heimdal-pthread-lib.patch
+  patch -Np0 -i ${srcdir}/014_all_heimdal-path.patch
+
+  sed -i -e 's|var/heimdal|var/lib/heimdal|g' configure.in \
+	doc/setup.texi doc/heimdal.info kadmin/kadmind.8 kdc/kdc.8 \
+	lib/hdb/hdb.h lib/krb5/krb5.conf.5 lib/krb5/krb5.conf.cat5
+	
+  sed -i 's|$(LIB_NDBM)|$(LIB_NDBM) $(LIB_db_create)|' lib/otp/Makefile.am
+
+  libtoolize --force
+  aclocal -I cf
+  autoconf
+  automake
+
+  ./configure --prefix=/usr --enable-shared=yes --without-x \
+	--sysconfdir=/etc --mandir=/usr/share/man \
+	--datadir=/var/lib/heimdal \
+	--localstatedir=/var/lib/heimdal \
+	--with-openssl=/usr \
+	--with-readline-lib=/usr/lib \
+	--with-readline-include=/usr/include/readline \
+	--with-sqlite3-lib=/usr/lib \
+	--with-sqlite3-include=/usr/include \
+	--with-openldap=/usr \
+	--libexecdir=/usr/sbin
+	
+  make
+}
+
+package() {
+  cd ${srcdir}/heimdal-${pkgver}
+  make DESTDIR=${pkgdir} install
+
+  # Rename daemons and their manpages
+  for i in telnetd ftpd rshd; do
+    mv ${pkgdir}/usr/share/man/man8/{,k}${i}.8
+    mv ${pkgdir}/usr/sbin/{,k}${i}
+  done
+  
+  # Rename clients and their manpages
+  for i in rcp rsh telnet ftp su login; do
+    if [ -f ${pkgdir}/usr/share/man/man1/${i}.1 ]; then
+      mv ${pkgdir}/usr/share/man/man1/{,k}${i}.1
+    fi
+    mv ${pkgdir}/usr/bin/{,k}${i}
+  done
+  rm -rf ${pkgdir}/usr/share/man/cat{1,3,5,8}
+  
+  # Arch could be a KDC too
+  install -d ${pkgdir}/etc/rc.d
+  install -m644 ${srcdir}/heimdal-${pkgver}/krb5.conf ${pkgdir}/etc/
+  for i in heimdal-kdc kadmind kpasswd; do
+    install -m755 ${srcdir}/${i}.rc ${pkgdir}/etc/rc.d/${i}
+  done
+
+  # Remove conflicts
+  rm ${pkgdir}/usr/share/man/man5/ftpusers.5*		          # man-pages
+  rm ${pkgdir}/usr/share/man/man3/{DES,DH,EVP,OpenSSL,RAND,RSA}*  # openssl (a bit overzealous...)
+  rm ${pkgdir}/usr/share/man/man3/os.3*                           # erlang
+
+  # Remove e2fsprogs conflicts (Plugbox modifications)
+  rm $pkgdir/usr/bin/compile_et
+  rm -rf $pkgdir/usr/lib/libcom_err.*
+
+  # Install the license
+  install -Dm644 ${srcdir}/${pkgname}-${pkgver}/LICENSE \
+  	${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/core/heimdal/heimdal-kdc.rc b/core/heimdal/heimdal-kdc.rc
new file mode 100755
index 000000000..b2a3b5fcf
--- /dev/null
+++ b/core/heimdal/heimdal-kdc.rc
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/kdc`
+case "$1" in
+    start)
+        stat_busy "Starting heimdal kdc"
+        if [ -z "$PID" ]; then
+		/usr/sbin/kdc --detach
+        fi
+        if [ ! -z "$PID" -o $? -gt 0 ]; then
+            stat_fail
+        else
+            add_daemon heimdal-kdc
+            stat_done
+        fi
+        ;;
+    stop)
+        stat_busy "Stopping heimdal kdc"
+	    [ ! -z "$PID" ] && kill $PID &> /dev/null
+        if [ $? -gt 0 ]; then
+            stat_fail
+        else
+            rm_daemon heimdal-kdc
+            stat_done
+        fi
+        ;;
+    restart)
+        $0 stop
+	sleep 1
+        $0 start
+        ;;
+    *)
+        echo "usage: $0 {start|stop|restart}"
+	;;
+esac
+exit 0
diff --git a/core/heimdal/heimdal.install b/core/heimdal/heimdal.install
new file mode 100755
index 000000000..b4fd19000
--- /dev/null
+++ b/core/heimdal/heimdal.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(heimdal hx509)
+
+post_install() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info $infodir/$file.info.gz $infodir/dir 2> /dev/null
+  done
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+pre_remove() {
+  [ -x usr/bin/install-info ] || return 0
+  for file in ${filelist[@]}; do
+    install-info --delete $infodir/$file.info.gz $infodir/dir 2> /dev/null
+  done
+}
diff --git a/core/heimdal/kadmind.rc b/core/heimdal/kadmind.rc
new file mode 100755
index 000000000..0f3b8c7c4
--- /dev/null
+++ b/core/heimdal/kadmind.rc
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/kadmind`
+case "$1" in
+    start)
+        stat_busy "Starting heimdal admin server"
+        if [ -z "$PID" ]; then
+		/usr/sbin/kadmind &
+        fi
+        if [ ! -z "$PID" -o $? -gt 0 ]; then
+            stat_fail
+        else
+            add_daemon kadmind
+            stat_done
+        fi
+        ;;
+    stop)
+        stat_busy "Stopping heimdal admin server"
+	    [ ! -z "$PID" ] && kill $PID &> /dev/null
+        if [ $? -gt 0 ]; then
+            stat_fail
+        else
+            rm_daemon kadmind
+            stat_done
+        fi
+        ;;
+    restart)
+        $0 stop
+	sleep 1
+        $0 start
+        ;;
+    *)
+        echo "usage: $0 {start|stop|restart}"
+	;;
+esac
+exit 0
diff --git a/core/heimdal/kpasswd.rc b/core/heimdal/kpasswd.rc
new file mode 100755
index 000000000..3697322b9
--- /dev/null
+++ b/core/heimdal/kpasswd.rc
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/kpasswdd`
+case "$1" in
+    start)
+        stat_busy "Starting heimdal kpasswdd"
+        if [ -z "$PID" ]; then
+		/usr/sbin/kpasswdd &
+        fi
+        if [ ! -z "$PID" -o $? -gt 0 ]; then
+            stat_fail
+        else
+            add_daemon kpasswd
+            stat_done
+        fi
+        ;;
+    stop)
+        stat_busy "Stopping heimdal kpasswdd"
+	    [ ! -z "$PID" ] && kill $PID &> /dev/null
+        if [ $? -gt 0 ]; then
+            stat_fail
+        else
+            rm_daemon kpasswd
+            stat_done
+        fi
+        ;;
+    restart)
+        $0 stop
+	sleep 1
+        $0 start
+        ;;
+    *)
+        echo "usage: $0 {start|stop|restart}"
+	;;
+esac
+exit 0