private static void deal_with_ret(Contact this_contact, String field, Object ret_value) {
	// the return value might be a composite type i.e
	// name=X, id=Y
	// in this case we add both the name and id (important for Places)
	
	//System.out.println(ret_value.getClass()+"");
	
	if(unmodlistclass.isInstance(ret_value)){
		//System.out.println("list detected");
		int i=0;
		for(Object o : ((List) ret_value)){
			deal_with_ret(this_contact,field+":"+i,o);
			i++;
		}
	}	
	if(ret_value instanceof Education){
		String school = ((Education) ret_value).getSchool().getName();
		this_contact.put(field+".school", school);
		NamedFacebookType year = ((Education) ret_value).getYear();	
		if(year!=null) this_contact.put(field+".school.year", year.getName());
		int j=0;
		for(EducationClass cl : ((Education) ret_value).getClasses()){
			this_contact.put(field+".school.class:"+j, school);
			j++;
		}
	}
	if(ret_value instanceof NamedFacebookType){
		String name = ((NamedFacebookType) ret_value).getName();
		String id = ((NamedFacebookType) ret_value).getId();
		this_contact.put(field+".name",name);
		this_contact.put(field+".id",id);
	}
	else{
	
	// Otherwise we just add the field name and value	
		
		String value = ret_value.toString();
		this_contact.put(field,value);
	}
}