private void handlePage(BookPage page, ProjectPage _page, int pgnum) {
		for (AbstractElement _go : _page.GuiObjects) {
			log.debug("Loading:     element:" + _go);

			int left = _go.left;
			int top = _go.top;
			int width = _go.width;
			int height = _go.height;
			int angleDegrees = _go.rotateAngle;
			// boolean dragable =
			// in_go.Dragable.evalXPathToString().equals("1");

			// IfolorDock dock = s2dock(apImDock.evalXPathToString());

			if (_go instanceof Image) {
				Image _image = (Image) _go;

				String origFile = _image.OrigFilePath;
				String previewFile = _image.PreviewFilePath;
				String sourceFile = _image.SourceFilePath;
				double cropX = 0, cropY = 0, cropW = 0, cropH = 0;
				if (_image.VisiblePart != null) {
					cropX = _image.VisiblePart.left / 100d;
					cropY = _image.VisiblePart.top / 100d;
					cropW = _image.VisiblePart.width / 100d;
					cropH = _image.VisiblePart.height / 100d;
				}
				BorderShadow bs = s2border(_image.Border);
				if (bs == null)
					bs = new BorderShadow(null, null);
				ImageCutCoords alpha = s2alpha(_image.AlphaSet);

				log.trace(String.format("    %d,%d\t%s\t\t%f %f %f %f\t%s %s",
						left, top, origFile, cropX, cropY, cropW, cropH,
						bs.border, bs.shadow));

				BookPicture pic = new BookPicture(left, top, width, height,
						angleDegrees, origFile, previewFile, sourceFile, cropX,
						cropY, cropW, cropH, bs.border, bs.shadow, alpha);
				page.add(pic);

			} else if (_go instanceof ColorRectangle) {
				ColorRectangle _colorRect = (ColorRectangle) _go;

				Vector<ShapeColor> colors = new Vector<ShapeColor>();

				for (org.alder.fotobuchconvert.ifolor.model.Color _color : _colorRect.colors) {
					String value = _color.value;
					double pos = _color.position;

					int a = Integer.parseInt(value.substring(0, 2), 16);
					int r = Integer.parseInt(value.substring(2, 4), 16);
					int g = Integer.parseInt(value.substring(4, 6), 16);
					int b = Integer.parseInt(value.substring(6, 8), 16);

					colors.add(new ShapeColor(new Color(r, g, b, a), pos));
				}

				BookShape shape = new BookShape(left, top, width, height,
						angleDegrees, colors.toArray(new ShapeColor[0]));

				page.add(shape);
			} else if (_go instanceof Text) {
				Text _text = (Text) _go;

				String origFile = _text.OrigFilePath;

				BookRtfText pic = new BookRtfText(left, top, width, height,
						angleDegrees, origFile);

				page.add(pic);

				// } else if ("MetaFile".equals(type)) {
				// // keine Ahnung, was das ist. Kommt immer wieder vor
			} else {
				throw new RuntimeException("Typ " + _go
						+ " nicht bekannt in XML");
			}
		}

		// page numbers
		if (_page.LeftPageNumber != null)
			handlePageNumber(page, _page, _page.LeftPageNumber, pgnum);
		if (_page.RightPageNumber != null)
			handlePageNumber(page, _page, _page.RightPageNumber, pgnum + 1);
	}