public static void registerSlot(Slot slot, String targetSignal, Class<?>[] params) throws IllegalArgumentException, InvalidReturnTypeException
	{
		SignalStructure struct = linker.get(targetSignal);
		if (params == null)
		{
			if (struct.getInvokerParameters() != null)
			{
				throw new IllegalArgumentException("Error: The argument is not expected to be null");
			}
		}
		else
		{
			if (struct.getInvokerParameters().length != params.length)
			{
				throw new IllegalArgumentException
				    ("Error: The entered number of arguments: "
				    + params.length + " does not equal the expected number: "
				    + struct.getInvokerParameters().length);
			}
			for (int i = 0; i < params.length; i++)
			{
				if (struct.getInvokerParameters()[i] != params[i])
				{
					throw new IllegalArgumentException("Error: The entered object of class: " + 
						struct.getInvokerParameters()[i] + " does not match the expected class: "
					    + params[i]);
				}
			}
		}
		
		if (slot.getReturnType() == null)
		{
			if (struct.getReturnType() != null)
			{
				throw new InvalidReturnTypeException("Error: The argument is not expected to be null");
			}
		}
		else
		{
			if (slot.getReturnType() != struct.getReturnType())
			{
				throw new InvalidReturnTypeException("Error: The return type: "
				    + slot.getReturnType() + " does not match the expected return type: "
				    + struct.getReturnType());
			}		
		}
		linker.get(targetSignal).getRegisteredSlots().add(slot);
	}