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: 		if(WEST)
  			setDir(EAST)
  
  //this is called just after the air controller sets up turfs
  /obj/machinery/atmospherics/proc/atmosinit(list/node_connects)
  	if(!node_connects) //for pipes where order of nodes doesn't matter
  		node_connects = getNodeConnects()
  
negative.code: 	return ..()
  	//return QDEL_HINT_FINDREFERENCE
  
  /**
   * Called by the machinery disconnect(), custom for each type
   */
  /obj/machinery/atmospherics/proc/destroy_network()
  	return
  
  /**
   * Called by all machines when on_construction() is called, it builds the network for the node
   */
  /obj/machinery/atmospherics/proc/build_network()
  	return
  
  /**
   * Called on destroy(mostly deconstruction) and when moving nodes around, disconnect the nodes from the network
   * Arguments:
   * * i - is the current iteration of the node, based on the device_type (from 1 to 4)
   */
  /obj/machinery/atmospherics/proc/nullifyNode(i)
  	if(nodes[i])
  		var/obj/machinery/atmospherics/N = nodes[i]
  		N.disconnect(src)
  		nodes[i] = null
  
  /**
   * Getter for node_connects
   *
   * Return a list of the nodes that can connect to other machines, get called by atmosinit()
   */
  /obj/machinery/atmospherics/proc/getNodeConnects()
  	var/list/node_connects = list()
  	node_connects.len = device_type
  