public void serve()
	{
		BufferedReader in = null;
		try
		{
			in = new BufferedReader(new InputStreamReader(new FileInputStream(this.getInputFile()), this.getCharset()));
		}
		// TODO register an error handler
		catch (Exception e)
		{
			return;
		}

		// String destPath = inputFile.getAbsolutePath().substring(0,
		// inputFile.getAbsolutePath().lastIndexOf('.')) +destSuffix;
		PrintStream out = null;
		try
		{
			out = new PrintStream(new FileOutputStream(this.getOutputFile()));
		}
		catch (Exception e)
		{
			return;
		}

		while (true)
		{
			String line = null;
			try
			{
				line = in.readLine();
			}
			catch (IOException e)
			{
				// no use to do something special here, just let line remain
				// null
			}
			if (line == null)
				break;

			boolean isTokenLine = false;

			for (String token : this.tokens)
				if ((line.trim().startsWith(token)))
					isTokenLine = true;

			if (!isTokenLine)
				out.println(line);
		}

		try
		{
			in.close();
			out.close();
		}
		catch (IOException e)
		{
			// ignore failure on close operations
		}
	}