anchor.diff:  
   	resistance_flags = FIRE_PROOF
   
  -	var/obj/item/tank = null
  +	/// The stored tank. If this is a path, it gets created into contents at Initialize.
  +	var/obj/item/tank
   
   /obj/structure/tank_holder/Initialize()
   	. = ..()
   	if(tank)
  -		density = TRUE
  -		tank = new tank(src)
  +		after_put_tank(new tank)
   
   /obj/structure/tank_holder/Destroy()
   	if(tank)
  -		tank.forceMove(get_turf(src))
  -		tank = null
  +		QDEL_NULL(tank)
   	return ..()
   
   /obj/structure/tank_holder/CanAllowThrough(atom/movable/mover, turf/target)
  
positive.code: 	if(istype(mover) && mover.throwing)
  		return TRUE
  
  /obj/structure/closet/examine(mob/user)
  	. = ..()
  	. += "<span class='notice'>It is held together by some <b>screws</b>.</span>"
  
  /obj/structure/tank_holder/attackby(obj/item/W, mob/user, params)
  	if(user.a_intent == INTENT_HARM)
  		return ..()
  	if(contents.len != 0)
  		to_chat(user, "<span class='warning'>There's already something in \the [src].</span>")
  		return
  
  	if(!W.tank_holder_icon_state)
  		to_chat(user, "<span class='warning'>\The [W] does not fit in \the [src].</span>")
  		return
  
  	if(!user.transferItemToLoc(W, src))
  		return
  	to_chat(user, "<span class='notice'>You put \the [W] into \the [src].</span>")
  	if(!user.transferItemToLoc(W, src))
  		return
  	after_put_tank(W)
  
  /obj/structure/tank_holder/screwdriver_act(mob/living/user, obj/item/I)
  
negative.code: 	deconstruct(TRUE)
  	return TRUE
  
  /obj/structure/tank_holder/deconstruct(disassembled = TRUE)
  	new /obj/item/stack/rods(get_turf(src), 2)
  	if(tank)
  		tank.forceMove(get_turf(src))
  		tank = null
  	qdel(src)
  
  /obj/structure/tank_holder/attack_paw(mob/user)
  