* @return the ID for the meeting
	 * @throws IllegalArgumentException if the meeting is set for a time in the past,
	 * of if any contact is unknown / non-existent
	 */
	public int addFutureMeeting(Set<Contact> contacts, Calendar date) throws IllegalArgumentException
	{
		now.setTime(new Date());
		if(date.before(now))
		{
			throw new IllegalArgumentException("date should not be in the past");
		}
		
		for(Contact contact : contacts)
		{
			if(!isContactValid(contact))
			{
				throw new IllegalArgumentException("contact id " + contact.getId() + " is invalid");
			}
		}
		
		MeetingImpl fm = new FutureMeetingImpl(contacts, date);
		meetingList.add(fm);
		
		meetingSet.add(fm);
		
		return fm.getId();
	}