diff --git a/modules/conop/doc/conop.rst b/modules/conop/doc/conop.rst
index a7ebe2eaa24fd6cb3c6f2990e9ba939b77644544..6e8443558c8345033692c55e3d84c302d200b93d 100644
--- a/modules/conop/doc/conop.rst
+++ b/modules/conop/doc/conop.rst
@@ -63,7 +63,7 @@ be achieved with
   conop.Conopology.Instance().RegisterBuilder(rbb,'rbb')
   conop.Conopology.Instance().SetDefaultBuilder('rbb')
 
-All subsequent calls to :func:`io.LoadEntity` will make use of the
+All subsequent calls to :func:`ost.io.LoadEntity` will make use of the
 RuleBasedBuilder  instead of the heuristic builder. See 
 :ref:`here <mmcif-convert>` for more  information on how to create the necessary 
 files to use the rule-based builder.
@@ -225,18 +225,20 @@ files to use the rule-based builder.
 Connecting atoms
 --------------------------------------------------------------------------------
 
-The high level interface is exposed by the Conopoloy singleton instance:
+A single function call to :func:`ConnectAll` is sufficient to assign residue and atoms properties as well as to connect atoms with bonds.
+
 
 .. code-block:: python
-  
-  import conop
-  
-  cc=conop.Conopology.Instance()
-  
+
+  # Suppose that BuildRawModel is a function that returns a protein structure
+  # with no atom properties assigned and no bonds formed.
   ent=BuildRawModel(...)
-  cc.ConnectAll(cc.GetBuilder(), ent)
+  print ent.bonds  # will return an empty list
+  # Call ConnectAll() to assign properties/connect atoms
+  conop.ConnectAll(ent)
+  print ent.bonds  # will print a list containing many bonds
 
-For fine grained control, the builder interface may be used directly.
+For fine grained control, the :class:`Builder` interface may be used directly.
 
 
 .. _mmcif-convert:
diff --git a/modules/gfx/doc/gfx.rst b/modules/gfx/doc/gfx.rst
index 3535136fe6a633ce0abc783d60be0eef17887667..de9cf3ddbcf1170f9cfac59f7377ec284fdf3b5a 100644
--- a/modules/gfx/doc/gfx.rst
+++ b/modules/gfx/doc/gfx.rst
@@ -1,10 +1,13 @@
 :mod:`~ost.gfx` - Realtime 3D Rendering
 ================================================================================
 
+For a introduction to the :mod:`~ost.gfx` module, please have a look at the :doc:`../intro-03`.
+
 .. module:: ost.gfx
   :synopsis: Realtime 3D Rendering
   
 .. toctree::
   :maxdepth: 2
   
+  scene
   entity
\ No newline at end of file
diff --git a/modules/gfx/doc/scene.rst b/modules/gfx/doc/scene.rst
new file mode 100644
index 0000000000000000000000000000000000000000..27bf9b86b1a8aad58248cd98f642e319e02a4343
--- /dev/null
+++ b/modules/gfx/doc/scene.rst
@@ -0,0 +1,344 @@
+The Scene
+================================================================================
+
+.. currentmodule:: ost.gfx
+
+The scene is the central registry for graphical objects and manages rendering 
+parameters. Among other parameters, it is used to setup the lighting, fog, 
+background color and the position and viewing direction of the user. The scene
+is a singleton, meaning that there is only one scene available. The instance can
+be accessed via :func:`gfx.Scene`. Because the scene is so important and
+commonly used, the scene is also available as the `scene` variable in the 
+interactive python shell as well as from scripts.
+
+Manipulating the Camera
+--------------------------------------------------------------------------------
+
+The users position and orientation in the scene is specified by the camera. The camera is represented by a center, a rotation and an offset from the center. These 3 attributes can be set independently. Manipulation of the camera is done by assigning a new :class:`~ost.mol.Transform` to the :attr:`Scene.transform` attribute. 
+
+.. _camera-orbit:
+
+Orbiting around a Point
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following code example will let the camera orbit around the center of the camera.
+
+.. code-block:: python
+
+  # tweakable parameters:
+  #  - axis of rotation
+  #  - angular step size. Making it bigger speeds up the rotation
+  #  - number of frames
+  axis=geom.Vec3(0, 1, 0)
+  step_size=0.01
+  num_frames=100
+  
+  angle=0.0
+  for i in range(num_frames):
+    angle+=step_size
+    if angle>math.pi*2:
+      angle-=math.pi*2
+    camera=scene.transform
+    rot=geom.AxisRotation(axis, angle)
+    camera.SetRot(rot)
+    camera.SetTrans(geom.Vec3(25.0, 0.0, -50))
+    scene.transform=camera
+    scene.Export('frame-%03d.png' % i, 500, 500)
+
+It is interesting to note that the offset from center (`trans`) is given in rotated coordinates. Transforming along z shifts the camera along the viewing direction. Setting x and y to non-zero causes the center of the camera not to be projected onto the center of the screen any longer. For example, setting the value `trans` to `geom.Vec3(50, 0, 0)` gives a viewing direction perpendicular to the vector from the camera position to the center.
+
+.. class:: Scene
+
+  .. attribute:: background
+
+    The background color of the scene. By default the background color is
+    transparent black.
+  
+    :type: :class:`Color`
+  
+  .. attribute:: center
+  
+    The center of the scene. Read-write. Changing the center affects the 
+    orientation of the camera, but not its position. To change the camera
+    position, use :attr:`transform`. Also available as 
+    :meth:`GetCenter`/:meth:`SetCenter`.
+    
+    See also :meth:`CenterOn`.
+    
+    :type: :class:`~ost.geom.Vec3`
+  
+  .. attribute:: transform
+  
+    The camera transformation. Read-write. For an example usage see
+    :ref:`camera-orbit`. Also available as
+    :meth:`GetTransform`/:meth:`SetTransform`.
+        
+    :type: :class:`~ost.mol.Transform`
+    
+    
+  .. attribute:: fov
+  
+    The field of view angle (in degrees) in vertical direction. Read-write.
+    Also available as :meth:`GetFOV`/:meth:`SetFOV`.
+    
+    :type: float. 
+
+  .. method:: Add(obj[, replace_existing])
+
+    Add an object to the root node of the scene. This means that
+    
+     * The object will be rendered on the screen.    
+     * The object's bounding box affects the slabbing operations.     
+
+    :param obj: The object to be added.
+    :type  obj: :class:`GfxNode`
+    :param replace_existing: If true, existing objects of the same name are
+       silently replaced. If false (the default), trying to add an object with
+       an existing name will raise a RuntimeError.
+       
+    :type replace_existing: bool
+
+
+  .. method:: AttachObserver(obs)
+
+    Attach a :class:`scene observer <SceneObserver>`. The new scene observer 
+    will get notified when the scene's state changes or objects get updated. 
+    
+    :param obs:
+    :type  obs: :class:`SceneObserver`
+
+
+  .. method:: AutoAutoslab(flag)
+
+    Enable/disable autoslabbing. If autoslabbing is enabled, the near and far 
+    clipping planes will automatically be adjusted to contain all the objects in 
+    the scene. This calculation is done before every redraw. Note that, 
+    autoslabbing is not rotation invariant. See :meth:`AutoslabMax` for a
+    rotation-invariant version.
+    
+    :param flag:
+    :type  flag: bool
+
+
+  .. method:: Autoslab(fast[, force])
+
+    .. note::
+      
+      This method looks stale. Remove it?
+
+    :param fast:
+    :type  fast: bool
+    :param force:
+    :type  force: bool
+
+  .. method:: AutoslabMax()
+
+    Adjust the near and far clipping planes in such a way that they contain the 
+    bounding sphere of all the objects in the scene. In constrast to AutoSlab() 
+    the near/far clipping planes calculated with :meth:`AutoslabMax` are 
+    invariant to rotation.
+
+  .. method:: CenterOn(obj)
+    
+    Center the camera on the center of the obj. This does not update offset and 
+    rotation of the camera. However, since the offset and rotation are applied 
+    after the centering, the position and viewing direction are affected by the 
+    change of center.
+    
+    :param obj: Object, or name of the object
+    :type  obj: str, or :class:`GfxNode`
+
+
+  .. method:: Export(filename, width, height[, transparent])
+              Export(filename[, transparent])
+              
+    Renders (exports) the scene into a PNG image.
+    
+    :param filename: The output filename
+    :type  filename: str
+    :param width: The width of the image. Defaults to the width of the 
+      OpenGL window
+    :type  width: int
+    :param height: The height of the image. Defaults to the height of the OpenGL
+        window.
+    :type  height: int
+    :param transparent: If true, and the background color of the scene is 
+      transparent, will produce a transparent image. If false, the alpha 
+      component will be set to opaque.
+    :type  transparent: bool
+
+  .. method:: ExportPov(filename[, working_dir])
+    
+    Export the scene to POV-Ray format. The export will generate two files, one 
+    containing a general description of the scene, including camera position and 
+    materials and a second containing the geometric description of the objects.
+    The first file will be named `filename.pov`, the second `filename.inc`.
+    
+    The files will be placed in working directory
+    
+    .. note::
+    
+      This method is highly experimental and does not work for more complex
+      objects. Stay tuned for updates.
+      
+
+    :param filename: The base filename without file extension. `.pov` and `.inc`
+       will automatically be appended to te filename.
+    :type  filename: str
+    :param working_dir: The working directory. Defaults to the current
+       directory.
+    :type  working_dir: str
+
+
+  .. method:: GetFOV()
+
+    Get the field of view angle in the y direction (in degrees).
+    :rtype: float
+
+  .. method:: GetRTC()
+    
+    .. note::
+    
+      Looks stale. Remove it?
+      
+    :rtype: :class:`Mat4`
+
+  .. method:: GetTransform()
+
+    See :attr:`transform`
+
+  .. method:: Remove(obj)
+
+    Remove the given object from the scene.
+    
+    :param obj:
+    :type  obj: :class:`GfxNode`
+
+  .. method:: RenderGL()
+
+    Renders the scene.
+
+  .. method:: RequestRedraw()
+
+    Request a redraw of the scene. 
+
+
+  .. method:: Resize(width, height)
+    
+    Resize the OpenGL context.
+    
+    :param width: The new width
+    :type  width: int
+    :param height: The new height
+    :type  height: int
+
+  .. method:: SetBackground(color)
+
+    See :attr:`background`
+    
+    :param color:
+    :type  color: :class:`Color`
+
+  .. method:: SetBlur(arg2)
+
+    :param arg2:
+    :type  arg2: int
+
+  .. method:: SetFOV(angle)
+
+    See :attr:`fov`.
+    
+    :param angle:
+    :type  angle: float
+
+  .. method:: SetFog(arg2)
+
+    :param arg2:
+    :type  arg2: bool
+
+  .. method:: SetFogColor(arg2)
+
+    :param arg2:
+    :type  arg2: :class:`Color`
+
+  .. method:: SetFogOffsets(arg2, arg3)
+
+    :param arg2:
+    :type  arg2: float
+    :param arg3:
+    :type  arg3: float
+
+  .. method:: SetLightDir(arg2)
+
+    :param arg2:
+    :type  arg2: :class:`~ost.geom.Vec3`
+
+  .. method:: SetLightProp(arg2, arg3, arg4)
+
+    :param arg2:
+    :type  arg2: :class:`Color`
+    :param arg3:
+    :type  arg3: :class:`Color`
+    :param arg4:
+    :type  arg4: :class:`Color`
+
+  .. method:: SetNearFar(near, far)
+
+    Manually sets the near and far clipping planes to the given values. Before 
+    using this method, make sure :meth:`AutoAutoslab` is disabled.
+    
+    :param near:
+    :type  near: float
+    :param far:
+    :type  far: float
+
+  .. method:: UnProject(point[, ignore_vp])
+
+    Apply the inverse of the current camera and perspective transformation. This 
+    essentially gives the screen (or normalized view coordinates) of a point in
+    global coordinates. The inverse operations is available as  :meth:`Project`.
+    
+    :param point: The point in global coordinates.
+    :type  point: :class:`~ost.geom.Vec3`
+    :param ignore_vp: If set to false (the default), also performs the viewport 
+      transformation. Points inside the viewing frustum will have x and y 
+      coordinates in the range [0, width)x[0, height]. If true, the returned 
+      coordinates will be between [-1,1]x[-1,1].
+    :type  ignore_vp: bool
+    :rtype: :class:`~ost.geom.Vec3`
+
+  .. method:: SetRTC(arg2)
+
+    :param arg2:
+    :type  arg2: :class:`Mat4`
+
+  .. method:: SetShadow(arg2)
+
+    :param arg2:
+    :type  arg2: bool
+
+  .. method:: SetShadowQuality(arg2)
+
+    :param arg2:
+    :type  arg2: int
+
+  .. method:: SetStereoEye(arg2)
+
+    :param arg2:
+    :type  arg2: int
+
+  .. method:: SetStereoInverted(arg2)
+
+    :param arg2:
+    :type  arg2: bool
+
+  .. method:: SetTransform(new_transform)
+
+    See :attr:`transform`
+
+  .. method:: Stereo(mode)
+
+    :param mode:
+    :type  mode: int
+
+  
\ No newline at end of file
diff --git a/modules/gfx/pymod/export_scene.cc b/modules/gfx/pymod/export_scene.cc
index 9cae54473b3dc37cd301c55b1e54d643272fb308..e66235742552df1b54d131abc39285fe057e8210 100644
--- a/modules/gfx/pymod/export_scene.cc
+++ b/modules/gfx/pymod/export_scene.cc
@@ -91,6 +91,8 @@ void export_Scene()
     .def("RenderGL", &Scene::RenderGL)
     .def("Resize", &Scene::Resize)
     .def("SetBackground", &Scene::SetBackground)
+    .add_property("transform", &Scene::GetTransform, &Scene::SetTransform)
+    .add_property("fov", &Scene::GetFOV, &Scene::SetFOV)
     .add_property("center", &Scene::GetCenter, &Scene::SetCenter)
     .add_property("near", &Scene::GetNear, &Scene::SetNear)
     .add_property("far", &Scene::GetFar, &Scene::SetFar)
diff --git a/modules/mol/base/doc/query.rst b/modules/mol/base/doc/query.rst
index ff8ff21a41613745e62df35bb648edfb72763ff1..391156d7f8d7ae19ece74d2dd4748d028060526d 100644
--- a/modules/mol/base/doc/query.rst
+++ b/modules/mol/base/doc/query.rst
@@ -4,7 +4,7 @@ Queries
 .. currentmodule:: ost.mol
 
 OpenStructure includes a powerful query system that allows you to perform custom 
-selections in a convenient way.
+selections on a molecular entity in a convenient way.
 
 
 The Basics
@@ -175,11 +175,13 @@ The following properties may be used in predicates. The type is given for each p
 Properties of Chains
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+
 **cname/chain** (str) :attr:`Chain name<ChainHandle.name>` 
   
 Properties of Residues
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+
 **rname** (str): :attr:`Residue name<ResidueHandle.name>`
  
 **rnum** (int): :attr:`Residue number<ResidueHandle.number>`. Currently only the numeric part is honored.
@@ -198,12 +200,11 @@ index is the same for views and handles.
 Properties of Atoms
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+
 **aname** (str): :attr:`Atom name<AtomHandle.name>`
   
 **ele** (str): :attr:`Atom element<AtomHandle.element>`
-  
 
-  
 **occ** (float): :attr:`Atom occupancy<AtomHandle.occupancy>`
 
 **abfac** (float): :attr:`Atom B-factor<AtomHandle.b_factor>`