@Override
    public void addChild(GraphicalObject child)
            throws AlreadyHasGroupRunTimeException {
        // only one child
        if (children.size() > 0) return;
        if (child.getGroup() != null) {
            throw new AlreadyHasGroupRunTimeException(
                    "Object has already been added to a group.");
        }
        child.setGroup(this);
        BoundaryRectangle r = child.getBoundingBox();
        this.x = r.x;
        this.y = r.y;
        this.width = r.width;
        this.height = r.height;
        child.moveTo(0, 0);
        children.add(child);

        if (group != null) {
            group.damage(r);
        }
    }