public static Contact createContact(User user){
		
		Contact this_contact = new Contact();
		
		// Find all methods in User that are of the form getX
		for(Method m :User.class.getMethods()){
			String n = m.getName();
			if(n.contains("get") && !n.contains("getClass")){
				String field = n.substring(3);
				try {
					// try and call the found method
					Object ret_value = m.invoke(user);
					// if the return value is not null (or empty) then we will add it
					
					if(ret_value!=null && !ret_value.toString().equals("[]")){
						//System.out.println("adding "+field+" : "+ret_value);
						
						deal_with_ret(this_contact, field, ret_value);
					}
					
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}
		
	/*	System.out.println("=============================");
		for(java.util.Map.Entry<String, String> e : this_contact.entrySet()){
			System.out.println(e.getKey()+"\t\t"+e.getValue());
		}
		*/
		
		
		return this_contact;
	}