Index: src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	(revision 22)
+++ src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java	(revision 24)
@@ -72,4 +72,19 @@
         Node person = getNodeIndex(NodeTypes.PERSON).get("uri", userUri).getSingle();
         return person;
+    }
+
+    public List<Actor> getActors(String key, String query, NodeTypes type) {
+        ArrayList<Actor> actors = new ArrayList<Actor>();
+        Index<Node> idx = getNodeIndex(type);
+        if (key == null) {
+            key = "uri";
+            query = "*";
+        }
+        IndexHits<Node> actorNodes = idx.query(key, query);
+        for (Node actorNode : actorNodes) {
+            Actor actor = createActorFromNode(actorNode);
+            actors.add(actor);
+        }
+        return actors;
     }
 
Index: src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java	(revision 23)
+++ src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupMembersResource.java	(revision 24)
@@ -6,5 +6,4 @@
 import java.util.List;
 
-import org.apache.log4j.Logger;
 import org.restlet.data.Form;
 import org.restlet.data.MediaType;
@@ -15,11 +14,8 @@
 import org.restlet.resource.Get;
 import org.restlet.resource.Post;
-import org.restlet.resource.ServerResource;
 
 import de.mpiwg.itgroup.annotations.Actor;
-import de.mpiwg.itgroup.annotations.Group;
 import de.mpiwg.itgroup.annotations.Person;
-import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
-import de.mpiwg.itgroup.annotations.restlet.BaseRestlet;
+import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore.NodeTypes;
 
 /**
@@ -29,9 +25,5 @@
  * 
  */
-public class GroupMembersResource extends ServerResource {
-
-    public static Logger logger = Logger.getLogger(GroupMembersResource.class);
-
-    private AnnotationStore store;
+public class GroupMembersResource extends GroupResource {
 
     /**
@@ -44,7 +36,5 @@
     public Representation doGetHTML(Representation entity) {
         // id from URI /annotations/groups/{id}/members
-        String id = (String) getRequest().getAttributes().get("id");
-        logger.debug("group-id=" + id);
-        if (id == null || id.isEmpty()) {
+        if (requestId == null || requestId.isEmpty()) {
             // invalid id
             setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
@@ -52,9 +42,7 @@
         }
         String result = null;
-        store = getAnnotationStore();
-        Reference groupsUrl = this.getReference().getParentRef();
-        result = "<html><body>\n<h1>Members of group</h1>\n";
-        Group group = new Group(id);
-        group = (Group) store.getActor(group);
+        Reference thisUrl = this.getReference();
+        Reference groupsUrl = thisUrl.getParentRef();
+        result = "<html><body>\n<h1>Group members</h1>\n";
         result += String.format("<p>Group: %s <a href=\"%s\">(%s)</a></p>\n", group.getName(), groupsUrl, group.getId());
         result += "<p>Members:</p>\n";
@@ -62,10 +50,13 @@
         List<Person> members = store.getMembersOfGroup(group);
         for (Person p : members) {
-            result += String.format("<tr><td>%s</td><td>(%s)</td></tr>\n", p.getName(), p.getIdString());
+            result += String.format("<tr><td>%s</td><td>(%s)</td>", p.getName(), p.getIdString());
+            //result += String.format("<td></td></tr>\n", p.getName(), p.getIdString());
         }
         result += "</table>\n";
-        result += "<form method=\"post\" action=\"\">\n";
-        result += "<p>Add new member: <select name=\"new_member\">\n";
-        result += String.format("<option value=\"%s\">%s</option>\n", "casties", "casties");
+        result += String.format("<form method=\"post\" action=\"%s\">\n", thisUrl);
+        result += "<p>Add new member: <select name=\"add_member\">\n";
+        for (Actor p : store.getActors("uri", "*", NodeTypes.PERSON)) {
+            result += String.format("<option value=\"%s\">%s</option>\n", p.getIdString(), p.getName());
+        }
         result += "</select>\n";
         result += "<input type=\"submit\"/>\n";
@@ -77,5 +68,5 @@
 
     /**
-     * POST creates a new Group.
+     * POST adds or deletes members of the Group.
      * 
      * @return
@@ -83,33 +74,23 @@
     @Post
     public Representation doPost(Representation entity) {
-        logger.debug("AnnotationsUiGroup doPost!");
+        logger.debug("GroupMembersResource doPost!");
         // TODO: do authentication
         Form form = new Form(entity);
-        String id = form.getFirstValue("id");
-        String name = form.getFirstValue("name");
-        if (id == null || id.isEmpty()) {
-            // invalid id
+        String addMemberId = form.getFirstValue("add_member");
+        String delMemberId = form.getFirstValue("del_member");
+        if (group == null || ((addMemberId == null || addMemberId.isEmpty()) 
+                && (delMemberId == null || delMemberId.isEmpty()))) {
+            // no id
             setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
             return null;
         }
-        String gid = null;
-        Group newGroup = new Group(gid, null, name);
-        store = getAnnotationStore();
-        Actor storedGroup = store.storeActor(newGroup);
-        gid = storedGroup.getId();
+        
         // return 303: see other
         setStatus(Status.REDIRECTION_SEE_OTHER);
-        // go GET URL for this group
-        Reference groupUrl = this.getReference();
-        groupUrl.addSegment(gid);
-        this.getResponse().setLocationRef(groupUrl);
+        // go get same URL
+        Reference thisUrl = this.getReference();
+        this.getResponse().setLocationRef(thisUrl);
         return null;
     }
 
-    protected AnnotationStore getAnnotationStore() {
-        if (store == null) {
-            store = ((BaseRestlet) getApplication()).getAnnotationStore();
-        }
-        return store;
-    }
 }
Index: src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java
===================================================================
--- src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java	(revision 23)
+++ src/main/java/de/mpiwg/itgroup/annotations/restlet/annotations_ui/GroupResource.java	(revision 24)
@@ -5,5 +5,4 @@
 
 import org.apache.log4j.Logger;
-import org.restlet.data.Form;
 import org.restlet.data.MediaType;
 import org.restlet.data.Reference;
@@ -12,8 +11,7 @@
 import org.restlet.representation.StringRepresentation;
 import org.restlet.resource.Get;
-import org.restlet.resource.Post;
+import org.restlet.resource.ResourceException;
 import org.restlet.resource.ServerResource;
 
-import de.mpiwg.itgroup.annotations.Actor;
 import de.mpiwg.itgroup.annotations.Group;
 import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
@@ -30,5 +28,25 @@
     public static Logger logger = Logger.getLogger(GroupResource.class);
 
-    private AnnotationStore store;
+    protected AnnotationStore store;
+    
+    protected String requestId;
+    
+    protected Group group;
+    
+    @Override
+    protected void doInit() throws ResourceException {
+        super.doInit();
+        // id from URI /annotations/groups/{id}
+        requestId = (String) getRequest().getAttributes().get("id");
+        logger.debug("group-id=" + requestId);
+        // get store instance
+        if (store == null) {
+            store = ((BaseRestlet) getApplication()).getAnnotationStore();
+        }
+        // get group from store
+        if (requestId != null) {
+            group = (Group) store.getActor(new Group(requestId));
+        }
+    }
 
     /**
@@ -40,8 +58,5 @@
     @Get("html")
     public Representation doGetHTML(Representation entity) {
-        // id from URI /annotations/groups/{id}
-        String id = (String) getRequest().getAttributes().get("id");
-        logger.debug("group-id=" + id);
-        if (id == null || id.isEmpty()) {
+        if (requestId == null || requestId.isEmpty()) {
             // invalid id
             setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
@@ -49,10 +64,7 @@
         }
         String result = null;
-        store = getAnnotationStore();
         Reference groupsUrl = this.getReference().getParentRef();
         result = "<html><body>\n<h1>Group</h1>\n";
         result += String.format("<p><a href=\"%s\">All groups</a></p>", groupsUrl);
-        Group group = new Group(id);
-        group = (Group) store.getActor(group);
         result += "<table>";
         result += String.format("<tr><td><b>id</b></td><td>%s</td></tr>\n", group.getId());
@@ -68,40 +80,3 @@
     }
 
-    /**
-     * POST creates a new Group.
-     * 
-     * @return
-     */
-    @Post
-    public Representation doPost(Representation entity) {
-        logger.debug("AnnotationsUiGroup doPost!");
-        // TODO: do authentication
-        Form form = new Form(entity);
-        String id = form.getFirstValue("id");
-        String name = form.getFirstValue("name");
-        if (id == null || id.isEmpty()) {
-            // invalid id
-            setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
-            return null;
-        }
-        String gid = null;
-        Group newGroup = new Group(gid, null, name);
-        store = getAnnotationStore();
-        Actor storedGroup = store.storeActor(newGroup);
-        gid = storedGroup.getId();
-        // return 303: see other
-        setStatus(Status.REDIRECTION_SEE_OTHER);
-        // go GET URL for this group
-        Reference groupUrl = this.getReference();
-        groupUrl.addSegment(gid);
-        this.getResponse().setLocationRef(groupUrl);
-        return null;
-    }
-
-    protected AnnotationStore getAnnotationStore() {
-        if (store == null) {
-            store = ((BaseRestlet) getApplication()).getAnnotationStore();
-        }
-        return store;
-    }
 }
