diff --git a/firestarter b/firestarter
index 01b00fa..94ed24e 100755
--- a/firestarter
+++ b/firestarter
@@ -137,6 +137,7 @@ fsstop() {
 		[ "$pid" -gt 0 ] 2> /dev/null || error "PID is invalid for service: $service (PID $pid)" 51
 		[ -d "/proc/$pid" ] || warn "Service is already dead: $service"
 		[ -d "/proc/$pid" ] && fskill "$pid"
+		rm "$pidfile"
 		return 0
 	done
 }
@@ -269,28 +270,49 @@ fsstatus() {
 	fi
 	# Service information
 	if [ -d "$_optrundir" ]; then
-		for pidfile in "$_optrundir"/*.pid; do
-			local name="$(basename -- "$pidfile" .pid)"
-			local pid="$(< "$pidfile")"
-			local len=16
-			local status
-			local description
-			if [ -z "$pid" ]; then
-				# PID is empty
-				status="\e[31m○\e[0m"
-				description="No PID"
-			elif ! [ "$pid" -gt 0 ] 2> /dev/null; then
-				# PID is not a number greater than 0
-				status="\e[31m○\e[0m"
-				description="\e[31mInvalid PID\e[0m ($pid)"
-			elif ! [ -d "/proc/$pid" ]; then
-				# PID is valid, but does not exist in /proc (i.e. is dead)
-				status="\e[31m●\e[0m"
-				description="\e[31mDead\e[0m (PID $pid)"
+		local len=16
+		local status
+		local description
+		# TODO: This does not handle services that are running but had their configs removed
+		for file in $(echo "$_optconfigdir"/*); do
+			[ -d "$file" ] && continue
+			local name="$(basename -- "$file" .pid)"
+			local service="$_optconfigdir/$name"
+			local pidfile="$_optrundir/$name.pid"
+			local pid=""
+			if [ -f "$pidfile" ]; then
+				# Service has a pidfile and SHOULD be running
+				local pid="$(< "$pidfile")"
+				if [ -z "$pid" ]; then
+					# PID is empty
+					status="\e[31m○\e[0m"
+					description="No PID"
+				elif ! [ "$pid" -gt 0 ] 2> /dev/null; then
+					# PID is not a number greater than 0
+					status="\e[31m○\e[0m"
+					description="\e[31mInvalid PID\e[0m ($pid)"
+				elif ! [ -d "/proc/$pid" ]; then
+					# PID is valid, but does not exist in /proc (i.e. is dead)
+					status="\e[31m●\e[0m"
+					description="\e[31mDead\e[0m (PID $pid)"
+				elif ! [ -x "$service" ]; then
+					# PID is good, but service is not enabled
+					status="\e[33m●\e[0m"
+					description="Running, disabled (PID $pid)"
+				else
+					# PID is good, time for secondary validation
+					status="\e[32m●\e[0m"
+					description="Running (PID $pid)"
+				fi
 			else
-				# PID is good, time for secondary validation
-				status="\e[32m●\e[0m"
-				description="Running (PID $pid)"
+				# Service does not have a pidfile and SHOULD be stopped
+				if [ -x "$service" ]; then
+					status="\e[35m●\e[0m"
+					description="Stopped"
+				elif ! [ -x "$service" ]; then
+					status="\e[35m○\e[0m"
+					description="Disabled"
+				fi
 			fi
 			printf "\t$status %-${len}.${len}s $description\n" "$name"
 		done
@@ -608,7 +630,7 @@ main() {
 	fi
 	# Validate core program dependencies
 	log "Validating dependencies" 2
-	if ! has basename; then
+	if ! has basename sort; then
 		error "Failed to find program: $_return" 1
 	fi
 	# Fixes random SIGALRM bug