diff --git a/tools/trademarks.php b/tools/trademarks.php
index fe50507..5ebe96e 100644
--- a/tools/trademarks.php
+++ b/tools/trademarks.php
@@ -1,134 +1,2 @@
 <?php
-/*******************************************************************************
- * Copyright (c) 2018 Eclipse Foundation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *******************************************************************************/
-
-/**
- * This script generates a list of trademarks asserted by
- * The Eclipse Foundation. There are two types of trademarks:
- * registered, which are represented by an "R" in a circle (R),
- * and unregistered (or "common law") trademarks, which are
- * represented with a "TM" in superscript.
- *
- * Most of the work is done by the Trademarks class; this
- * script is primarily concerned with presenting the information
- * to the user.
- *
- * @see Trademarks
- */
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/Project.class.php");
-require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php");
-
-$App = new App();
-$Nav = new Nav();
-$Menu = new Menu();
-include($App->getProjectCommon());
-
-$pageTitle 		= "Eclipse Foundation Trademarks";
-$pageKeywords	= "";
-$pageAuthor		= "Wayne Beaton";
-
-ob_start();
-?>
-<div id="maincontent">
-<div id="midcolumn">
-<h1><?= $pageTitle ?></h1>
-
-<p>This document captures a list of trademarks claimed by the Eclipse Foundation. Please read
-our <a href="/legal/logo_guidelines.php">Guidelines for Eclipse Logos &amp; Trademarks</a>.
-
-<p>The Eclipse Foundation considers the names of all open source projects, all downloadable
-software products, the Eclipse logo, and the logos of our brands and projects to be trademarks
-of the The Eclipse Foundation. The Eclipse Foundation owns all of these trademarks on behalf of
-our various communities.</p>
-
-<h2>Registered Trademarks</h2>
-
-<ul>
-	<li>Eclipse&reg; is registered in Canada, and Europe.</li>
-	<li>The Eclipse Logo is registered in Canada, and Europe.</li>
-	<li>EclipseCon&reg; is registered in The United States, and Europe.</li>
-	<li>GlassFish&reg; is registered in Australia, Brazil, Switzerland,
-		Europe, China, Israel, India, Japan, Mexico, Norway, Russia,
-		Singapore, South Korea, and The United States.</li>
-	<li>Jakarta EE&trade; is filed in The United States, Europe, and
-		Canada.</li>
-	<li>Jetty&reg; is registered in The United States.</li>
-	<li>MicroProfile&reg; is registered in The United States, and Europe.</li>
-	<li>PolarSys&reg; is registered in The United States, Europe, and
-		Canada.</li>
-</ul>
-
-<h2>Trademarks</h2>
-
-<ul>
-	<li>Eclipse Summit&trade;</li>
-	<li>Eclipse Foundation Member&trade;</li>
-	<li>Built on Eclipse&trade;, Eclipse Ready&trade;</li>
-	<li>Eclipse Simultaneous Release&trade;, <a
-		href="https://projects.eclipse.org/releases/photon">Eclipse Photon</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/oxygen">Eclipse
-			Oxygen</a>&trade;, <a
-		href="https://projects.eclipse.org/releases/neon">Eclipse Neon</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/mars">Eclipse Mars</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/luna">Eclipse Luna</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/kepler">Eclipse
-			Kepler</a>&trade;, <a
-		href="https://projects.eclipse.org/releases/juno">Eclipse Juno</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/indigo">Eclipse
-			Indigo</a>&trade;, <a
-		href="https://projects.eclipse.org/releases/helios">Eclipse Helios</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/galileo">Eclipse
-			Galileo</a>&trade;, <a
-		href="https://projects.eclipse.org/releases/ganymede">Eclipse
-			Ganymede</a>&trade;, <a
-		href="https://projects.eclipse.org/releases/europa">Eclipse Europa</a>&trade;,
-		<a href="https://projects.eclipse.org/releases/callisto">Eclipse
-			Callisto</a>&trade;
-	</li>
-	<li>Capella IC&trade;, Eclipse Internet of Things&trade;, Eclipse
-		Science&trade;, GEMOC RC&trade;, LocationTech&trade;,
-		OpenMDM&trade;, Papyrus IC&trade;, Eclipse Long Term Support&trade;</li>
-</ul>
-
-
-<h3>Project Names</h3>
-
-<p>All Eclipse open source project names are considered trademarks of The Eclipse Foundation,
-even if they are not listed below. </p>
-
-<ul>
-<?php
-foreach(Project::getAll() as $project) {
-	$trademarks = array();
-	$project->trademarksDo(TRADEMARK_UNREGISTERED, function($term) use (&$trademarks, &$project) {
-		$trademark = $term;
-		if (!$project->isArchived()) $trademark = "<a href=\"{$project->getUrl()}\">{$trademark}</a>";
-		$trademark = "{$trademark}&trade;";
-		$trademarks[] = $trademark;
-	});
-	if ($trademarks) {
-		echo "<li>";
-		echo implode(", ", $trademarks);
-		if (@$_GET['showdates']) echo " (" . date('Y-m-d', $project->getProvisionedDate()), ")";
-		echo "</li>";
-	}
-};
-
-?>
-</ul>
-</div>
-</div>
-
-<?php
-$html = ob_get_contents();
-ob_end_clean();
-$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
-?>
+header('Location: /legal/trademarks.php');
\ No newline at end of file
