public static void writeEvent(PrintWriter pw, CalendarEvent evt) {
		pw.println("BEGIN:VCALENDAR");
		pw.println("CALSCALE:GREGORIAN");
		pw.println("VERSION:2.0");
		pw.println("METHOD:PUBLISH");
		pw.println("BEGIN:VEVENT");
		pw.printf("UID: %s%n", evt.getUuid());
		Calendar c = Calendar.getInstance();
		pw.printf("LAST-MODIFIED:%s%n", dateString(c));
		pw.printf("DTSTAMP:%s%n", dateString(c));
		pw.printf("DTSTART:%s%n", 
				dateString(evt.getYear(), evt.getMonth(), evt.getDay(), evt.getStartHour(), evt.getStartMinute()));
		pw.printf("DTEND:%s%n", 
				dateString(evt.getYear(), evt.getMonth(), evt.getDay(), evt.getEndHour(), evt.getEndMinute()));
		pw.println("TRANSP:OPAQUE");
		pw.printf("X-MICROSOFT-CDO-BUSYSTATUS: %s%n", evt.getShowStatus());
		pw.println("SEQUENCE:0");
		pw.println("DESCRIPTION: " + evt.getDescription());
		pw.println("SUMMARY: " + evt.getSummary());
		pw.println("LOCATION: " + evt.getLocation());
		pw.println("CLASS:PUBLIC");
		if (evt.getOrganizer() != null) {
			Person o = evt.getOrganizer();
			pw.printf(
			"ORGANIZER;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=%s:MAILTO:%s%n",
			o.getFullName(), o.getEmail());
		}
		if (evt.getAttendees() != null) {
			for (Person attendee : evt.getAttendees()) {
				pw.printf(
				"ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=%s:MAILTO:%s%n",
				attendee.getFullName(), attendee.getEmail());
			}
		}
		pw.println("END:VEVENT");
		pw.println("END:VCALENDAR");
	}