@EventHandler(priority = EventPriority.LOWEST)
	public void onDispense(BlockDispenseEvent event) {	
		if (event.isCancelled()) return;
		
		// loop through containers
		for(InfiniteContainer dispenser : this.plugin.getContainerDatabase().getContainerList()) {
			Location currentPosition = dispenser.getLocation();
			
			// check
			if (currentPosition.equals(event.getBlock().getLocation())) {
				// stop if there's a cooldown period active
				if (dispenser.hasCooldownPeriod(currentPosition.getWorld().getFullTime())) return; // there are no other dispensers on this position
				
				// get dispenser
				if (event.getBlock ().getState () instanceof Dispenser) {
					Dispenser dispenserBlock = (Dispenser) event.getBlock().getState();

					// set off dispenser
					dispenser.setCooldownPeriod(currentPosition.getWorld().getFullTime());

					// create item stack
					ItemStack newItemStack = event.getItem().clone();
					dispenserBlock.getInventory().addItem(newItemStack);
				} else if (event.getBlock ().getState () instanceof Dropper) {
					Dropper dispenserBlock = (Dropper) event.getBlock().getState();

					// set off dispenser
					dispenser.setCooldownPeriod(currentPosition.getWorld().getFullTime());

					// create item stack
					ItemStack newItemStack = event.getItem().clone();
					dispenserBlock.getInventory().addItem(newItemStack);
				} else
					this.plugin.getLogger ().warning ("The block at location " + currentPosition.getX () + "," + currentPosition.getY () + "," + currentPosition.getZ () + " is not a valid container.");
				
				return; // Tony: Stop here. There is no other entry
			}
		}
	}