Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/HTMLLogParser.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/HTMLLogParser.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/HTMLLogParser.java	(revision 961)
@@ -44,6 +44,6 @@
 import de.ugoe.cs.autoquest.eventcore.guimodel.ITextArea;
 import de.ugoe.cs.autoquest.eventcore.guimodel.ITextField;
-import de.ugoe.cs.autoquest.plugin.html.eventcore.HTMLEvent;
-import de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElementSpec;
+import de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLPageElementSpec;
+import de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLPageSpec;
 import de.ugoe.cs.util.FileTools;
 import de.ugoe.cs.util.console.Console;
@@ -257,4 +257,9 @@
         List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
         
+        HTMLPageSpec page = new HTMLPageSpec(url, title);
+        
+        guiElementPath.add(page.getServer());
+        guiElementPath.add(page);
+        
         for (String pathElement : pathElements) {
             if ((pathElement != null) && (!"".equals(pathElement))) {            
@@ -274,5 +279,5 @@
                 }
 
-                guiElementPath.add(new HTMLGUIElementSpec(url, title, type, id, index));
+                guiElementPath.add(new HTMLPageElementSpec(page, type, id, index));
             }
         }
@@ -352,5 +357,10 @@
                               String       agent)
     {
-        return new HTMLEvent(clientId, interaction, guiElement, timestamp, agent);
+        Event event = new Event(interaction, guiElement);
+        event.setParameter("clientId", clientId);
+        event.setParameter("timestamp", Long.toString(timestamp));
+        event.setParameter("agent", agent);
+        
+        return event;
     }
 
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLButton.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLButton.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLButton.java	(revision 961)
@@ -24,5 +24,5 @@
  * @author Patrick Harms
  */
-public class HTMLButton extends HTMLGUIElement implements IButton {
+public class HTMLButton extends HTMLPageElement implements IButton {
 
     /**  */
@@ -37,5 +37,5 @@
      * @param parent
      */
-    public HTMLButton(HTMLGUIElementSpec specification, HTMLGUIElement parent) {
+    public HTMLButton(HTMLPageElementSpec specification, HTMLGUIElement parent) {
         super(specification, parent);
     }
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElement.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElement.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElement.java	(revision 961)
@@ -14,6 +14,4 @@
 
 package de.ugoe.cs.autoquest.plugin.html.guimodel;
-
-import java.net.URL;
 
 import de.ugoe.cs.autoquest.eventcore.guimodel.AbstractDefaultGUIElement;
@@ -39,11 +37,4 @@
     /**
      * <p>
-     * Specification of the GUI Element
-     * </p>
-     */
-    private HTMLGUIElementSpec specification;
-
-    /**
-     * <p>
      * Constructor. Creates a new HTMLGUIElement.
      * </p>
@@ -57,5 +48,4 @@
     public HTMLGUIElement(HTMLGUIElementSpec specification, HTMLGUIElement parent) {
         super(specification, parent);
-        this.specification = specification;
     }
 
@@ -70,60 +60,4 @@
     }
 
-    /**
-     * <p>
-     * Returns web page to which this GUI element belongs
-     * </p>
-     * 
-     * @return the page URL
-     */
-    URL getPageURL() {
-        return specification.getPageURL();
-    }
-
-    /**
-     * <p>
-     * Returns the title of the page to which the GUI element belongs
-     * </p>
-     * 
-     * @return the title
-     */
-    String getPageTitle() {
-        return specification.getPageTitle();
-    }
-
-    /**
-     * <p>
-     * Returns the type of the GUI element, i.e., the name of its tag in HTML
-     * </p>
-     * 
-     * @return the tag in HTML
-     */
-    String getTagName() {
-        return specification.getType();
-    }
-
-    /**
-     * <p>
-     * Returns the id of the tag in HTML
-     * </p>
-     * 
-     * @return the id of the HTML tag
-     */
-    String getTagId() {
-        return specification.getTagId();
-    }
-
-    /**
-     * <p>
-     * Returns the child index of the tag referring to all tags with the same type within the same
-     * parent tag 
-     * </p>
-     * 
-     * @return the index
-     */
-    int getIndex() {
-        return specification.getIndex();
-    }
-
     /*
      * (non-Javadoc)
@@ -135,7 +69,5 @@
     @Override
     public void updateSpecification(IGUIElementSpec updateSpecification) {
-        if (updateSpecification instanceof HTMLGUIElementSpec) {
-            specification.update(((HTMLGUIElementSpec) updateSpecification));
-        }
+        // nothing to do. There is not need for handle things such as name changes, etc.
     }
 
@@ -154,23 +86,4 @@
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    public String toString() {
-        String str = getElementDescriptor() + "(" + getTagName();
-        if (getTagId() != null) {
-            str += "(id=" + getTagId() + ")";
-        }
-        else {
-            str += "[" + getIndex() + "]";
-        }
-        
-        str += ")";
-        return str;
-    }
-
     /**
      * <p>
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElementSpec.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElementSpec.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLGUIElementSpec.java	(revision 961)
@@ -15,6 +15,4 @@
 package de.ugoe.cs.autoquest.plugin.html.guimodel;
 
-import java.net.URL;
-
 import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
 
@@ -32,18 +30,6 @@
     
     /** */
-    private URL pageURL;
-    
-    /** */
-    private String pageTitle;
-    
-    /** */
     private String type;
     
-    /** */
-    private String id;
-    
-    /** */
-    private int index;
-
     /**
      * <p>
@@ -55,21 +41,10 @@
      * @param id
      */
-    public HTMLGUIElementSpec(URL pageURL, String pageTitle, String type, String id, int index) {
-        if (pageURL == null) {
-            throw new IllegalArgumentException("page URL must not be null");
-        }
-        else if (type == null) {
+    HTMLGUIElementSpec(String type) {
+        if (type == null) {
             throw new IllegalArgumentException("type must not be null");
         }
-        else if ((id == null) && (index < 0)) {
-            throw new IllegalArgumentException
-              ("either id must not be null or the index must be greater or equal to 0");
-        }
-        
-        this.pageURL = pageURL;
-        this.pageTitle = pageTitle;
+
         this.type = type;
-        this.id = id;
-        this.index = index;
     }
 
@@ -89,15 +64,5 @@
         if (other instanceof HTMLGUIElementSpec) {
             HTMLGUIElementSpec otherSpec = (HTMLGUIElementSpec) other;
-            
-            if (!type.equals(otherSpec.type)) {
-                return false;
-            }
-            
-            if (id != null) {
-                return id.equals(otherSpec.id);
-            }
-            else if (index >= 0) {
-                return index == otherSpec.index;
-            }
+            return type.equals(otherSpec.type);
         }
         
@@ -105,60 +70,3 @@
     }
 
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @return
-     */
-    URL getPageURL() {
-        return pageURL;
-    }
-
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @return
-     */
-    String getPageTitle() {
-        return pageTitle;
-    }
-
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @return
-     */
-    String getTagId() {
-        return id;
-    }
-
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @return
-     */
-    int getIndex() {
-        return index;
-    }
-
-    /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
-     * @param htmlguiElementSpec
-     */
-    void update(HTMLGUIElementSpec htmlguiElementSpec) {
-        // TODO Auto-generated method stub
-        System.out.println("TODO: implement HTMLGUIElementSpec.update ");
-        
-    }
-
 }
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLLink.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLLink.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLLink.java	(revision 961)
@@ -24,5 +24,5 @@
  * @author Patrick Harms
  */
-public class HTMLLink extends HTMLGUIElement implements IButton {
+public class HTMLLink extends HTMLPageElement implements IButton {
 
     /**  */
@@ -37,5 +37,5 @@
      * @param parent
      */
-    public HTMLLink(HTMLGUIElementSpec specification, HTMLGUIElement parent) {
+    public HTMLLink(HTMLPageElementSpec specification, HTMLGUIElement parent) {
         super(specification, parent);
     }
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPage.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPage.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPage.java	(revision 961)
@@ -0,0 +1,96 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLPage extends HTMLGUIElement implements IFrame {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param specification
+     * @param parent
+     */
+    public HTMLPage(HTMLPageSpec specification, HTMLServer parent) {
+        super(specification, parent);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Page(" + getPagePath() + ", \"" + getPageTitle() + "\")";
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElement#getElementDescriptor()
+     */
+    @Override
+    protected String getElementDescriptor() {
+        return "Page";
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    HTMLServerSpec getServer() {
+        return ((HTMLPageSpec) super.getSpecification()).getServer();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getPagePath() {
+        return ((HTMLPageSpec) super.getSpecification()).getPagePath();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getPageTitle() {
+        return ((HTMLPageSpec) super.getSpecification()).getPageTitle();
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElement.java	(revision 961)
@@ -0,0 +1,128 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLPageElement extends HTMLGUIElement implements IFrame {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param specification
+     * @param parent
+     */
+    public HTMLPageElement(HTMLPageElementSpec specification, HTMLGUIElement parent) {
+        super(specification, parent);
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param specification
+     * @param parent
+     */
+    public HTMLPageElement(HTMLPageElementSpec specification, HTMLPage parent) {
+        super(specification, parent);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        String str = getTag();
+        
+        if ((getTagId() != null) && (!"".equals(getTagId()))) {
+            str += "(id=\"" + getTagId() + "\")";
+        }
+        else {
+            str += "[" + getTagIndex() + "]";
+        }
+        
+        return str;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElement#getElementDescriptor()
+     */
+    @Override
+    protected String getElementDescriptor() {
+        return getTag();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    HTMLPageSpec getPage() {
+        return ((HTMLPageElementSpec) super.getSpecification()).getPage();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getTag() {
+        return ((HTMLPageElementSpec) super.getSpecification()).getTag();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getTagId() {
+        return ((HTMLPageElementSpec) super.getSpecification()).getTagId();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    int getTagIndex() {
+        return ((HTMLPageElementSpec) super.getSpecification()).getTagIndex();
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElementSpec.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElementSpec.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageElementSpec.java	(revision 961)
@@ -0,0 +1,145 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLPageElementSpec extends HTMLGUIElementSpec implements IGUIElementSpec {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+    
+    /** */
+    private HTMLPageSpec page;
+    
+    /** */
+    private String tag;
+    
+    /** */
+    private String id;
+    
+    /** */
+    private int index;
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param type
+     * @param index
+     * @param id
+     */
+    public HTMLPageElementSpec(HTMLPageSpec page, String tag, String id, int index) {
+        super(tag);
+        
+        if (page == null) {
+            throw new IllegalArgumentException("page must not be null");
+        }
+        else if (tag == null) {
+            throw new IllegalArgumentException("tag must not be null");
+        }
+        else if ((id == null) && (index < 0)) {
+            throw new IllegalArgumentException
+                ("either id must not be null or the index must be greater or equal to 0");
+        }
+        
+        this.page = page;
+        this.tag = tag;
+        this.id = id;
+        this.index = index;
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec#getSimilarity(IGUIElementSpec)
+     */
+    @Override
+    public boolean getSimilarity(IGUIElementSpec other) {
+        if (other instanceof HTMLPageElementSpec) {
+            HTMLPageElementSpec otherSpec = (HTMLPageElementSpec) other;
+            
+            if (!super.getSimilarity(otherSpec)) {
+                return false;
+            }
+            else if (!page.getSimilarity(otherSpec.page)) {
+                return false;
+            }
+            else if (!tag.equals(otherSpec.tag)) {
+                return false;
+            }
+            
+            if (id != null) {
+                return id.equals(otherSpec.id);
+            }
+            else if (index >= 0) {
+                return index == otherSpec.index;
+            }
+        }
+        
+        return false;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    HTMLPageSpec getPage() {
+        return page;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getTag() {
+        return tag;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getTagId() {
+        return id;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    int getTagIndex() {
+        return index;
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageSpec.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageSpec.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPageSpec.java	(revision 961)
@@ -0,0 +1,151 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import java.net.URL;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLPageSpec extends HTMLGUIElementSpec implements IGUIElementSpec {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+    
+    /** */
+    private HTMLServerSpec server;
+    
+    /** */
+    private String pagePath;
+    
+    /** */
+    private String pageTitle;
+    
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param server
+     * @param pagePath
+     * @param pageTitle
+     */
+    public HTMLPageSpec(HTMLServerSpec server, String pagePath, String pageTitle) {
+        super("page");
+        
+        if (server == null) {
+            throw new IllegalArgumentException("server must not be null");
+        }
+        else if (pagePath == null) {
+            throw new IllegalArgumentException("pagePath must not be null");
+        }
+        else if (pageTitle == null) {
+            throw new IllegalArgumentException("pageTitle must not be null");
+        }
+        
+        this.server = server;
+        this.pagePath = pagePath;
+        this.pageTitle = pageTitle;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param server
+     * @param pagePath
+     * @param pageTitle
+     */
+    public HTMLPageSpec(URL pageURL, String pageTitle) {
+        super("page");
+        
+        if (pageURL == null) {
+            throw new IllegalArgumentException("pageURL must not be null");
+        }
+        else if (pageTitle == null) {
+            throw new IllegalArgumentException("pageTitle must not be null");
+        }
+        
+        this.server = new HTMLServerSpec(pageURL);
+        this.pagePath = pageURL.getPath();
+        this.pageTitle = pageTitle;
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec#getSimilarity(IGUIElementSpec)
+     */
+    @Override
+    public boolean getSimilarity(IGUIElementSpec other) {
+        if (other instanceof HTMLPageSpec) {
+            HTMLPageSpec otherSpec = (HTMLPageSpec) other;
+            
+            if (!super.getSimilarity(otherSpec)) {
+                return false;
+            }
+            else if (!server.getSimilarity(otherSpec.server)) {
+                return false;
+            }
+            else if (!pagePath.equals(otherSpec.pagePath)) {
+                return false;
+            }
+            else {
+                return pageTitle.equals(otherSpec.pageTitle);
+            }
+        }
+        
+        return false;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    public HTMLServerSpec getServer() {
+        return server;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getPagePath() {
+        return pagePath;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getPageTitle() {
+        return pageTitle;
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPanel.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPanel.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLPanel.java	(revision 961)
@@ -24,5 +24,5 @@
  * @author Patrick Harms
  */
-public class HTMLPanel extends HTMLGUIElement implements IPanel {
+public class HTMLPanel extends HTMLPageElement implements IPanel {
 
     /**  */
@@ -37,5 +37,5 @@
      * @param parent
      */
-    public HTMLPanel(HTMLGUIElementSpec specification, HTMLGUIElement parent) {
+    public HTMLPanel(HTMLPageElementSpec specification, HTMLGUIElement parent) {
         super(specification, parent);
     }
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServer.java	(revision 961)
@@ -0,0 +1,97 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IFrame;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLServer extends HTMLGUIElement implements IFrame {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param specification
+     * @param parent
+     */
+    public HTMLServer(HTMLServerSpec specification, HTMLGUIElement parent) {
+        super(specification, null);
+        
+        if (parent != null) {
+            throw new IllegalArgumentException("a GUI element representing the server must not " +
+                                               "have a parent GUI element");
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        String str = "Server(" + getHost();
+
+        if (getPort() > -1 ) {
+            str += ":" + getPort();
+        }
+        
+        str += ")";
+        return str;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElement#getElementDescriptor()
+     */
+    @Override
+    protected String getElementDescriptor() {
+        return "Server";
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getHost() {
+        return ((HTMLServerSpec) super.getSpecification()).getHost();
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    int getPort() {
+        return ((HTMLServerSpec) super.getSpecification()).getPort();
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServerSpec.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServerSpec.java	(revision 961)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLServerSpec.java	(revision 961)
@@ -0,0 +1,124 @@
+//   Copyright 2012 Georg-August-Universität Göttingen, Germany
+//
+//   Licensed under the Apache License, Version 2.0 (the "License");
+//   you may not use this file except in compliance with the License.
+//   You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//   Unless required by applicable law or agreed to in writing, software
+//   distributed under the License is distributed on an "AS IS" BASIS,
+//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//   See the License for the specific language governing permissions and
+//   limitations under the License.
+
+package de.ugoe.cs.autoquest.plugin.html.guimodel;
+
+import java.net.URL;
+
+import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @author Patrick Harms
+ */
+public class HTMLServerSpec extends HTMLGUIElementSpec implements IGUIElementSpec {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+    
+    /** */
+    private String host;
+    
+    /** */
+    private int port;
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param serverName
+     * @param port
+     */
+    HTMLServerSpec(String host, int port) {
+        super("server");
+        
+        if (host == null) {
+            throw new IllegalArgumentException("host must not be null");
+        }
+        
+        if ((port < -1) || (port > 65536)) {
+            throw new IllegalArgumentException("port " + port + " is not a valid port");
+        }
+
+        this.host = host;
+        this.port = port;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @param pageURL
+     */
+    HTMLServerSpec(URL pageURL) {
+        super("server");
+
+        if (pageURL == null) {
+            throw new IllegalArgumentException("page URL must not be null");
+        }
+
+        this.host = pageURL.getHost();
+        this.port = pageURL.getPort();
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec#getSimilarity(IGUIElementSpec)
+     */
+    @Override
+    public boolean getSimilarity(IGUIElementSpec other) {
+        if (other instanceof HTMLServerSpec) {
+            HTMLServerSpec otherSpec = (HTMLServerSpec) other;
+            
+            if (!super.getSimilarity(otherSpec)) {
+                return false;
+            }
+            else if (!host.equals(otherSpec.host)) {
+                return false;
+            }
+            else {
+                return (port == otherSpec.port);
+            }
+        }
+        
+        return false;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    String getHost() {
+        return this.host;
+    }
+
+    /**
+     * <p>
+     * TODO: comment
+     * </p>
+     *
+     * @return
+     */
+    int getPort() {
+        return this.port;
+    }
+
+}
Index: trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLTextArea.java
===================================================================
--- trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLTextArea.java	(revision 959)
+++ trunk/autoquest-plugin-html/src/main/java/de/ugoe/cs/autoquest/plugin/html/guimodel/HTMLTextArea.java	(revision 961)
@@ -24,5 +24,5 @@
  * @author Patrick Harms
  */
-public class HTMLTextArea extends HTMLGUIElement implements ITextArea {
+public class HTMLTextArea extends HTMLPageElement implements ITextArea {
 
     /**  */
@@ -37,5 +37,5 @@
      * @param parent
      */
-    public HTMLTextArea(HTMLGUIElementSpec specification, HTMLGUIElement parent) {
+    public HTMLTextArea(HTMLPageElementSpec specification, HTMLGUIElement parent) {
         super(specification, parent);
     }
