protected void execute() {
		processPendingRequests();
		Loadable task = null;
		try { // it probably won't hurt much not to synchronize this iterator
			for (Iterator it = taskPool.iterator(); it.hasNext();) {
				if (off || isStopped())
					return;
				task = (AbstractLoadable) it.next();
				if (task == null || !task.isEnabled())
					continue;
				if (task.isCompleted()) {
					remove(task);
				}
				if (task.getInterval() <= 1) {
					task.execute();
				}
				else {
					if (indexOfStep % task.getInterval() == 0)
						task.execute();
				}
			}
		}
		catch (Throwable t) {
			t.printStackTrace();
		}
	}