diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/AddPluginSiteFrame.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/AddPluginSiteFrame.java
index 3cc9df6..8598553 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/AddPluginSiteFrame.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/AddPluginSiteFrame.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: AddPluginSiteFrame.java,v $
- * Revision           $Revision: 1.2 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:51:52 $
- *               by   $Author: sowen70 $
- * Created on 8 Dec 2006
-package org.apache.taverna.raven.plugins.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForNoticeStartupHook.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForNoticeStartupHook.java
index 33ae38b..48794ff 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForNoticeStartupHook.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForNoticeStartupHook.java
@@ -1,7 +1,3 @@
-/**
- * 
- */
-package org.apache.taverna.raven.plugins.ui;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -18,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.GraphicsEnvironment;
 import java.io.File;
@@ -75,7 +72,7 @@
 	private static Profile profile = ProfileFactory.getInstance().getProfile();
 	private static String version = profile.getVersion();
 
-	private static String BASE_URL = "http://www.mygrid.org.uk/taverna/updates";
+	private static String BASE_URL = "https://taverna.apache.org/updates";
 	private static String SUFFIX = "notice";
 	
 	private static int TIMEOUT = 5000;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
index afd4b69..36533a1 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesDialog.java
@@ -1,4 +1,3 @@
-package org.apache.taverna.raven.plugins.ui;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
@@ -42,8 +42,6 @@
 /**
  * Dialog that lets user know that there are updates available.
  * 
- * @author Alex Nenadic
- *
  */
 @SuppressWarnings("serial")
 public class CheckForUpdatesDialog extends HelpEnabledDialog {
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
index 75d8424..830d018 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/CheckForUpdatesStartupHook.java
@@ -1,4 +1,3 @@
-package org.apache.taverna.raven.plugins.ui;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.io.File;
 import java.util.Date;
@@ -98,7 +98,7 @@
 	@Override
 	public void handleEvent(Event event) {
 		// TODO: Handle Plug
-		if (event.getTopic().equals(PluginManager.UPDATES_AVAILABLE) {
+		if (event.getTopic().equals(PluginManager.UPDATES_AVAILABLE)) {
 			CheckForUpdatesDialog dialog = new CheckForUpdatesDialog();
 			dialog.setVisible(true);
 		}
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
index d31ea5e..efd13a5 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListCellRenderer.java
@@ -1,4 +1,3 @@
-package org.apache.taverna.raven.plugins.ui;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.Color;
 import java.awt.Component;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
index ef770b9..9d6c99d 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginListModel.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: PluginListModel.java,v $
- * Revision           $Revision: 1.2 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:51:52 $
- *               by   $Author: sowen70 $
- * Created on 28 Nov 2006
-package org.apache.taverna.raven.plugins.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import javax.swing.AbstractListModel;
 
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
index b171d52..55ca4a5 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginManagerFrame.java
@@ -1,4 +1,3 @@
-package org.apache.taverna.raven.plugins.ui;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.Color;
 import java.awt.Frame;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginRepositoryListener.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginRepositoryListener.java
index 3f6e910..178b1a2 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginRepositoryListener.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginRepositoryListener.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: PluginRepositoryListener.java,v $
- * Revision           $Revision: 1.2 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:51:52 $
- *               by   $Author: sowen70 $
- * Created on 7 Dec 2006
-package org.apache.taverna.raven.plugins.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import javax.swing.JProgressBar;
 import javax.swing.SwingUtilities;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
index 1c3c4a8..5c9aebf 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/PluginSiteFrame.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: PluginSiteFrame.java,v $
- * Revision           $Revision: 1.3 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/10/27 13:39:56 $
- *               by   $Author: stain $
- * Created on 29 Nov 2006
-package org.apache.taverna.raven.plugins.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.Color;
 import java.awt.Font;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
index 537abbe..f083d84 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/plugins/ui/UpdatesAvailableIcon.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: UpdatesAvailableIcon.java,v $
- * Revision           $Revision: 1.5 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/12/01 12:32:40 $
- *               by   $Author: alaninmcr $
- * Created on 12 Dec 2006
-package org.apache.taverna.raven.plugins.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.plugins.ui;
 
 import java.awt.Component;
 import java.awt.event.MouseAdapter;
@@ -51,8 +38,6 @@
  * Also acts as a pluginmanager listener to refresh itself whenever a new plugin
  * is added.
  *
- * @author Stuart Owen
- *
  */
 
 @SuppressWarnings("serial")
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionCellRenderer.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionCellRenderer.java
index 91d51cf..1272baf 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionCellRenderer.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionCellRenderer.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: ProfileVersionCellRenderer.java,v $
- * Revision           $Revision: 1.2 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:52:06 $
- *               by   $Author: sowen70 $
- * Created on 16 Jan 2007
-package org.apache.taverna.raven.profile.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.profile.ui;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListFrame.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListFrame.java
index 622ddaa..4cf427a 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListFrame.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListFrame.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: ProfileVersionListFrame.java,v $
- * Revision           $Revision: 1.3 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:52:06 $
- *               by   $Author: sowen70 $
- * Created on 16 Jan 2007
-package org.apache.taverna.raven.profile.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.profile.ui;
 
 import java.awt.Frame;
 import java.awt.GridBagConstraints;
diff --git a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListModel.java b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListModel.java
index 23d2754..1af754e 100644
--- a/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListModel.java
+++ b/taverna-plugins-gui/src/main/java/org/apache/taverna/raven/profile/ui/ProfileVersionListModel.java
@@ -1,18 +1,4 @@
 /*
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA.
- *
- * Source code information
- * -----------------------
- * Filename           $RCSfile: ProfileVersionListModel.java,v $
- * Revision           $Revision: 1.3 $
- * Release status     $State: Exp $
- * Last modified on   $Date: 2008/09/04 14:52:06 $
- *               by   $Author: sowen70 $
- * Created on 16 Jan 2007
-package org.apache.taverna.raven.profile.ui;
-/*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -28,6 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.taverna.raven.profile.ui;
 
 import java.net.MalformedURLException;
 import java.net.URL;
