anchor.diff:  
   	playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
   	user.visible_message("<span class='notice'>[user] starts [w_engraving] a message into [T].</span>", "You start [w_engraving] a message into [T].", "<span class='italics'>You hear a [w_chipping] sound.</span>")
  -	if(do_after(user, tool_speed, target=T))
  -		if(!locate(/obj/structure/chisel_message in T) && spend_use())
  +	if(can_use() && do_after(user, tool_speed, target=T) && can_use())
  +		if(!locate(/obj/structure/chisel_message in T))
   			user << "You [w_engrave] a message into [T]."
   			playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
   			var/obj/structure/chisel_message/M = new(T)
   			M.register(user, message)
  -
  -/obj/item/soapstone/proc/spend_use(mob/user)
  +			remove_use()
  +
  +/obj/item/soapstone/proc/can_use()
  +	if(remaining_uses == -1 || remaining_uses >= 0)
  +		. = TRUE
  +	else
  +		. = FALSE
  +
  +/obj/item/soapstone/proc/remove_use()
  +	if(remaining_uses <= 0)
  +		// -1 == unlimited, 0 == empty
  +		return
  +
  +	remaining_uses--
   	if(!remaining_uses)
  -		. = FALSE
  -	else
  -		remaining_uses--
  -		if(!remaining_uses)
  -			name = "[w_dull] [name]"
  -		. = TRUE
  +		non_dull_name = name
  +		name = "[w_dull] [name]"
  +
  +/obj/item/soapstone/proc/refund_use()
  +	if(remaining_uses == -1)
  +		return
  +	var/was_dull = remaining_uses
  +	remaining_uses++
  +
  +	if(was_dull)
  +		name = non_dull_name
   
   /* Persistent engraved messages, etched onto the station turfs to serve
      as instructions and/or memes for the next generation of spessmen.
  
positive.code: 	var/tool_speed = 50
  	var/remaining_uses = 3
  
  	var/w_engrave = "engrave"
  	var/w_engraving = "engraving"
  	var/w_chipping = "chipping"
  
negative.code:    Limited in location to station_z only. Can be smashed out or exploded,
     but only permamently removed with the librarian's soapstone.
  */
  
  /obj/item/soapstone/infinite
  	remaining_uses = -1
  
  /proc/good_chisel_message_location(turf/T)
  	if(!T)
  