anchor.diff:  		user << "<span class='notice'>You wet [O] in [src].</span>"
   		playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
   
  -	var/turf/location = user.loc
  -	if(!isturf(location)) return
  -
   	var/obj/item/I = O
  -	if(!I || !istype(I,/obj/item)) return
  -
  -	usr << "<span class='notice'>You start washing [I]...</span>"
  -
  +	if(!I || !istype(I))
  +		return
  +	if(I.flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand.
  +		return
  +
  +	user << "<span class='notice'>You start washing [I]...</span>"
   	busy = 1
  -	sleep(40)
  +	if(!do_after(user, 40, target = src))
  +		busy = 0
  +		return
   	busy = 0
  -
  -	if(user.loc != location) return				//User has moved
  -	if(!I) return 								//Item's been destroyed while washing
  -	if(user.get_active_hand() != I) return		//Person has switched hands or the item in their hands
  -
   	O.clean_blood()
  -	user.visible_message( \
  -		"[user] washes [I] using [src].", \
  -		"<span class='notice'>You wash [I] using [src].</span>")
  +	user.visible_message("<span class='notice'>[user] washes [I] using [src].</span>", \
  +						"<span class='notice'>You wash [I] using [src].</span>")
   
   
   /obj/structure/sink/kitchen
  
positive.code: 	var/busy = 0 	//Something's being washed at the moment
  
  
  /obj/structure/sink/attack_hand(mob/user)
  	if(isrobot(user) || isAI(user))
  		return
  	if(!Adjacent(user))
  		return
  
negative.code: 	if(busy)
  		user << "<span class='notice'>Someone's already washing here.</span>"
  		return
  	var/selected_area = parse_zone(user.zone_sel.selecting)
  	var/washing_face = 0
  	if(selected_area in list("head", "mouth", "eyes"))
  		washing_face = 1
  	user.visible_message("<span class='notice'>[user] start washing their [washing_face ? "face" : "hands"]...</span>", \
  						"<span class='notice'>You start washing your [washing_face ? "face" : "hands"]...</span>")
  	busy = 1
  
  	if(!do_after(user, 40, target = src))
  		busy = 0
  		return
  
  	busy = 0
  
  	user.visible_message("<span class='notice'>[user] washes their [washing_face ? "face" : "hands"] using [src].</span>", \
  						"<span class='notice'>You wash your [washing_face ? "face" : "hands"] using [src].</span>")
  	if(washing_face)
  		if(ishuman(user))
  			var/mob/living/carbon/human/H = user
  			H.lip_style = null //Washes off lipstick
  			H.lip_color = initial(H.lip_color)
  			H.regenerate_icons()
  		user.drowsyness -= rand(2,3) //Washing your face wakes you up if you're falling asleep
  		user.drowsyness = Clamp(user.drowsyness, 0, INFINITY)
  	else
  		user.clean_blood()
  
  
  /obj/structure/sink/attackby(obj/item/O, mob/user, params)
  