public void imc_process_call_outs()
	{
		if (call_outs.size() < 1)
		{
			return;
		}

		for (int i = 0; i < call_outs.size(); i++)
		{
			final Vector call_out = (Vector) call_outs.get(i);
			final String fun = (String) call_out.elementAt(0);
			final long hbeat = ( (Long) call_out.elementAt(1)).longValue();
			final Object param = call_out.elementAt(2);

			if (hbeat == HeartBeat)
			{
				final Object o = this;
				final Class<?> cl = o.getClass();
				final java.lang.reflect.Method funcs[] = cl.getMethods();
				if (funcs.length > 1)
				{
					for (final Method func : funcs)
					{
						final String m_name = func.getName();
						if (m_name.equals(fun))
						{
							try
							{
								func.invoke(o, new Object[] {param});
							}
							catch (final Exception e)
							{
								tracef(0,
									   "imc: call_out failed with error: "
									   + e.toString());
							 }
						}
					}
				}
				call_outs.remove(i);
				i--;
			}
		}
	}