diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md
index 7859b7be21fb1c3eda91ee35173a8e3412a62066..35c6d01c5904289b77fc7f1de9419ef91a1510e9 100644
--- a/.gitlab/merge_request_templates/Default.md
+++ b/.gitlab/merge_request_templates/Default.md
@@ -26,6 +26,7 @@ guidelines](https://gitlab.com/caosdb/caosdb/-/blob/dev/REVIEW_GUIDELINES.md)
 - [ ] All automated tests pass
 - [ ] Reference related issues
 - [ ] Up-to-date CHANGELOG.md (or not necessary)
+- [ ] Up-to-date JSON schema (or not necessary)
 - [ ] Appropriate user and developer documentation (or not necessary)
   - How do I use the software?  Assume "stupid" users.
   - How do I develop or debug the software?  Assume novice developers.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6fa9c86aa22e970b1449604a32914718701923bc..205fcb077cb0ca8f8facc6c1f636539f9bbb2384 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Documentation ###
 
+* [#83](https://gitlab.com/caosdb/caosdb-pylib/-/issues/83) - Improved
+  documentation on adding REFERENCE properties, both in the docstring of
+  `Entity.add_property` and in the data-insertion tutorial.
+
+## [0.11.2] - 2023-03-14 ##
+
+### Fixed ###
+- root logger is no longer used to create warnings. Fixes undesired output in 
+  stderr
+
+## [0.11.1] - 2023-03-07 ##
+(Florian Spreckelsen)
+
+### Changed ###
+
+* Renamed `caosdb.common.models._Parents` to `caosdb.common.models._ParentList`.
+
+### Fixed ###
+
+* [caosdb-pylib#90](https://gitlab.com/caosdb/caosdb-pylib/-/issues/90): `Entity.get_parents_recursively()` did not work for unretrieved parents.
+
 ## [0.11.0] - 2023-01-19 ##
 (Florian Spreckelsen)
 
diff --git a/CITATION.cff b/CITATION.cff
index 0f98848710889e35c9071b9e481f2c976f9b5f1a..910e40a2193d527fc8e4eb68c4ca6b10a28d3630 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -20,6 +20,6 @@ authors:
     given-names: Stefan
     orcid: https://orcid.org/0000-0001-7214-8125
 title: CaosDB - Pylib
-version: 0.10.0
+version: 0.11.1
 doi: 10.3390/data4020083
 date-released: 2022-11-14
\ No newline at end of file
diff --git a/setup.py b/setup.py
index f0f45aecfbdb8c3c7fb45dbe67dd2769e40b2904..a8b948c1c9097ea49d391d0fe0747290d21be4a6 100755
--- a/setup.py
+++ b/setup.py
@@ -48,7 +48,7 @@ from setuptools import find_packages, setup
 ISRELEASED = False
 MAJOR = 0
 MINOR = 11
-MICRO = 1
+MICRO = 3
 # Do not tag as pre-release until this commit
 # https://github.com/pypa/packaging/pull/515
 # has made it into a release. Probably we should wait for pypa/packaging>=21.4
diff --git a/src/caosdb/apiutils.py b/src/caosdb/apiutils.py
index f3195b8e152f0cb13e5dab3e3a449b7bb36623b4..9c68e9db6cbdef827b9319505b4b81bc8db1ebac 100644
--- a/src/caosdb/apiutils.py
+++ b/src/caosdb/apiutils.py
@@ -43,6 +43,8 @@ from caosdb.common.models import (Container, Entity, File, Property, Query,
                                   get_config, SPECIAL_ATTRIBUTES)
 from caosdb.exceptions import CaosDBException
 
+logger = logging.getLogger(__name__)
+
 
 class EntityMergeConflictError(CaosDBException):
     """An error that is raised in case of an unresolvable conflict when merging
@@ -413,7 +415,7 @@ def merge_entities(entity_a: Entity, entity_b: Entity, merge_references_with_emp
 
     """
 
-    logging.warning(
+    logger.warning(
         "This function is currently experimental and insufficiently tested. Use with care.")
 
     # Compare both entities:
diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py
index 83359ac847fa62de976208f9af023a2cf2a73af6..20e09810ba466d59cf7a82d68cad19fefb45b10b 100644
--- a/src/caosdb/common/models.py
+++ b/src/caosdb/common/models.py
@@ -34,6 +34,7 @@ All additional classes are either important for the entities or the
 transactions.
 """
 from __future__ import print_function, unicode_literals
+from __future__ import annotations  # Can be removed with 3.10.
 
 import re
 import sys
@@ -82,7 +83,7 @@ SPECIAL_ATTRIBUTES = ["name", "role", "datatype", "description",
                       "id", "path", "checksum", "size"]
 
 
-class Entity(object):
+class Entity:
 
     """Entity is a generic CaosDB object.
 
@@ -101,6 +102,8 @@ class Entity(object):
         self._checksum = None
         self._size = None
         self._upload = None
+        # If an entity is used (e.g. as parent), it is wrapped instead of being used directly.
+        # see Entity._wrap()
         self._wrapped_entity = None
         self._version = None
         self._cuid = None
@@ -111,7 +114,7 @@ class Entity(object):
         self.value = value
         self.messages = _Messages()
         self.properties = _Properties()
-        self.parents = _Parents()
+        self.parents = _ParentList()
         self.path = None
         self.file = None
         self.unit = None
@@ -458,18 +461,30 @@ class Entity(object):
                      unit=None, importance=None, inheritance=None):  # @ReservedAssignment
         """Add a property to this entity.
 
-        The first parameter is meant to identify the property entity. So the method expects an instance of
-        Entity, an integer or a string here. The second parameter is the value of the new property. Any
-        other named parameter may be passed by means of the keywwords. Accepted keywords are:
-        id, name, description, importance, inheritance, datatype, and unit. Any other keyword will be
-        ignored right now. But that may change in the future.
+        The first parameter is meant to identify the property entity either via
+        its id or name, or by providing the corresponding ``Entity`` Python
+        object. The second parameter is the value of the new property. Any other
+        named parameter may be passed by means of the keywwords. Accepted
+        keywords are: id, name, description, importance, inheritance, datatype,
+        and unit.
+
+        Notes
+        -----
+        If you want to add a property to an already existing entity, the
+        property ``id`` of that property needs to be specified before you send
+        the updated entity to the server.
 
         Parameters
         ----------
-        property : int, str, Property, optional
-            An identifying parameter, by default None
-        value : int, str, Property, optional
-            The value of the new property, by default None
+        property : int, str, Entity, optional
+            An identifier for the property to be added, either its name, its id,
+            or the corresponding Entity Python object. If ``None``, either the
+            `name` or the `id` argument have to be specified explicitly. Default
+            is ``None``.
+        value : int, str, bool, datetime, Entity, or list of these types, optional
+            The value of the new property. In case of a reference to another
+            entity, this value may be the referenced entities id or the
+            ``Entity`` as a Python object. Default is None.
         id : int, optional
             Id of the property, by default None
         name : str, optional
@@ -488,17 +503,64 @@ class Entity(object):
         Returns
         -------
         Entity
+            This Entity object to which the new property has been added.
 
-        Raises
-        ------
+        Warns
+        -----
         UserWarning
             If the first parameter is None then id or name must be defined and not be None.
         UserWarning
             If the first parameter is an integer then it is interpreted as the id and id must be
             undefined or None.
         UserWarning
-             If the first parameter is not None and neither an instance of Entity nor an integer it is
+            If the first parameter is not None and neither an instance of Entity nor an integer it is
             interpreted as the name and name must be undefined or None.
+
+        Raises
+        ------
+        ValueError:
+            If you try to add an ``Entity`` object with File or Record role (or,
+            equivalently, a ``File`` or ``Record`` object) as a property, a
+            ``ValueError`` is raised.
+
+        Examples
+        --------
+        Add a simple integer property with the name ``TestProp`` and the value
+        27 to a Record:
+
+        >>> import caosdb as db
+        >>> rec = db.Record(name="TestRec").add_parent(name="TestType")
+        >>> rec.add_property("TestProp", value=27)  # specified by name, you could equally use the property's id if it is known
+
+        You can also use the Python object:
+
+        >>> prop = db.Property(name="TestProp", datatype=db.INTEGER)
+        >>> rec.add_property(prop, value=27)  # specified via the Python object
+
+        In case of updating an existing Record, the Property needs to be
+        specified by id:
+
+        >>> rec = db.Record(name="TestRec").retrieve()
+        >>> prop2 = db.Property(name="OtherTestProp").retrieve()
+        >>> rec.add_property(id=prop2.id, value="My new value")
+        >>> rec.update()
+
+        Let's look at the more advanced example of adding a list of integers as
+        value of the above integer ``TestProp``:
+
+        >>> rec.add_property("TestProp", value=[27,28,29], datatype=db.LIST(db.INTEGER))
+
+        Note that since `TestProp` is a scalar integer Property, the datatype
+        `LIST<INTEGER>` has to be specified explicitly.
+
+        Finally, we can also add reference properties, specified by the RecordType of the referenced entity.
+
+        >>> ref_rec = db.Record(name="ReferencedRecord").add_parent(name="OtherRT")
+        >>> rec.add_property(name="OtherRT", value=ref_rec)  # or value=ref_rec.id if ref_rec has one set by the server
+
+        See more on adding properties and inserting data in
+        https://docs.indiscale.com/caosdb-pylib/tutorials/Data-Insertion.html.
+
         """
 
         pid = id
@@ -530,7 +592,7 @@ class Entity(object):
                                 value=value, unit=unit)
 
         if abstract_property is not None:
-            new_property._wrap(property)
+            new_property._wrap(abstract_property)
 
             # FIXME: this really necessary?
 
@@ -585,11 +647,13 @@ class Entity(object):
             entity. If no `inheritance` is given, no properties will be inherited by the child.
             This parameter is case-insensitive.
 
-             Note that the behaviour is currently not yet specified when assigning parents to
-            Records, it only works for inheritance of RecordTypes (and Properties).
-
-            For more information, it is recommended to look into the
-            :ref:`data insertion tutorial<tutorial-inheritance-properties>`.
+        Notes
+        -----
+        Note that the behaviour of the `inheritance` argument currently has not
+        yet been specified when assigning parents to Records, it only works for
+        inheritance of RecordTypes (and Properties). For more information, it is
+        recommended to look into the :ref:`data insertion
+        tutorial<tutorial-inheritance-properties>`.
 
         Raises
         ------
@@ -621,26 +685,46 @@ class Entity(object):
 
         return self
 
-    def has_parent(self, parent, recursive=True,
-                   check_name=True, check_id=False):
-        """Checks if this entity has a given parent.
+    def has_parent(self, parent: Entity, recursive: bool = True, retrieve: bool = True,
+                   check_name: bool = True, check_id: bool = False):
+        """Check if this entity has a given parent.
 
         If 'check_name' and 'check_id' are both False, test for identity
         on the Python level. Otherwise use the name and/or ID for the
         check. Note that, if checked, name or ID should not be None,
         lest the check fail.
 
-        @param parent: Check for this parent.
-        @param recursive: Whether to check recursively.
-        @param check_name: Whether to use the name for ancestry check.
-        @param check_id: Whether to use the ID for ancestry check.
-        @return: True if 'parent' is a true parent, False otherwise.
-        """
+Parameters
+----------
+
+parent: Entity
+  Check for this parent.
+
+recursive: bool, optional
+  Whether to check recursively.
+
+check_name: bool, optional
+  Whether to use the name for ancestry check.
+
+check_id: bool, optional
+  Whether to use the ID for ancestry check.
+
+retrieve: bool, optional
+  If False, do not retrieve parents from the server.
+
+Returns
+-------
+out: bool
+  True if ``parent`` is a true parent, False otherwise.
+"""
 
         if recursive:
-            parents = self.get_parents_recursively()
+            parents = self.get_parents_recursively(retrieve=retrieve)
         else:
-            parents = [pp._wrapped_entity for pp in self.parents]
+            if retrieve:
+                parents = [pp.retrieve()._wrapped_entity for pp in self.parents]
+            else:
+                parents = [pp._wrapped_entity for pp in self.parents]
 
         if not (check_name or check_id):
             return parent in parents
@@ -659,39 +743,61 @@ class Entity(object):
     def get_parents(self):
         """Get all parents of this entity.
 
-        @return: _Parents(list)
+        @return: _ParentList(list)
         """
 
         return self.parents
 
-    def get_parents_recursively(self):
+    def get_parents_recursively(self, retrieve: bool = True):
         """Get all ancestors of this entity.
 
-        @return: list of Entities
-        """
+Parameters
+----------
+
+retrieve: bool, optional
+  If False, do not retrieve parents from the server.
 
-        all_parents = _Parents()
-        self._get_parent_recursively(all_parents)
+Returns
+-------
+out: List[Entity]
+  The parents of this Entity
+"""
+
+        all_parents = []
+        self._get_parent_recursively(all_parents, retrieve=retrieve)
 
         return all_parents
 
-    def _get_parent_recursively(self, all_parents):
+    def _get_parent_recursively(self, all_parents: list, retrieve: bool = True):
         """Get all ancestors with a little helper.
 
         As a side effect of this method, the ancestors are added to
         all_parents.
 
-        @param all_parents: The added parents so far.
+        @param all_parents: list, The added parents so far.
 
         @return: None, but see side effects.
         """
 
         for parent in self.parents:
+            # TODO:
+            # Comment on _wrap and _wrapped_entity
+            # Currently, I (henrik) do not why the wrapping is necessary (and it is not
+            # documented). However, the following illustrates, why I think, it is a bad idea.
+            # First you add a parent with rec.add_parent(parent), but then you cannot access
+            # attributes of parent when you use rec.parents[0] for example becasue you do not get
+            # the same object but a wrapping object and you need to know that you only get the
+            # original by accessing the private (!) _wrapped_entity object.
             w_parent = parent._wrapped_entity
+            if retrieve:
+                parent.retrieve()
+                for next_parent in parent.parents:
+                    w_parent.add_parent(next_parent)
 
-            if w_parent not in all_parents:
+            if (w_parent.id, w_parent.name) not in [
+                    (all_p.id, all_p.name) for all_p in all_parents]:
                 all_parents.append(w_parent)
-                w_parent._get_parent_recursively(all_parents)
+                w_parent._get_parent_recursively(all_parents, retrieve=retrieve)
 
     def get_parent(self, key):
         """Return the first parent matching the key or None if no match exists.
@@ -1135,7 +1241,7 @@ class Entity(object):
             else:
                 raise TypeError(
                     'Child was neither a Property, nor a Parent, nor a Message.\
-                    Was ' + str(type(child)))
+                    Was ' + str(type(child)) + "\n" + str(child))
 
         # add VALUE
         value = None
@@ -1240,12 +1346,19 @@ class Entity(object):
         anyway. Set the flag 'strict' to True in order to force the server to take all warnings as errors.
         This prevents the server from inserting this entity if any warning occurs.
 
-        @param strict=False:                  Flag for strict mode.
-        @param raise_exception_on_error=True: Flag to raise an
-            exception when an error occurs.
-        @param unique=True:                   Flag to only allow
-            insertion of elements with unique names.
-        @param flags:                         A dictionary of flags to be send with the insertion.
+        Parameters
+        ----------
+        strict : bool, optional
+            Flag for strict mode. Default is False.
+        raise_exception_on_error : bool, optional
+            Flag to raise an exception when an error occurs. Default is True.
+        unique : bool, optional
+            Flag to only allow insertion of elements with unique names. Default
+            is True.
+        flags : dict, optional
+            A dictionary of flags to be send with the insertion. Default is
+            None.
+
         """
 
         return Container().append(self).insert(
@@ -1296,6 +1409,12 @@ class Entity(object):
             flags=flags)[0]
 
     def _wrap(self, entity):
+        """
+        When entity shall be used as parent or property it is not added to the corresponding list
+        (such as the parent list) directly, but another Entity object is created and the original
+        Entity is wrapped using this function
+        TODO: document here and in dev docs why this is done.
+        """
         self._wrapped_entity = entity
 
         return self
@@ -1599,6 +1718,7 @@ class Property(Entity):
 
     def add_property(self, property=None, value=None, id=None, name=None, description=None, datatype=None,
                      unit=None, importance=FIX, inheritance=FIX):  # @ReservedAssignment
+        """See ``Entity.add_property``."""
 
         return super().add_property(
             property=property, id=id, name=name, description=description, datatype=datatype,
@@ -1732,6 +1852,7 @@ class RecordType(Entity):
 
     def add_property(self, property=None, value=None, id=None, name=None, description=None, datatype=None,
                      unit=None, importance=RECOMMENDED, inheritance=FIX):  # @ReservedAssignment
+        """See ``Entity.add_property``."""
 
         return super().add_property(
             property=property, id=id, name=name, description=description, datatype=datatype,
@@ -1787,6 +1908,7 @@ class Record(Entity):
 
     def add_property(self, property=None, value=None, id=None, name=None, description=None, datatype=None,
                      unit=None, importance=FIX, inheritance=FIX):  # @ReservedAssignment
+        """See ``Entity.add_property``."""
 
         return super().add_property(
             property=property, id=id, name=name, description=description, datatype=datatype,
@@ -1944,6 +2066,7 @@ class File(Record):
 
     def add_property(self, property=None, id=None, name=None, description=None, datatype=None,
                      value=None, unit=None, importance=FIX, inheritance=FIX):  # @ReservedAssignment
+        """See ``Entity.add_property``."""
 
         return super().add_property(
             property=property, id=id, name=name, description=description, datatype=datatype,
@@ -2094,7 +2217,8 @@ class _Properties(list):
         raise KeyError(str(prop) + " not found.")
 
 
-class _Parents(list):
+class _ParentList(list):
+    # TODO unclear why this class is private. Isn't it use full for users?
 
     def _get_entity_by_cuid(self, cuid):
         '''
@@ -2697,9 +2821,11 @@ class Container(list):
         elif isinstance(entity, QueryTemplate):
             super().append(entity)
         else:
-            raise TypeError(
-                "Entity was neither an id nor a name nor an entity." +
-                " (was " + str(type(entity)) + ")")
+            warn("Entity was neither an id nor a name nor an entity." +
+                 " (was " + str(type(entity)) + ":\n" + str(entity) + ")")
+            # raise TypeError(
+            #     "Entity was neither an id nor a name nor an entity." +
+            #     " (was " + str(type(entity)) + "\n" + str(entity) + ")")
 
         return self
 
@@ -3647,6 +3773,7 @@ class Container(list):
             for p in e.get_properties():
                 if p.id is None:
                     if p.name is not None:
+                        # TODO using try except for normal execution flow is bad style
                         try:
                             w = self.get_entity_by_name(p.name)
                             p._wrap(w)
@@ -3658,6 +3785,7 @@ class Container(list):
             for p in e.get_parents():
                 if p.id is None:
                     if p.name is not None:
+                        # TODO using try except for normal execution flow is bad style
                         try:
                             p._wrap(self.get_entity_by_name(p.name))
                         except KeyError:
diff --git a/src/doc/conf.py b/src/doc/conf.py
index dd2a1ac171711f3cde30059456826434cffb7915..54d75bd0e70138d3c90020e6058edb4403f838f0 100644
--- a/src/doc/conf.py
+++ b/src/doc/conf.py
@@ -29,10 +29,10 @@ copyright = '2022, IndiScale GmbH'
 author = 'Daniel Hornung'
 
 # The short X.Y version
-version = '0.11.1'
+version = '0.11.3'
 # The full version, including alpha/beta/rc tags
 # release = '0.5.2-rc2'
-release = '0.11.1-dev'
+release = '0.11.3-dev'
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/src/doc/high_level_api.rst b/src/doc/high_level_api.rst
index 603052b135ad2289caea7e3bed59ae9d3301f811..e92f2dd5e326b14222ad3c776ce5f5ed1ed31536 100644
--- a/src/doc/high_level_api.rst
+++ b/src/doc/high_level_api.rst
@@ -60,7 +60,7 @@ it using its high level representation:
 
    from caosdb.high_level_api import query
 
-   res = query("FIND Record Experiment")
+   res = query("FIND Experiment")
    experiment = res[0]
    # Use a property:
    print(experiment.date)
@@ -80,7 +80,7 @@ series of commands to achieve the same result:
 
    import caosdb as db
 
-   res = db.execute_query("FIND Record Experiment")
+   res = db.execute_query("FIND Experiment")
    output = res.get_property("output")
    output_file = db.File(id=output.value[0].id).retrieve()
    print(output_file.path)
diff --git a/src/doc/tutorials/Data-Insertion.rst b/src/doc/tutorials/Data-Insertion.rst
index f2c7f830d1403fbdf45354d1f36a4ea339759058..9060345c836a43c57f8039d40020082a7f342b02 100644
--- a/src/doc/tutorials/Data-Insertion.rst
+++ b/src/doc/tutorials/Data-Insertion.rst
@@ -83,33 +83,86 @@ corresponding python class:
 
 .. code:: python
 
-   rec = db.Record()
+   rec = db.Record() # rec.id is None
    rec.add_parent(name="Experiment")
    rec.add_property(name="date", value="2020-01-07")
    rec.insert()
+   print(rec.id) # rec.id set by the server
+
+Here, the record has a parent, the RecordType “Experiment”, and a Property date
+with a value ``"2020-01-07"``. After the successful insertion, our new Record is
+assigned an ``id`` by the server. In the following, let's assume this id to be
+``256``.
+
+Reference Properties
+--------------------
+
+Now suppose we want to insert an analysis that references the above experiment
+record as its source data. Since we know that the id of the experiment record is
+256, we can do the following:
+
+.. code:: python
+
+   ana = db.Record().add_parent(name="Analysis") # Create record and assign parent in one line
+   ana.add_property(name="Experiment", value=256)
+   ana.add_propertt(name="date", value="2020-01-08")
+   # possibly, add more properties here ...
+   ana.insert()
+
+The experiment record's id is used as the value of the ``Experiment`` property
+of the analysis Record (note how we use the RecordType ``Experiment`` as a
+``REFERENCE`` property here). Sending a CaosDB query like ``FIND RECORD
+Experiment WHICH IS REFERENCED BY A Analysis WITH date=2020-01-08`` would now
+return our original experiment record.
 
-Here, the record has a parent: The RecordType “Experiment”. And a
-Property: date.
+Equivalently, we can also use the Python object of the experiment record, i.e.,
+``rec`` as the value of the ``Experiment`` property:
 
-Note, that if you want to use a property that is not a primitive
-datatype like db.INTEGER and so on, you need to use the ID of the Entity
-that you are referencing.
+
+.. code:: python
+
+   ana = db.Record().add_parent(name="Analysis")
+   ana.add_property(name="Experiment", value=rec)
+   ana.add_propertt(name="date", value="2020-01-08")
+   # possibly, add more properties here ...
+   ana.insert()
+
+Finally, we can also insert both records at the same time using a
+``db.Container``:
 
 .. code:: python
 
    rec = db.Record()
    rec.add_parent(name="Experiment")
-   rec.add_property(name="report", value=235507)
-   rec.add_property(name="Analysis", value=230007)
-   rec.insert()
+   rec.add_property(name="date", value="2020-01-07")
+   ana = db.Record().add_parent(name="Analysis")
+   ana.add_property(name="Experiment", value=rec)
+   ana.add_propertt(name="date", value="2020-01-08")
+
+   cont = db.Container().extend([rec, ana]) # Add experiment and analysis
+                                            # records to our container
+   cont.insert() # Insert both at the same time, the CaosDB server will
+                 # resolve the reference upon insertion.
+
+All three ways result in an Analysis record which references an Experiment
+record.
+
+.. note::
+
+   Instead of using the ``Experiment`` RecordType as a ``REFERENCE`` porperty,
+   we can also create an actual property with data type ``Experiment``:
+   ``db.property(name="source", datatype="Experiment")``. Now you can add this
+   property to the analysis record with the experiment record as a value as
+   explained above. As a rule of thumbs, using a separate property for these
+   references is meaningful whenever you want to highlight that, e.g., this
+   particular experiment provided the source data for your analysis (as opposed
+   to another experiment that was used for validation).
 
-Of course, the IDs 235507 and 230007 need to exist in CaosDB. The first
-example shows how to use a db.REFERENCE Property (report) and the second
-shows that you can use any RecordType as Property to reference a Record
-that has such a parent.
+Advanced insertions
+-------------------
 
-Most Records do not have name however it can absolutely make sense. In
-that case use the name argument when creating it. Another useful feature
+Most Records do not have a name, however it can absolutely make sense to assign
+one. In that case use the name argument when creating it. Another useful feature
 is the fact that properties can have units:
 
 .. code:: python
@@ -134,7 +187,7 @@ container. E.g. if you have a python list ``analysis_results``:
 
    cont.insert()
 
-Useful is also, that you can insert directly tabular data.
+It may also be usefull to know that you can insert directly tabular data.
 
 .. code:: python
 
@@ -144,8 +197,8 @@ Useful is also, that you can insert directly tabular data.
    print(recs)
    recs.insert()
 
-With this example file
-`test.csv <uploads/4f2c8756a26a3984c0af09d206d583e5/test.csv>`__.
+Try it yourself with this example file
+`test.csv <uploads/4f2c8756a26a3984c0af09d206d583e5/test.csv>`__!
 
 List Properties
 ---------------
diff --git a/src/doc/tutorials/complex_data_models.rst b/src/doc/tutorials/complex_data_models.rst
index 0fa868e78bb45a2905dc99392a3a28a9832d369e..7b45b6a2681bcf781fd4acc9329ffada28d4e01c 100644
--- a/src/doc/tutorials/complex_data_models.rst
+++ b/src/doc/tutorials/complex_data_models.rst
@@ -69,8 +69,9 @@ Examples
    c.insert()
 
    # Useful for testing: wait until the user presses a key
-   # Meanwhile have a look at the WebUI: You can e.g. query "FIND Test*" to view
-   # all the entities created here and see the relations and links between them.
+   # Meanwhile have a look at the WebUI: You can e.g. query "FIND ENTITY Test*"
+   # to view all the entities created here and see the relations and links
+   # between them.
    b = input("Press any key to cleanup.")
    # cleanup everything after the user presses any button.
    c.delete()
diff --git a/src/doc/tutorials/first_steps.rst b/src/doc/tutorials/first_steps.rst
index 486cd4d437c8b13a253cadc8ed45f49b4a7634e4..7366d391cdf50b1d9f9107fc2d47f28d9df7bf7f 100644
--- a/src/doc/tutorials/first_steps.rst
+++ b/src/doc/tutorials/first_steps.rst
@@ -25,7 +25,7 @@ However, you can also translate the examples to the data model that you have at
 
 Let's start with a simple query.
 
->>> response = db.execute_query("FIND RECORD Guitar")
+>>> response = db.execute_query("FIND Guitar")
 
 Queries work the same way as in the web interface. You simply provide the 
 query string to the corresponding function (``db.execute_query``). However, the result is not