anchor.diff:  		return TRUE
   	return FALSE
   
  +/**
  + * Called on construction and when expanding the datum_pipeline, returns the nodes of the device
  + */
   /obj/machinery/atmospherics/proc/pipeline_expansion()
   	return nodes
   
  +/**
  + * Set the initial directions of the device (NORTH || SOUTH || EAST || WEST), called on New()
  + */
   /obj/machinery/atmospherics/proc/SetInitDirections()
   	return
   
  +/**
  + * Getter of initial directions
  + */
   /obj/machinery/atmospherics/proc/GetInitDirections()
   	return initialize_directions
   
  +/**
  + * Called by addMember() in datum_pipeline.dm, returns the parent network the device is connected to
  + */
   /obj/machinery/atmospherics/proc/returnPipenet()
   	return
   
  +/**
  + * Called by addMachineryMember() in datum_pipeline.dm, returns the gas_mixture of the network the device is connected to
  + */
   /obj/machinery/atmospherics/proc/returnPipenetAir()
   	return
   
  +/**
  + * Called by build_pipeline() and addMember() in datum_pipeline.dm, set the network the device is connected to, to the datum pipeline it has reference
  + */
   /obj/machinery/atmospherics/proc/setPipenet()
   	return
   
  +/**
  + * Similar to setPipenet() but instead of setting a network to a pipeline, it replaces the old pipeline with a new one, called by Merge() in datum_pipeline.dm
  + */
   /obj/machinery/atmospherics/proc/replacePipenet()
   	return
   
  +/**
  + * Disconnects the nodes
  + *
  + * Called by nullifyNode(), it disconnects two nodes by removing the reference id from the node itself that called this proc
  + * Arguments:
  + * * obj/machinery/atmospherics/reference - the machinery we are removing from the node connection
  + */
   /obj/machinery/atmospherics/proc/disconnect(obj/machinery/atmospherics/reference)
   	if(istype(reference, /obj/machinery/atmospherics/pipe))
   		var/obj/machinery/atmospherics/pipe/P = reference
  
positive.code: 	resistance_flags = FIRE_PROOF
  	max_integrity = 200
  	obj_flags = CAN_BE_HIT | ON_BLUEPRINTS
  	var/can_unwrench = 0
  	var/initialize_directions = 0
  	var/pipe_color
  	var/piping_layer = PIPING_LAYER_DEFAULT
  	var/pipe_flags = NONE
  
  	///This only works on pipes, because they have 1000 subtypes wich need to be visible and invisible under tiles, so we track this here
  	var/hide = TRUE
  
  	var/static/list/iconsetids = list()
  	var/static/list/pipeimages = list()
  
  	var/image/pipe_vision_img = null
  
  	var/device_type = 0
  	var/list/obj/machinery/atmospherics/nodes
  
  	var/construction_type
  	var/pipe_state //icon_state as a pipe item
  	var/on = FALSE
  
  	/// Whether it can be painted
  	var/paintable = FALSE
  
  /obj/machinery/atmospherics/examine(mob/user)
  
negative.code: 				break
  	return node_connects
  
  /**
   * Setter for device direction
   *
   * Set the direction to either SOUTH or WEST if the pipe_flag is set to PIPING_CARDINAL_AUTONORMALIZE, called in New(), used mostly by layer manifolds
   */
  /obj/machinery/atmospherics/proc/normalize_cardinal_directions()
  	switch(dir)
  		if(SOUTH)
  