uses kill() instead of system() (<3 dhowett)