public boolean completionChecker() {
		/* this guy returns if the program is complete */
		//bitMap ..check all bitsets are set 
		//for all the peers int the list 
		int count_peers = 0;
		Iterator itr = this.cMap.entrySet().iterator();
		while(itr.hasNext()) {			   			  
			Map.Entry entry = (Map.Entry) itr.next();
			String p = (String)entry.getKey();
			BitSet tempBS = this.bitMap.get(p);
			if(tempBS == null) {
				return false;
			}
			if(tempBS.nextClearBit(0) >= TotalPieces) {
				count_peers++;
			} else {

			}
		}
		
		if(count_peers == cMap.size()) {
			try {
				Thread.sleep(2000);
			} catch(InterruptedException ex) {
				Thread.currentThread().interrupt();
			}
			done = true;
			System.out.println("count_peers == cMap.size()" + count_peers  + "    " +cMap.size());
			Iterator vecItr = this.ConnectionThread.iterator();
			try {
				for (Connection c : peerProcess.cMap.values()) {					
					(c.getOutputStream()).close();
					(c.getInputStream()).close();
				} 
			} catch (Exception e) {
				System.out.println("!!!!!!!!!!!!!!!!!!!!1          20");
			}

			while(vecItr.hasNext()) {				
				Thread temp = (Thread) vecItr.next();
				temp.stop();
			}
			return true;
		}
		return false;
	}