anchor.diff:  	dat += hack(user)
   	dat += showpai(user)
   	dat += text({"
  -<TT><B>Cleaner v1.1 controls</B></TT><BR><BR>
  -Status: []<BR>
  +Status: <A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A><BR>
   Behaviour controls are [locked ? "locked" : "unlocked"]<BR>
  -Maintenance panel panel is [open ? "opened" : "closed"]"},
  -text("<A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A>"))
  +Maintenance panel panel is [open ? "opened" : "closed"]"})
   	if(!locked || issilicon(user)|| IsAdminGhost(user))
  -		dat += text({"<BR>Cleans Blood: []<BR>"}, text("<A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A>"))
  -		dat += text({"<BR>Patrol station: []<BR>"}, text("<A href='?src=\ref[src];operation=patrol'>[auto_patrol ? "Yes" : "No"]</A>"))
  +		dat += "<BR>Clean Blood: <A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A>"
  +		dat += "<BR>Clean Trash: <A href='?src=\ref[src];operation=trash'>[trash ? "Yes" : "No"]</A>"
  +		dat += "<BR>Exterminate Pests: <A href='?src=\ref[src];operation=pests'>[pests ? "Yes" : "No"]</A>"
  +		dat += "<BR><BR>Patrol Station: <A href='?src=\ref[src];operation=patrol'>[auto_patrol ? "Yes" : "No"]</A>"
   	return dat
   
   /mob/living/simple_animal/bot/cleanbot/Topic(href, href_list)
   	if(..())
   		return 1
  -	switch(href_list["operation"])
  -		if("blood")
  -			blood =!blood
  -			get_targets()
  -			update_controls()
  -
  -/mob/living/simple_animal/bot/cleanbot/UnarmedAttack(atom/A)
  -	if(istype(A,/obj/effect/decal/cleanable))
  -		clean(A)
  -	else
  -		..()
  +	if(href_list["operation"])
  +		switch(href_list["operation"])
  +			if("blood")
  +				blood = !blood
  +			if("pests")
  +				pests = !pests
  +			if("trash")
  +				trash = !trash
  +		get_targets()
  +		update_controls()
  
positive.code: 	model = "Cleanbot"
  	bot_core_type = /obj/machinery/bot_core/cleanbot
  	window_id = "autoclean"
  	window_name = "Automatic Station Cleaner v1.1"
  	pass_flags = PASSMOB
  
  	var/blood = 1
  	var/list/target_types = list()
  	var/obj/effect/decal/cleanable/target
  	var/max_targets = 50 //Maximum number of targets a cleanbot can ignore.
  
negative.code: 			bot_patrol()
  
  	if(target)
  		if(qdeleted(target) || !isturf(target.loc))
  			target = null
  			mode = BOT_IDLE
  			return
  
  		if(!path || path.len == 0) //No path, need a new one
  			//Try to produce a path to the target, and ignore airlocks to which it has access.
  			path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 0, 30, id=access_card)
  