function output($format, $target = "html")
 {
     preg_match_all("/(#@?_?[A-Za-z0-9]+)({([^}]+)})?/", $format, $placeholders);
     $output_string = $format;
     $replaces = array();
     foreach ($placeholders[1] as $key => $result) {
         $replace = '';
         $full_result = $placeholders[0][$key];
         switch ($result) {
             case '#_BOOKINGTICKETNAME':
             case '#_BOOKINGTICKETDESCRIPTION':
             case '#_BOOKINGTICKETPRICEWITHTAX':
             case '#_BOOKINGTICKETPRICEWITHOUTTAX':
             case '#_BOOKINGTICKETTAX':
             case '#_BOOKINGTICKETPRICE':
                 $replace = '';
                 //this booking object doesn't have 'tickets', all these become defunct
                 break;
             case '#_BOOKINGTICKETS':
                 //change how this placeholder displays, for backwards compatability
                 ob_start();
                 emp_locate_template('placeholders/bookingtickets-multiple.php', true, array('EM_Multiple_Booking' => $this));
                 $replace = ob_get_clean();
                 break;
             case '#_BOOKINGSUMMARY':
                 //change how this placeholder displays, for backwards compatability
                 ob_start();
                 emp_locate_template('placeholders/bookingsummary-multiple.php', true, array('EM_Multiple_Booking' => $this));
                 $replace = ob_get_clean();
                 break;
             case '#_BOOKINGATTENDEES':
                 //change how this placeholder displays, for backwards compatability
                 ob_start();
                 emp_locate_template('placeholders/bookingattendees-multiple.php', true, array('EM_Multiple_Booking' => $this));
                 $replace = ob_get_clean();
                 break;
             default:
                 $replace = $full_result;
                 break;
         }
         $replaces[$full_result] = apply_filters('em_multiple_booking_output_placeholder', $replace, $this, $full_result, $target);
     }
     //sort out replacements so that during replacements shorter placeholders don't overwrite longer varieties.
     krsort($replaces);
     foreach ($replaces as $full_result => $replacement) {
         $output_string = str_replace($full_result, $replacement, $output_string);
     }
     $output_string = parent::output($output_string, $target);
     //run through original booking object for commonly used fields
     return apply_filters('em_multiple_booking_output', $output_string, $this, $format, $target);
 }