anchor.diff:  
   /obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params)
   	if(istype(W, /obj/item/pen))
  -		//if a pen is used on the sack, dialogue to change its design appears
  -		if(contents.len)
  -			to_chat(user, "<span class='warning'>You can't modify [src] with items still inside!</span>")
  -			return
  -		var/list/designs = list(NODESIGN, NANOTRASEN, SYNDI, HEART, SMILEY, "Cancel")
  -		var/switchDesign = input("Select a Design:", "Paper Sack Design", designs[1]) in sortList(designs)
  -		if(get_dist(usr, src) > 1)
  -			to_chat(usr, "<span class='warning'>You have moved too far away!</span>")
  -			return
  -		var/choice = designs.Find(switchDesign)
  -		if(design == designs[choice] || designs[choice] == "Cancel")
  -			return 0
  -		to_chat(usr, "<span class='notice'>You make some modifications to [src] using your pen.</span>")
  -		design = designs[choice]
  -		icon_state = "paperbag_[design]"
  -		item_state = "paperbag_[design]"
  -		switch(designs[choice])
  -			if(NODESIGN)
  +		if(!check_menu(user))
  +			return FALSE
  +		var/choice = show_radial_menu(user, src , papersack_icons, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 42, require_near = TRUE)
  +		if(!check_menu(user))
  +			return FALSE
  +		if(design == choice)
  +			return FALSE
  +		switch(choice)
  +			if("None")
   				desc = "A sack neatly crafted out of paper."
  -			if(NANOTRASEN)
  +			if("NanotrasenStandard")
   				desc = "A standard Nanotrasen paper lunch sack for loyal employees on the go."
  -			if(SYNDI)
  +			if("SyndiSnacks")
   				desc = "The design on this paper sack is a remnant of the notorious 'SyndieSnacks' program."
  -			if(HEART)
  +			if("Heart")
   				desc = "A paper sack with a heart etched onto the side."
  -			if(SMILEY)
  +			if("SmileyFace")
   				desc = "A paper sack with a crude smile etched onto the side."
  -		return 0
  +			else
  +				return FALSE
  +		to_chat(user, "<span class='notice'>You make some modifications to [src] using your pen.</span>")
  +		design = choice
  +		icon_state = "paperbag_[choice]"
  +		item_state = "paperbag_[choice]"
  +		return FALSE
   	else if(W.get_sharpness())
   		if(!contents.len)
   			if(item_state == "paperbag_None")
   				user.show_message("<span class='notice'>You cut eyeholes into [src].</span>", MSG_VISUAL)
   				new /obj/item/clothing/head/papersack(user.loc)
   				qdel(src)
  -				return 0
  +				return FALSE
   			else if(item_state == "paperbag_SmileyFace")
   				user.show_message("<span class='notice'>You cut eyeholes into [src] and modify the design.</span>", MSG_VISUAL)
   				new /obj/item/clothing/head/papersack/smiley(user.loc)
   				qdel(src)
  -				return 0
  +				return FALSE
   	return ..()
  +
  +/**
  +  * check_menu: Checks if we are allowed to interact with a radial menu
  +  *
  +  * Arguments:
  +  * * user The mob interacting with a menu
  +  */
  +/obj/item/storage/box/papersack/proc/check_menu(mob/user)
  +	if(!istype(user))
  +		return FALSE
  +	if(user.incapacitated() || !user.Adjacent(src))
  +		return FALSE
  +	if(contents.len)
  +		to_chat(user, "<span class='warning'>You can't modify [src] with items still inside!</span>")
  +		return FALSE
  +	return TRUE
   
   /obj/item/storage/box/papersack/meat
   	desc = "It's slightly moist and smells like a slaughterhouse."
  
positive.code: 	illustration = null
  	resistance_flags = FLAMMABLE
  	foldable = null
  	var/design = NODESIGN
  
  /obj/item/storage/box/papersack/update_icon_state()
  	if(contents.len == 0)
  
negative.code: 		var/randomFigure = pick(subtypesof(/obj/item/toy/figure))
  		new randomFigure(src)
  
  /obj/item/storage/box/papersack
  	name = "paper sack"
  	desc = "A sack neatly crafted out of paper."
  