anchor.diff:  		var/t = ""
   		do
   			t = html_encode(input(usr, "Please paste the entire song, formatted:", text("[]", name), t)  as message)
  -			if(!in_range(instrumentObj, usr))
  +			if(!usr.canUseTopic(instrumentObj, BE_CLOSE, FALSE, NO_TK))
   				return
   
   			if(lentext(t) >= MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
   				var/cont = input(usr, "Your message is too long! Would you like to continue editing it?", "", "yes") in list("yes", "no")
  +				if(!usr.canUseTopic(instrumentObj, BE_CLOSE, FALSE, NO_TK))
  +					return
   				if(cont == "no")
   					break
   		while(lentext(t) > MUSIC_MAXLINES * MUSIC_MAXLINECHARS)
  
positive.code: 
  	else if(href_list["newline"])
  		var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null)
  		if(!newline || !in_range(instrumentObj, usr))
  			return
  		if(lines.len > MUSIC_MAXLINES)
  			return
  
negative.code: 
  /datum/song/proc/shouldStopPlaying(mob/user)
  	if(instrumentObj)
  		if(!user.canUseTopic(instrumentObj, BE_CLOSE, FALSE, NO_TK))
  			return TRUE
  		return !instrumentObj.anchored		// add special cases to stop in subclasses
  	else
  