public void addNewServers(T newServerName, Database<?> db, ConsistentHashTest cht) {
		
		for(int i = 0; i < noOfVirtualNodes; ++i){
			singleHash(newServerName, i);    // adds the server in the circle Map
			
			//create a subMap of the orders which went in successive server which need to be brought to the newly added server
			Long newServerHashValue = hashFunction.getHash((String)newServerName+i);
			//System.out.println("Hash Value for new server " + newServerHashValue);
			
			Long previousLink = ((TreeMap<Long, T>) circle).lowerKey(newServerHashValue);
			Long nextLink = ((TreeMap<Long, T>) circle).higherKey(newServerHashValue);
			
			Long previousServer = (previousLink!=null)?previousLink:circle.lastKey();
			Long nextServer =  (nextLink!=null)? nextLink:circle.firstKey();
			
			@SuppressWarnings({ "rawtypes", "unchecked" })
			SortedMap<Long, Data> subMap = new TreeMap(),temp1,temp2;
			if(newServerHashValue.equals(circle.firstKey())){
				//System.out.println((db.getDataMap()).tailMap(previousServer));
				temp1 = (db.getDataMap()).tailMap(previousServer);
				temp2 = (db.getDataMap()).headMap(newServerHashValue);
				//System.out.println(subMap);
				//System.out.println(temp);

				subMap.putAll(temp1);
				subMap.putAll(temp2);
			}
			else {
				subMap = (db.getDataMap()).subMap(previousServer, newServerHashValue);
			}
			
			//now change the entry for orders in database
			Set<Entry<Long, Data>> set = subMap.entrySet();
			Iterator<Entry<Long, Data>> it = set.iterator();
			//System.out.println(set);
			while(it.hasNext()){
				
				Entry<Long, Data> me = it.next();
				String nextServerName = (String)circle.get(nextServer);
				db.add(me.getKey(), me.getValue().getOrderId(), newServerName);
				//System.out.println("Mapping for OrderID "+ me.getValue().getOrderId()+ " having hashValue " + me.getKey() + " is changed from Server " + nextServerName + " to Server "  + newServerName );
				(cht.getServerDetails()).put((String)newServerName, (cht.getServerDetails()).get(newServerName)+1);  //adds new orders to the new server
				(cht.getServerDetails()).put(nextServerName, (cht.getServerDetails()).get(nextServerName)-1); // removes the order from the successive order
				
			}
			
		}
	}