diff --git a/src/p_enemy.c b/src/p_enemy.c
index d5da92e38d65fd2d9b4af50141a28893e5c41af9..09274b5a80de2fa6185eb4113dac01ba332cc5f5 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -7597,48 +7597,35 @@ void A_SetTargetsTarget(mobj_t *actor)
 {
 	INT32 locvar1 = var1;
 	INT32 locvar2 = var2;
-	mobj_t *targetedmobj = NULL;
-	thinker_t *th;
-	mobj_t *mo2;
+	mobj_t *oldtarg = NULL, *newtarg = NULL;
 #ifdef HAVE_BLUA
 	if (LUA_CallAction("A_SetTargetsTarget", actor))
 		return;
 #endif
 
-	if ((!locvar1 && (!actor->target)) || (locvar1 && (!actor->tracer)))
-		return;
-
-	if ((!locvar1 && !locvar2 && (!actor->target->target))
-	|| (!locvar1 && locvar2 && (!actor->target->tracer))
-	|| (locvar1 && !locvar2 && (!actor->tracer->target))
-	|| (locvar1 && locvar2 && (!actor->tracer->tracer)))
-		return; // Don't search for nothing.
-
-	// scan the thinkers
-	for (th = thinkercap.next; th != &thinkercap; th = th->next)
-	{
-		if (th->function.acp1 != (actionf_p1)P_MobjThinker)
-			continue;
+	// actor's target
+	if (locvar1) // or tracer
+		oldtarg = actor->tracer;
+	else
+		oldtarg = actor->target;
 
-		mo2 = (mobj_t *)th;
+	if (P_MobjWasRemoved(oldtarg))
+		return;
 
-		if ((!locvar1 && !locvar2 && (mo2 == actor->target->target))
-		|| (!locvar1 && locvar2 && (mo2 == actor->target->tracer))
-		|| (locvar1 && !locvar2 && (mo2 == actor->tracer->target))
-		|| (locvar1 && locvar2 && (mo2 == actor->tracer->tracer)))
-		{
-			targetedmobj = mo2;
-			break;
-		}
-	}
+	// actor's target's target!
+	if (locvar2) // or tracer
+		newtarg = oldtarg->tracer;
+	else
+		newtarg = oldtarg->target;
 
-	if (!targetedmobj)
-		return; // Oops, nothing found..
+	if (P_MobjWasRemoved(newtarg))
+		return;
 
-	if (!locvar1)
-		P_SetTarget(&actor->target, targetedmobj);
+	// set actor's new target
+	if (locvar1) // or tracer
+		P_SetTarget(&actor->tracer, newtarg);
 	else
-		P_SetTarget(&actor->tracer, targetedmobj);
+		P_SetTarget(&actor->target, newtarg);
 }
 
 // Function: A_SetObjectFlags
diff --git a/src/p_slopes.c b/src/p_slopes.c
index 755939039303d1015e65429da3e320bad973ba76..2d55cf19451f25458f61fa5c01c9608e7f13e3b0 100644
--- a/src/p_slopes.c
+++ b/src/p_slopes.c
@@ -46,14 +46,14 @@ static pslope_t *slopelist = NULL;
 static UINT16 slopecount = 0;
 
 // Calculate line normal
-void P_CalculateSlopeNormal(pslope_t *slope) {
+static void P_CalculateSlopeNormal(pslope_t *slope) {
 	slope->normal.z = FINECOSINE(slope->zangle>>ANGLETOFINESHIFT);
 	slope->normal.x = -FixedMul(FINESINE(slope->zangle>>ANGLETOFINESHIFT), slope->d.x);
 	slope->normal.y = -FixedMul(FINESINE(slope->zangle>>ANGLETOFINESHIFT), slope->d.y);
 }
 
 // With a vertex slope that has its vertices set, configure relevant slope info
-void P_ReconfigureVertexSlope(pslope_t *slope)
+static void P_ReconfigureVertexSlope(pslope_t *slope)
 {
 	vector3_t vec1, vec2;
 
@@ -543,7 +543,7 @@ void P_SpawnSlope_Line(int linenum)
 //
 // Creates a new slope from three vertices with the specified IDs
 //
-pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flags)
+static pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flags)
 {
 	size_t i;
 	mapthing_t *mt = mapthings;