public void body() {
        // a loop that is looking for internal events only
        Sim_event ev = new Sim_event();
        while (Sim_system.running()) {
            super.sim_get_next(ev);

            // if the simulation finishes then exit the loop
            if (ev.get_tag() == GridSimTags.END_OF_SIMULATION) {
                break;
            }
            processEvent(ev);
        }

        // CHECK for ANY INTERNAL EVENTS WAITING TO BE processed
        while (super.sim_waiting() > 0) {
            super.sim_get_next(ev);
            System.out.println(super.get_name() + ".body(): Ignoring events");
        }
    }