diff --git a/documentation/docs/06_extend-cli.md b/documentation/docs/06_extend-cli.md
index 0caec85..09cf34d 100644
--- a/documentation/docs/06_extend-cli.md
+++ b/documentation/docs/06_extend-cli.md
@@ -11,7 +11,7 @@
 
 The main difference between the standard Docker/K8s installation is an improved communication between services running as containers and services running locally for development.
 
-The CLI can be found in the [main repository](https://github.com/apache/streampipes/tree/master/installer/cli) or in the ``compose/cli`` folder of the downloaded source code.
+The CLI can be found in the [main repository](https://github.com/apache/streampipes/tree/master/installer/cli) or in the ``installer/cli`` folder of the downloaded source code.
 
 ## TL;DR
 
diff --git a/documentation/docs/06_extend-tutorial-data-processors.md b/documentation/docs/06_extend-tutorial-data-processors.md
index 525b559..408159b 100644
--- a/documentation/docs/06_extend-tutorial-data-processors.md
+++ b/documentation/docs/06_extend-tutorial-data-processors.md
@@ -4,13 +4,13 @@
 sidebar_label: Tutorial: Data Processors
 ---
 
-In this tutorial, we will add a new data processor using the standalone wrapper.
+In this tutorial, we will add a new data processor.
 
-From an architectural point of view, we will create a self-contained service that includes the description of the data processor and a an implementation.
+From an architectural point of view, we will create a self-contained service that includes the description of the data processor and an implementation.
 
 ## Objective
 
-We are going to create a new data processor that realized a simple geofencing algorithm - we detect vehicles that enter a specified radius around a user-defined location.
+We are going to create a new data processor that realizes a simple geofencing algorithm - we detect vehicles that enter a specified radius around a user-defined location.
 This pipeline element will be a generic element that works with any event stream that provides geospatial coordinates in form of a latitude/longitude pair.
 
 The algorithm outputs every location event once the position has entered the geofence.
@@ -32,7 +32,7 @@
 ```
 mvn archetype:generate \
 -DarchetypeGroupId=org.apache.streampipes -DarchetypeArtifactId=streampipes-archetype-extensions-jvm \
--DarchetypeVersion=0.69.0 -DgroupId=my.groupId \
+-DarchetypeVersion=0.70.0 -DgroupId=my.groupId \
 -DartifactId=my-example -DclassNamePrefix=MyExample -DpackageName=mypackagename
 ```
 
@@ -76,7 +76,7 @@
 
  @Override
  public DataProcessorDescription declareModel() {
-  return ProcessingElementBuilder.create("org.streampipes.tutorial-geofencing")
+  return ProcessingElementBuilder.create("org.apache.streampipes.tutorial-geofencing")
           .category(DataProcessorType.ENRICH)
           .withAssets(Assets.DOCUMENTATION, Assets.ICON)
           .build();
@@ -108,7 +108,7 @@
 Delete the content within the ``declareModel`` method and add the following lines to the `declareModel` method:
 
 ```java
-return ProcessingElementBuilder.create("org.streampipes.tutorial.geofencing", "Geofencing", "A simple geofencing data processor")
+return ProcessingElementBuilder.create("org.apache.streampipes.tutorial.geofencing", "Geofencing", "A simple geofencing data processor")
 ```
 
 This creates a new data processor with the ID, title and description assigned to the element builder.
@@ -202,7 +202,7 @@
 int radius = parameters.extractor().singleValueParameter("radius", Float.class);
 ```
 
-Great! That's all we need to describe a data processor for usage in StreamPipes. Your controller class should look as follows:
+Great! That's all we need to describe a data processor for usage in StreamPipes. Your processor class should look as follows:
 
 ```java
 package org.apache.streampipes.pe.example;
@@ -281,7 +281,7 @@
 
 Everything we need to do now is to add an implementation.
 
-Open the class `GeofencingProcessor.java` and add the following piece of code to the onEvent method, which realizes the Geofencing functionality:
+Add the following piece of code to the onEvent method, which realizes the Geofencing functionality:
 
 ```java
 
@@ -343,14 +343,9 @@
 
 Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
 
-Execute the main method in the class `Init` we've just created, open a web browser and navigate to http://localhost:8090 (or the port you have assigned).
+Execute the main method in the class `Init` we've just created.
 
-You should see something as follows:
-
-<img src="/docs/img/tutorial-processors/pe-overview-flink.PNG" alt="Pipeline Element Container Overview">
-
-
-The services automatically registers itself in StreamPipes.
+The service automatically registers itself in StreamPipes.
 To install the just created element, open the StreamPipes UI and follow the manual provided in the [user guide](03_use-install-pipeline-elements.md).
 
 ## Read more
diff --git a/documentation/docs/06_extend-tutorial-data-sinks.md b/documentation/docs/06_extend-tutorial-data-sinks.md
index c0a664c..f2d14e7 100644
--- a/documentation/docs/06_extend-tutorial-data-sinks.md
+++ b/documentation/docs/06_extend-tutorial-data-sinks.md
@@ -23,7 +23,7 @@
 
 ```
 mvn archetype:generate -DarchetypeGroupId=org.apache.streampipes \
--DarchetypeArtifactId=streampipes-archetype-extensions-jvm -DarchetypeVersion=0.68.0 \
+-DarchetypeArtifactId=streampipes-archetype-extensions-jvm -DarchetypeVersion=0.70.0 \
 -DgroupId=org.streampipes.tutorial -DartifactId=sink-tutorial -DclassNamePrefix=Rest -DpackageName=mypackage
 ```
 
@@ -63,7 +63,7 @@
 
   @Override
   public DataSinkDescription declareModel() {
-    return DataSinkBuilder.create("org.streampipes.tutorial.pe.sink.rest")
+    return DataSinkBuilder.create("org.apache.streampipes.tutorial.pe.sink.rest")
         .category(DataSinkType.NOTIFICATION)
         .withAssets(Assets.DOCUMENTATION, Assets.ICON)
         .withLocales(Locales.EN)
@@ -219,9 +219,7 @@
 
 Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
 
-Execute the main method in the class `Init` we've just created, open a web browser and navigate to http://localhost:8090 (or the port you have assigned).
-
-The services automatically registers itself in StreamPipes.
+Execute the main method in the class `Init` we've just created. The service automatically registers itself in StreamPipes.
 
 To install the created element, open the StreamPipes UI and follow the manual provided in the [user guide](03_use-install-pipeline-elements.md).
 
diff --git a/documentation/docs/06_extend-tutorial-data-sources.md b/documentation/docs/06_extend-tutorial-data-sources.md
index 45a5f56..eadd8e8 100644
--- a/documentation/docs/06_extend-tutorial-data-sources.md
+++ b/documentation/docs/06_extend-tutorial-data-sources.md
@@ -32,7 +32,7 @@
 ```
 mvn archetype:generate \
 -DarchetypeGroupId=org.apache.streampipes -DarchetypeArtifactId=streampipes-archetype-extensions-jvm \
--DarchetypeVersion=0.69.0 -DgroupId=my.groupId \
+-DarchetypeVersion=0.70.0 -DgroupId=my.groupId \
 -DartifactId=my-source -DclassNamePrefix=MySource -DpackageName=mypackagename
 ```
 
@@ -75,7 +75,7 @@
 
 Next, we will add the definition of the data stream. Add the following code inside of the `declareModel` method:
 ```java
-return DataStreamBuilder.create("org.streampipes.tutorial.vehicle.position", "Vehicle Position", "An event stream " +
+return DataStreamBuilder.create("org.apache.streampipes.tutorial.vehicle.position", "Vehicle Position", "An event stream " +
           "that produces current vehicle positions")
 ```
 
@@ -104,11 +104,10 @@
 This can be achieved by extending the builder with the respective properties:
 ```java
 .format(Formats.jsonFormat())
-.protocol(Protocols.kafka("localhost", 9094, "TOPIC_SHOULD_BE_CHANGED"))
+.protocol(Protocols.kafka("localhost", 9094, "org.apache.streampipes.tutoria.vehicle"))
 .build();
 ```
 
-Set ``org.streampipes.tutorial.vehicle`` as your new topic by replacing the term ``TOPIC_SHOULD_BE_CHANGED`.
 
 In this example, we defined that the data stream consists of events in a JSON format and that Kafka is used as a message broker to transmit events.
 The last build() method call triggers the construction of the data stream definition.
@@ -129,7 +128,7 @@
       for (;;) {
         JsonObject jsonObject = new JsonObject();
         jsonObject.addProperty("timestamp", System.currentTimeMillis());
-        jsonObject.addProperty("plateNumber", "KA-FZ 1");
+        jsonObject.addProperty("plateNumber", "KA-SP 1");
         jsonObject.addProperty("latitude", random.nextDouble());
         jsonObject.addProperty("longitude", random.nextDouble());
     
@@ -191,19 +190,9 @@
 
 Now we are ready to start our first container!
 
-Execute the main method in the class `Init`, open a web browser and navigate to http://localhost:8090, or change the port according to the value of the ``SP_PORT`` variable in the env file.
-
 Configure your IDE to provide an environment variable called ``SP_DEBUG`` with value ``true`` when starting the project.
 
-You should see something as follows:
-
-<img src="/docs/img/tutorial-sources/pe-overview.PNG" alt="Pipeline Element Container Overview">
-
-Click on the link of the data source to see the generated description of the pipeline element.
-
-<img src="/docs/img/tutorial-sources/pe-rdf.PNG" alt="Pipeline Element description">
-
-The container automatically registers itself in StreamPipes.
+The service automatically registers itself in StreamPipes.
 
 To install the just created element, open the StreamPipes UI and install the source over the ``Install Pipeline Elements`` section.
 
@@ -211,3 +200,5 @@
 
 Congratulations! You've just created your first pipeline element for StreamPipes.
 There are many more things to explore and data sources can be defined in much more detail.
+Also consider that in some cases, you would like to create a configurable adapter, 
+where a data source can be configured by users in the UI when connecting data.
