anchor.diff:   * Dynamic pool initialization, mostly used on setupPool()
    *
    * @args
  - * A, list of object types.
  + * A, list of object types
    *
  - * Example call: initializePool(new /list(/obj/item/weapon/shard))
  + * Example call: initializePool(list(/obj/item/weapon/shard))
    */
  -/proc/initializePool(list/A)
  -	var/list/Object = new /list()
  +/proc/initializePool(const/A)
  +	if (istype(A, /list) == 0)
  +		return
   
  -	for (var/i = 1 to A.len)
  -		#if DEBUG_OBJECT_POOL
  -		world << "DEBUG_OBJECT_POOL: initializing [A[i]]"
  -		#endif
  -		for (var/j = 1 to STARTING_OBJECT_POOL_COUNT)
  -			var/honk = A[j]
  -			Object = Object + new honk()
  +	var/list/Objects
   
  -		masterPool[A[i]] = Object
  +	for (var/objectType in A)
  +		Objects = list()
  +
  +		for (var/i = 1 to STARTING_OBJECT_POOL_COUNT)
  +			Objects += new objectType()
  +
  +		// Don't make reference.
  +		masterPool[objectType] = Objects.Copy()
   
   #undef STARTING_OBJECT_POOL_COUNT
   
   /*
    * @args
  - * A, type not object instance
  - * B, loc
  + * A, object type
  + * B, location to spawn
  + *
  + * @return
  + * -1, if B is not a location
    *
    * Example call: getFromPool(/obj/item/weapon/shard, loc)
    */
  -/proc/getFromPool(A, B)
  +/proc/getFromPool(const/A, const/B)
  +	if (isloc(B) == 0)
  +		return -1
  +
   	if (isnull(masterPool[A]))
   		#if DEBUG_OBJECT_POOL
   		world << "DEBUG_OBJECT_POOL: new proc has been called ([A])."
   		#endif
  +
   		return new A(B)
   
   	var/atom/movable/Object = masterPool[A][1]
  -	masterPool[A] = masterPool[A] - Object
  -	Object.loc = B
  -	. = Object
  +	masterPool[A] -= Object
   
   	#if DEBUG_OBJECT_POOL
   	world << "DEBUG_OBJECT_POOL: getFromPool([A]) [length(masterPool[A])]"
  
positive.code:  * If this file is named experimental,
   * well treat this implementation as experimental experimental (redundancy intended).
   *
   * REMINDER TO MYSELF: Ignore fireaxe deletion for now.
   */
  
  #define DEBUG_OBJECT_POOL 0
  #define STARTING_OBJECT_POOL_COUNT 20
  
  var/list/masterPool
  
negative.code: /proc/setupPool()
  	world << "\red \b Creating Object Pool..."
  
  	masterPool = list()
  
  	initializePool(list(\
  		/obj/item/weapon/shard,\
  		/obj/item/weapon/shard/plasma,\
  		/obj/structure/grille))
  