public CBlock getControllerBlockFor(CBlock c, Location l, Material m, Boolean o) {
		for (Iterator<CBlock> i = blocks.iterator(); i.hasNext(); ) {
			CBlock block = i.next();
			if (
					c != block && 
					(m == null || m.equals(block.getType())) &&
					(o == null || o.equals(block.isOn())) &&
					block.hasBlock(l)
					) return block;
		}
		return null;
	}