anchor.diff:  
   /obj/machinery/chem_dispenser/constructable/RefreshParts()
   	var/time = 0
  -	var/temp_energy = 0
   	var/i
  +	for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
  +		cell = P
   	for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
  -		temp_energy += M.rating
  -	temp_energy--
  -	max_energy = temp_energy * 5  //max energy = (bin1.rating + bin2.rating - 1) * 5, 5 on lowest 25 on highest
  +		time += M.rating
   	for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
   		time += C.rating
  -	for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
  -		time += round(P.maxcharge, 10000) / 10000
   	recharge_delay /= time/2         //delay between recharges, double the usual time on lowest 50% less than usual on highest
   	for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
   		for(i=1, i<=M.rating, i++)
  
positive.code: 	idle_power_usage = 40
  	interact_offline = 1
  	resistance_flags = FIRE_PROOF | ACID_PROOF
  	var/energy = 100
  	var/max_energy = 100
  	var/amount = 30
  	var/recharged = 0
  	var/recharge_delay = 5
  
negative.code: 			if(beaker && dispensable_reagents.Find(reagent))
  				var/datum/reagents/R = beaker.reagents
  				var/free = R.maximum_volume - R.total_volume
  				var/actual = min(amount, (cell.charge * powerefficiency)*10, free)
  
  				R.add_reagent(reagent, actual)
  				cell.use((actual / 10) / powerefficiency)
  				. = TRUE
  		if("remove")
  			var/amount = text2num(params["amount"])
  