anchor.diff:  		ui.open()
   		// auto update every Master Controller tick
   		ui.set_auto_update(1)
  +	
  +	//Disregard these, avoid cluttering up the VV window
  +	colorcontainer = new /list(4)
  +	possibledecals = new /list(3)
   
   /obj/machinery/portable_atmospherics/canister/Topic(href, href_list)
   
  
positive.code: 	if (src.destroyed)
  		return
  
  	// this is the data which will be sent to the ui
  	var/data[0]
  	data["name"] = name
  
negative.code: 			list("name" = "\[Air\]", "icon" = "grey-c-2"),
  			list("name" = "\[CAUTION\]", "icon" = "yellow-c-2")
  			)
  		
  		possibledecals = list( //var that stores all possible decals, used by ui
  			list("name" = "Low temperature canister", "icon" = "cold"),
  			list("name" = "High temperature canister", "icon" = "hot"),
  			list("name" = "Plasma containing canister", "icon" = "plasma")
  		)
  
  var/datum/canister_icons/canister_icon_container = new()
  
  /obj/machinery/portable_atmospherics/canister
  	name = "canister"
  	icon = 'icons/obj/atmos.dmi'
  	icon_state = "yellow"
  	density = 1
  	var/health = 100.0
  	flags = CONDUCT
  	
  	var/menu = 0
  	//used by nanoui: 0 = main menu, 1 = relabel
  	
  	var/valve_open = 0
  	var/release_pressure = ONE_ATMOSPHERE
  	
  	var/list/_color //variable that stores colours
  	var/list/decals //list that stores the decals
  	
  	//lists for check_change()
  	var/list/oldcolor
  	var/list/olddecals
  	
  	//passed to the ui to render the color lists
  	var/list/colorcontainer
  	var/list/possibledecals
  	
  	var/can_label = 1
  	var/filled = 0.5
  	pressure_resistance = 7*ONE_ATMOSPHERE
  	var/temperature_resistance = 1000 + T0C
  	volume = 1000
  	use_power = 0
  	var/release_log = ""
  	var/busy = 0
  	var/update_flag = 0
  	
  	New()
  		..()
  		_color = list(
  		"prim" = "yellow",
  		"sec" = "none",
  		"ter" = "none",
  		"quart" = "none")
  		oldcolor = new /list()
  		decals = list("cold" = 0, "hot" = 0, "plasma" = 0)
  		colorcontainer = new /list(4)
  		possibledecals = new /list(3)
  		update_icon()
  		
  /obj/machinery/portable_atmospherics/canister/proc/init_data_vars()
  	//passed to the ui to render the color lists
  	colorcontainer = list(
  		"prim" = list(
  			"options" = canister_icon_container.possiblemaincolor,
  			"name" = "Primary color",
  		),
  		"sec" = list(
  			"options" = canister_icon_container.possibleseccolor,
  			"name" = "Secondary color",
  		),
  		"ter" = list(
  			"options" = canister_icon_container.possibletertcolor,
  			"name" = "Tertiary color",
  		),
  		"quart" = list(
  			"options" = canister_icon_container.possiblequartcolor,
  			"name" = "Quaternary color",
  		)
  	)
  	
  	//var/anycolor used by the nanoUI, 0: no color applied. 1: color applied
  	for(var/C in colorcontainer)
  		if(C == "prim") continue
  		var/list/L = colorcontainer[C]
  		if(!(_color[C]) || (_color[C] == "none"))
  			L.Add(list("anycolor" = 0))
  		else
  			L.Add(list("anycolor" = 1))
  		colorcontainer[C] = L
  	
  	possibledecals = new /list(3)
  	
  	var/i
  	var/list/L = canister_icon_container.possibledecals
  	for(i=1;i<=L.len;i++)
  		var/list/LL = L[i]
  		LL = LL.Copy() //make sure we don't edit the datum list
  		LL.Add(list("active" = decals[LL["icon"]])) //"active" used by nanoUI
  		possibledecals[i] = LL
  
  /obj/machinery/portable_atmospherics/canister/proc/check_change()
  	var/old_flag = update_flag
  