public void run(){
            

            // If we have a list of replies from a previous repetition
            // calculate suspected processes
	    if (started) {
		Utils.out(p.pid,"timer tick");
		for(int i = 0; i <= p.getNo(); i++) {
		    if (i != 0 && i != p.pid) {
			if (successfulReplies[i-1] <= 0 && !suspectedProcesses[i-1] ) {
			    Utils.out(p.pid,"Process " + i + " is now suspected " );
			    suspectedProcesses[i-1] = true;
			    getLeader();
			}
			//clear the slot for next time
			
			if (successfulReplies[i-1] > 0 ){
			    successfulReplies[i-1] --;
			}
			
		    }
		}
		Utils.out(p.pid,"timer tick ended");
	    }
            
	    started = true;

	    p.broadcast(Utils.HEARTBEAT,""+ System.currentTimeMillis());

	}