'<pagebreak>',
                  '&', quotemeta("\n"),
                  '"', '\$', '%', '_', '#', quotemeta('^'),
-                 '{', '}',  '<', '>', '£', "\r"
+                 '{', '}',  '<', '>', '£', "\r", '±', '\xe1',
                  ],
      quotemeta("\\") => '\\textbackslash ',
      '<pagebreak>'   => '',
      '>'             => '$>$',
      '£'             => '\pounds ',
      "\r"            => "",
+     '±'             => '$\pm$',
+     '\xe1'          => '$\bullet$',
      quotemeta('^')  => '\^\\',
      quotemeta("\n") => '\newline '
      );
     $variable =~ s/\$\<\$${key}\$\>\$(.*?)\$<\$\/${key}\$>\$/\\${new}\{$1\}/gi;
   }
 
+  $variable =~ s/[\x00-\x1f]//g;
+
   return $variable;
 }
 
       $sum += $form->parse_amount($self->{"myconfig"},
                                   $form->{"linetotal"}->[$i]);
     }
-
+    
+    $form->{"cumulatelinetotal"}[$i] = $form->format_amount($self->{"myconfig"}, $sum, 2);
+    
     my $new_text = $self->parse_block($text, (@indices, $i));
     return undef unless (defined($new_text));
     $new_contents .= $start_tag . $new_text . $end_tag;
 sub get_mime_type() {
   my ($self) = @_;
 
-  if ($self->{"form"}->{"format"} =~ /xml/i) {
+  if ($self->{"form"}->{"format"} =~ /elsterwinston/i) {
     return "application/xml ";
+  } elsif ($self->{"form"}->{"format"} =~ /elstertaxbird/i) {
+    return "application/x-taxbird";
   } else {
-    return "text/xml";
+    return "text";
   }
 }
 
 sub uses_temp_file {
-#  my ($self) = @_;
-  # no tempfile needet for XML Output
+  # tempfile needet for XML Output
   return 1;
 }