Merge branch 'main' into fix-bnd-link
diff --git a/conversion-notes.adoc b/conversion-notes.adoc
index 6c81cd8..aa83a56 100644
--- a/conversion-notes.adoc
+++ b/conversion-notes.adoc
@@ -186,11 +186,8 @@
 
 Title: ` :: replace with `= `
 
-Error `level 0 sections can only be used when doctype is book` :: More deeply nest sections so body sections are at least `== `.
-This may be facilitated in jetbrains products with an on-page regex search/replace from `
-(=+ )` to `
-
-=$1`.
+Error `level 0 sections can only be used when doctype is book` :: More deeply nest sections so body sections are at least ``== ``.
+This may be facilitated in jetbrains products with an on-page regex search/replace from ``(=+ )`` to `=$1`.
 
 There are numerous classes of problems this does not cover.
 The first step is probably to eliminate the command line errors/warnings.
@@ -236,7 +233,7 @@
 find modules -name "*.png" -exec sh -c     'echo mkdir -p `dirname $0`\\ngit mv $0 $0' {} \; |sed 's/\([gp]\) modules\/ROOT\/pages/\1 modules\/ROOT\/images/g' >>move-png.sh
 chmod u+x move-png.sh
 ./move-png.sh
----
+----
 
 You may need to move pngs with spaces in their filenames by hand.
 
diff --git a/downloads.list b/downloads.list
index 2229219..ac3ed0b 100644
--- a/downloads.list
+++ b/downloads.list
@@ -51,16 +51,16 @@
 Gogo Command|org.apache.felix.gogo.command|1.1.2|project||doc/changelog.txt
 Health Check Annotations|org.apache.felix.healthcheck.annotation|2.0.0|project||-
 Health Check API|org.apache.felix.healthcheck.api|2.0.4|project||-
-Health Check Core|org.apache.felix.healthcheck.core|2.0.10|project||-
-Health Check General Checks|org.apache.felix.healthcheck.generalchecks|2.0.8|project||-
+Health Check Core|org.apache.felix.healthcheck.core|2.0.14|project||-
+Health Check General Checks|org.apache.felix.healthcheck.generalchecks|3.0.0|project||-
 Health Check Webconsole Plugin|org.apache.felix.healthcheck.webconsoleplugin|2.0.2|project||-
-HTTP Service Base|org.apache.felix.http.base|4.1.4
-HTTP Service Bridge|org.apache.felix.http.bridge|4.1.4
-HTTP Service Jetty|org.apache.felix.http.jetty|4.1.12
+HTTP Service Base|org.apache.felix.http.base|4.2.0
+HTTP Service Bridge|org.apache.felix.http.bridge|4.2.0
+HTTP Service Jetty|org.apache.felix.http.jetty|4.2.0
 HTTP Service Proxy|org.apache.felix.http.proxy|3.0.6
 HTTP Service SSL filter|org.apache.felix.http.sslfilter|1.2.6
 HTTP Service Whiteboard|org.apache.felix.http.whiteboard|4.0.0
-HTTP Servlet 2.6 + 3.0 API|org.apache.felix.http.servlet-api|1.1.2
+HTTP Servlet 2.6 + 3.0 + 4.0 API|org.apache.felix.http.servlet-api|1.2.0
 Inventory Printer|org.apache.felix.inventory|1.0.6
 iPOJO (Core)|org.apache.felix.ipojo|1.12.1|project||-
 iPOJO Runtime Project (containing all iPOJO runtime modules)|org.apache.felix.ipojo.runtime-project|1.12.1|source-release||-
@@ -95,7 +95,7 @@
 Preferences|org.apache.felix.prefs|1.1.0
 Remote Shell|org.apache.felix.shell.remote|1.1.2|project||doc/changelog.txt
 Resolver|org.apache.felix.resolver|2.0.2|||doc/changelog.txt
-SCR (Declarative Services)|org.apache.felix.scr|2.1.26
+SCR (Declarative Services)|org.apache.felix.scr|2.2.0
 SCR Compat (Declarative Services)|org.apache.felix.scr.compat|1.0.4
 SCR Annotations|org.apache.felix.scr.annotations|1.12.0
 SCR DS Annotations|org.apache.felix.scr.ds-annotations|1.2.10
@@ -110,7 +110,7 @@
 User Admin File-based store|org.apache.felix.useradmin.filestore|1.0.2|project||-
 User Admin MongoDB-based store|org.apache.felix.useradmin.mongodb|1.0.1|project||-
 Utils|org.apache.felix.utils|1.11.0|||doc/changelog.txt
-Web Console|org.apache.felix.webconsole|4.7.0
+Web Console|org.apache.felix.webconsole|4.8.0
 Web Console (all-in-one bundle)|org.apache.felix.webconsole|4.6.0||all
 Web Console DS Plugin|org.apache.felix.webconsole.plugins.ds|2.1.0
 Web Console Event Admin Plugin|org.apache.felix.webconsole.plugins.event|1.1.8
diff --git a/modules/ROOT/examples/downloads.yml b/modules/ROOT/examples/downloads.yml
index 6f379b7..9b5d5ef 100644
--- a/modules/ROOT/examples/downloads.yml
+++ b/modules/ROOT/examples/downloads.yml
@@ -149,13 +149,13 @@
 
   - title: Health Check Core
     artifactId: org.apache.felix.healthcheck.core
-    version: 2.0.10
+    version: 2.0.14
     source_classifier: project
     changelog: false
 
   - title: Health Check General Checks
     artifactId: org.apache.felix.healthcheck.generalchecks
-    version: 2.0.8
+    version: 3.0.0
     source_classifier: project
     changelog: false
 
@@ -167,19 +167,19 @@
 
   - title: HTTP Service Base
     artifactId: org.apache.felix.http.base
-    version: 4.1.6
+    version: 4.2.0
     source_classifier: source-release
     changelog: false
 
   - title: HTTP Service Bridge
     artifactId: org.apache.felix.http.bridge
-    version: 4.1.6
+    version: 4.2.0
     source_classifier: source-release
     changelog: false
 
   - title: HTTP Service Jetty
     artifactId: org.apache.felix.http.jetty
-    version: 4.1.14
+    version: 4.2.0
     source_classifier: source-release
     changelog: false
 
@@ -201,9 +201,9 @@
     source_classifier: source-release
     changelog: false
 
-  - title: HTTP Servlet 2.6 + 3.0 API
+  - title: HTTP Servlet 2.6 + 3.0 + 4.0 API
     artifactId: org.apache.felix.http.servlet-api
-    version: 1.1.2
+    version: 1.2.0
     source_classifier: source-release
     changelog: false
 
@@ -264,7 +264,7 @@
 
   - title: SCR (Declarative Services)
     artifactId: org.apache.felix.scr
-    version: 2.1.26
+    version: 2.2.0
     source_classifier: source-release
     changelog: felix-dev/blob/master/scr/changelog.txt
 
@@ -321,7 +321,7 @@
 
   - title: Web Console
     artifactId: org.apache.felix.webconsole
-    version: 4.7.0
+    version: 4.8.0
     source_classifier: source-release
     changelog: felix-dev/blob/master/webconsole/changelog.txt
 
diff --git a/modules/ROOT/pages/community/contributing.adoc b/modules/ROOT/pages/community/contributing.adoc
index b9276ba..cdb149b 100644
--- a/modules/ROOT/pages/community/contributing.adoc
+++ b/modules/ROOT/pages/community/contributing.adoc
@@ -44,7 +44,7 @@
 For grants, you should:
 
 . Verify that you have the authorization to donate the code.
-. Review our xref:development.adoc[developer documentation] as well as the general https://www.apache.org/foundation/getinvolved.html[Apache documentation] to determine whether you would really like be involved with us and how we work.
+. Review our xref:development/coding-standards.adoc[developer documentation] as well as the general https://www.apache.org/foundation/getinvolved.html[Apache documentation] to determine whether you would really like be involved with us and how we work.
 . Assuming you're still interested, create a https://issues.apache.org/jira/browse/Felix[JIRA] issue describing the code you wish to donate.
 . Attach an archive containing the code along with an MD5 signature of the archive to the above issue.
 You should remove any existing headers from the source files and add the standard Apache header to each.
diff --git a/modules/ROOT/pages/development/release-management-nexus.adoc b/modules/ROOT/pages/development/release-management-nexus.adoc
index eed8e91..fb072e9 100644
--- a/modules/ROOT/pages/development/release-management-nexus.adoc
+++ b/modules/ROOT/pages/development/release-management-nexus.adoc
@@ -70,7 +70,11 @@
 . Make sure you have an updated change log file, typically in `doc/changelog.txt` but in the project root is also acceptable.
 . Make sure there are no snapshots in the POMs to be released
 . Check that your POMs will not lose content when they are rewritten during the release process
- ** `mvn release:prepare -DdryRun=true`
++
+[source,bash]
+----
+mvn release:prepare -DdryRun=true
+----
  ** diff the original `pom.xml` with the one called `pom.xml.tag` to see if the license or any other info has been removed.
 This has been known to happen if the starting `<project>` tag is not on a single line.
 The only things that should be different between these files are the `<version>` and `<scm>` elements.
@@ -79,8 +83,14 @@
 This is useful for existing builds that still depend on a snapshot version of this artifact.
 It means that the snapshot they will be getting is effectively the same as the released version.
 +
-`+$ mvn deploy     ...
-[INFO] [deploy:deploy]    [INFO] Retrieving previous build number from apache.snapshots.https    ...+`
+[source,bash]
+----
+$ mvn deploy
+...
+[INFO] [deploy:deploy]
+[INFO] Retrieving previous build number from apache.snapshots.https
+...
+----
  ** if you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the _Prerequisites_
  ** be sure that the generated artifacts respect the Apache release https://www.apache.org/dev/release.html[rules]: NOTICE and LICENSE files should be present in the META-INF directory within the jar.
 For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken.
@@ -88,11 +98,18 @@
  ** you should verify the deployment under the https://repository.apache.org/content/groups/snapshots/org/apache/felix[snapshot] repository on Apache
 . Prepare the release
 +
-`$ mvn release:clean      $ mvn release:prepare`
+[source,bash]
+----
+$ mvn release:clean
+$ mvn release:prepare
+----
  ** preparing the release will create the new tag in git, automatically checking in on your behalf
 . Stage the release for a vote
 +
-`$ mvn release:perform`
+[source,bash]
+----
+$ mvn release:perform
+----
  ** the release will automatically be inserted into a temporary staging repository for you, see the Nexus https://www.sonatype.com/books/nexus-book/reference/staging.html[staging documentation] for full details
  ** you can continue to use `mvn release:prepare` and `mvn release:perform` on other sub-projects as necessary on the same machine and they will be combined in the same staging repository - this is useful when making a release of the Felix framework and its associated bundles.
 . Close the staging repository
diff --git a/modules/ROOT/pages/faqs/apache-felix-scr-plugin-faq.adoc b/modules/ROOT/pages/faqs/apache-felix-scr-plugin-faq.adoc
index d1cecdc..35b487e 100644
--- a/modules/ROOT/pages/faqs/apache-felix-scr-plugin-faq.adoc
+++ b/modules/ROOT/pages/faqs/apache-felix-scr-plugin-faq.adoc
@@ -3,7 +3,7 @@
 
 
 This page provides answers to frequently asked questions using the Maven SCR Plugin.
-See xref:subprojects/apache-felix-maven-scr-plugin.adoc[] for documentation on that plugin.
+See xref:subprojects/apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.adoc[] for documentation on that plugin.
 
 == Should I still use the Apache Felix SCR annotations over the official OSGi annotations?
 
diff --git a/modules/ROOT/pages/news.adoc b/modules/ROOT/pages/news.adoc
index 1558ef5..b321cc8 100644
--- a/modules/ROOT/pages/news.adoc
+++ b/modules/ROOT/pages/news.adoc
@@ -1,5 +1,11 @@
 = News
 
+
+* Apache Felix Webconsole 4.8.0 (May 16th)
+* Apache Felix SCR 2.2.0 (February 23rd)
+* Apache Felix Http Jetty 4.2.0, Http Servlet API 1.2.0, Http Bridge 4.2.0, and Http Base 4.2.0 (February 20th)
+* Apache Felix Health Check Core 2.0.14 (February 17th, 2022)
+* Apache Felix Health Check Core 2.0.12, Health Check General Checks 3.0.0 (January 3rd, 2022)
 * Apache Felix Framework 7.0.3 and Framework Security 2.8.3 released (December 6th, 2021)
 * Apache Felix Configadmin Interpolation Plugin 1.2.2 released (October 29th, 2021)
 * Apache Felix Webconsole 4.7.0, Http Jetty 4.1.12, Http Base 4.1.4 and Http Bridge 4.1.4 released (September 5th, 2021)
diff --git a/modules/ROOT/pages/subprojects/apache-felix-dependency-manager/reference/dm-annotations.adoc b/modules/ROOT/pages/subprojects/apache-felix-dependency-manager/reference/dm-annotations.adoc
index b6db0d2..b949ab7 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-dependency-manager/reference/dm-annotations.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-dependency-manager/reference/dm-annotations.adoc
@@ -335,7 +335,7 @@
 So, during activation, the component goes through a number of states, where each transition  includes the invocation of the following lifecycle method callbacks on the service implementation:
 
 * http://felix.apache.org/apidocs/dependencymanager.annotations/r13/org/apache/felix/dm/annotation/api/Init.html[@Init]: this callback is invoked after all required dependencies have been injected.
-In this method, you can  yet add more dynamic dependencies using the DM API, or you can possibly configure other dependencies filter and required flags (see <<# Dynamic dependency configuration,Dynamic dependency configuration>>).
+In this method, you can  yet add more dynamic dependencies using the DM API, or you can possibly configure other dependencies filter and required flags (see <<_dynamic_dependency_configuration,Dynamic dependency configuration>>).
 * http://felix.apache.org/apidocs/dependencymanager.annotations/r13/org/apache/felix/dm/annotation/api/Start.html[@Start]: this callback is invoked after all required dependencies added in the @Init method have been injected.
 * http://felix.apache.org/apidocs/dependencymanager.annotations/r13/org/apache/felix/dm/annotation/api/Registered.html[@Registered]: this callback is invoked after the service component is registered (if the component provides a service).
 The callback can takes as argument a ServiceRegistration parameter.
@@ -354,7 +354,7 @@
 * inject all optional dependencies defined on class fields, possibly with a _NullObject_ if the  dependency is not available.
 * call the component init method (annotated with _@Init_, see (see  http://felix.apache.org/apidocs/dependencymanager.annotations/r13/org/apache/felix/dm/annotation/api/Init.html[@Init javadoc]).).
 In the init method, you are yet allowed to add some additional dependencies using the Dependency  Manager API or DM Lambda).
-Alternatively, you can also configure some  dependencies dynamically  (explained later, in <<#dynamic-dependency-configuration,Dynamic Dependency Configuration>>.
+Alternatively, you can also configure some  dependencies dynamically  (explained later, in <<_dynamic_dependency_configuration,Dynamic Dependency Configuration>>.
 
 2) Wait for extra required dependencies optionally configured from the init() method.
 When all extra  required dependencies are available:
diff --git a/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.adoc b/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.adoc
index 277823f..0275952 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-launching-and-embedding.adoc
@@ -117,6 +117,7 @@
 A stopped framework will be in the `Bundle.RESOLVED` state.
 It is possible to restart the framework, using the normal combination of `init()`/`start()` methods as previously described.
 
+[[_launching]]
 == Launching a Framework
 
 Launching a framework is fairly simple and involves only four steps:
@@ -282,6 +283,7 @@
 The framework is not active until the `start()` method is called.
 If no shell bundles are installed and started or if there is difficulty locating the shell bundles specified in the auto-start property, then it will appear as if the framework is hung, but it is actually running without any way to interact with it since the shell bundles provide the only means of interaction.
 
+[[_custom-launcher]]
 === Custom Framework Launcher
 
 This section creates a bare-bones launcher to demonstrate the minimum requirements for creating an interactive launcher for the Felix framework.
diff --git a/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.adoc b/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.adoc
index dca5ed0..4c9af94 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.adoc
@@ -1,16 +1,5 @@
 = Apache Felix Framework Usage Documentation
 
-* <<downloading-the-framework,Downloading the Framework>>
-* <<starting-the-framework,Starting the Framework>>
-* <<framework-shell,Framework Shell>>
- ** <<installing-bundles,Installing Bundles>>
- ** <<web-proxy-issues-when-installing-bundles,Web Proxy Issues when Installing Bundles>>
-* <<bundle-auto-deploy,Bundle Auto-Deploy>>
-* <<configuring-the-framework,Configuring the Framework>>
- ** <<system-property-substitution,System Property Substitution>>
-* <<configuring-bundles,Configuring Bundles>>
-* <<feedback,Feedback>>
-
 == Downloading the Framework
 
 Go to the link:{{ refs.downloads.path }}[downloads] page and download the latest Felix framework distribution.
@@ -115,7 +104,7 @@
 this string should be the user name and password separated by a colon (e.g., `rickhall:mypassword`).
 
 These system properties can be set directly on the command line when starting the JVM using the standard "[.code]``\-D<prop>=<value>``" syntax or you can put them in the `lib/system.properties` file of your Felix installation;
-see the next section on <<configuring-the-framework,configuring Felix>> for more information.
+see the next section on <<_configuring_the_framework,configuring Felix>> for more information.
 
 == Bundle Auto-Deploy
 
@@ -174,7 +163,7 @@
 Bundle properties may also be defined in the `conf/config.properties` property file.
 Any property placed in this file will be accessible via `BundleContext.getProperty()` at run time.
 The property file uses the standard Java property file syntax (i.e., attribute-value pairs).
-For information on changing the default location of this file, refer to the section on <<configuring-the-framework,configuring Felix>>.
+For information on changing the default location of this file, refer to the section on <<_configuring_the_framework,configuring Felix>>.
 
 == Feedback
 
diff --git a/modules/ROOT/pages/subprojects/apache-felix-gogo/rfc-147-overview.adoc b/modules/ROOT/pages/subprojects/apache-felix-gogo/rfc-147-overview.adoc
index e8b8aef..0379af5 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-gogo/rfc-147-overview.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-gogo/rfc-147-overview.adoc
@@ -53,20 +53,20 @@
 
 * basic commands
 
-[source,sh]ell
+[source,sh]
    g! echo hello world
    hello world
 
 * session variables
 
-[source,sh]ell
+[source,sh]
    g! msg = "hello world"
    g! echo $msg
    hello world
 
 * execution quotes `()` - similar to bash backquotes
 
-[source,sh]ell
+[source,sh]
    g! (bundle 1) location
    file:/Users/derek/Downloads/felix-framework-3.0.0/bundle/org.apache.felix.bundlerepository-1.6.2.jar
 
@@ -74,7 +74,7 @@
 
 * lists - `[]`
 
-[source,sh]ell
+[source,sh]
    g! list = [1 2 a b]
    1
    2
@@ -83,7 +83,7 @@
 
 * maps - `[]`
 
-[source,sh]ell
+[source,sh]
    g! map = [Jan=1 Feb=2 Mar=3]
    Jan                 1
    Feb                 2
@@ -91,7 +91,7 @@
 
 * pipes - `|`
 
-[source,sh]ell
+[source,sh]
    g! bundles | grep gogo
        2|Active     |    1|org.apache.felix.gogo.command (0.6.0)
        3|Active     |    1|org.apache.felix.gogo.runtime (0.6.0)
@@ -99,7 +99,7 @@
 
 * closures - `{}`
 
-[source,sh]ell
+[source,sh]
    g! echo2 = { echo xxx $args yyy }
    g! echo2 hello world
    xxx hello world yyy
@@ -108,7 +108,7 @@
 
 * exception handling - console shows summary, but full context available
 
-[source,sh]ell
+[source,sh]
    g! start xxx
    E: Cannot coerce start[xxx] to any of [(Bundle)]
    g! $exception printstacktrace
@@ -122,7 +122,7 @@
 
 * add all public methods on `java.lang.System` as commands:
 
-[source,sh]ell
+[source,sh]
    g! addcommand system (loadClass java.lang.System)
    g! system:getproperties
    sun.io.unicode.encodingUnicodeLittle
@@ -158,7 +158,7 @@
 
 then
 
-[source,sh]ell
+[source,sh]
  g! each [Jan Feb Mar] { echo $it | grep . }
  Jan
  Feb
diff --git a/modules/ROOT/pages/subprojects/apache-felix-inventory.adoc b/modules/ROOT/pages/subprojects/apache-felix-inventory.adoc
index 0392c4b..3e2964e 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-inventory.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-inventory.adoc
@@ -25,7 +25,7 @@
 
 To actually get access to the output of Inventory Printer services, though, the Apache Felix Web Console must be installed.
 
-In the future <<gogo-shell,Integration with the Apache Felix Gogo Shell>> will also be provided in which case the Apache Felix Gogo Shell must be installed.
+In the future <<_integration_with_the_apache_felix_gogo_shell,Integration with the Apache Felix Gogo Shell>> will also be provided in which case the Apache Felix Gogo Shell must be installed.
 
 == Inventory Printer Services
 
@@ -49,7 +49,7 @@
 | `felix.inventory.printer.format`
 | --
 | The property defining the supported rendering formats.
-The value of this property is either a string or a string array containing valid names of xref:apidocs/inventory/1.0.0/org/apache/felix/inventory/Format.html[`Format`].
+The value of this property is either a string or a string array containing valid names of link:{attachmentsdir}/apidocs/inventory/1.0.0/org/apache/felix/inventory/Format.html[`Format`].
 If this property is missing or contains invalid values, the printer is ignored.
 
 | `felix.inventory.printer.webconsole`
@@ -63,7 +63,7 @@
 Otherwise the service is ignored by the framework printing a message to the log.
 
 To prevent bundle resolution failure if the `InventoryPrinter` API is not available in the framework it is suggested to register the Inventory Printer services as service factories and dynamically import the API.
-See the question xref:tutorials-examples-and-presentations/apache-felix-osgi-faq.adoc#how-to-provide-optional-services[{{ ref.apache-felix-osgi-faq.title }}] in the Apache Felix OSGi FAQ for more details.
+See the question xref:tutorials-examples-and-presentations/apache-felix-osgi-faq.adoc#_how_to_provide_optional_services[How to provide optional services?] in the Apache Felix OSGi FAQ for more details.
 
 === Example Inventory Printer Service
 
@@ -95,7 +95,7 @@
      }
  }
 
-See also the link:/apidocs/inventory/1.0.0/[API JavaDoc].
+See also the link:{attachmentsdir}/apidocs/inventory/1.0.0/[API JavaDoc].
 
 == ZIP Attachment Provider
 
diff --git a/modules/ROOT/pages/subprojects/apache-felix-maven-bundle-plugin-bnd.adoc b/modules/ROOT/pages/subprojects/apache-felix-maven-bundle-plugin-bnd.adoc
index cc6ec6b..608add1 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-maven-bundle-plugin-bnd.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-maven-bundle-plugin-bnd.adoc
@@ -22,7 +22,7 @@
 == Simple Example
 
 Rather than going straight to a detailed list of plugin features, we will first look at a simple example of how to use the plugin to give an immediate flavor.
-A detailed "<<detailed-how-to,how to>>" will follow.
+A detailed "<<_detailed_how_to,how to>>" will follow.
 
 Assume that we have a simple bundle project that has a pubic API package an several implementation packages, such as:
 
@@ -53,14 +53,14 @@
 The `<Export-Package>` and `<Private-Package>` instructions tell the plugin about the contents of the resulting bundle JAR file.
 The `<Export-Package>` instruction tells the plugin which of the available packages to copy into the bundle _and_ export, while the `<Private-Package>` instruction indicates which of the available packages to copy into the bundle _but not_ export.
 If the two sets overlap, as they do in the case, then the export takes precedence.
-Since we did not specify any values for any other bundle manifest headers, they will assume default values which are described <<default-behavior,below>>.
+Since we did not specify any values for any other bundle manifest headers, they will assume default values which are described <<_default_behavior,below>>.
 One specific behavior to highlight is that the plugin generates the `Import-Package` bundle manifest header based on the contents of the bundle, which means that you generally do not ever need to explicitly specify it yourself.
 That's it.
 
 == Features
 
 The BND library underlying the plugin defines instructions to direct its behavior.
-For this Maven plugin, these instructions are issued in the plugin configuration section of the POM file, as was illustrated <<simple-example,above>>.
+For this Maven plugin, these instructions are issued in the plugin configuration section of the POM file, as was illustrated <<_simple_example,above>>.
 BND recognizes three types of instructions:
 
 . _Manifest headers_ - Any instruction that starts with a capital letter will appear in the resulting bundle's manifest file;
diff --git a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.adoc b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.adoc
index e0690f9..c337295 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/apache-felix-maven-scr-plugin-use.adoc
@@ -2,7 +2,7 @@
 
 == Using the Apache Felix Maven SCR Plugin to generate Declarative Services and Metatype Service descriptors during a Maven Build
 
-Support for automatic generation of the compenent and metadata descriptors is embeded in the `org.apache.felix:maven-scr-plugin` plugin.
+Support for automatic generation of the component and metadata descriptors is embedded in the `org.apache.felix:maven-scr-plugin` plugin.
 To use this plugin, it has to be declared in the project descriptor as a `<plugin>` element:
 [source,xml]
  <project>
@@ -69,32 +69,33 @@
    ...
  </project>
 
-These dependencies needs to be specified in order to have an easy way to opt-out the processing of one set or use other tools to process them.
+These dependencies need to be specified in order to have an easy way to opt-out the processing of one set or use other tools to process them.
 It's possible to specify both dependencies and use both annotations within a single project (however it's better to stay with one set).
 The plugin may be configured with the following properties (Check the version column to make sure you use at least this version for the mentioned feature):
 
-'''
-
-*`specVersion`*      + _Default_: Automatically detected  + _Since_: 1.4.0  + The plugin will generate a descriptor for the Declarative Service version (e.g.
+[%header,cols="2a,2a,1a,3a"]
+|===
+| Property | Default | Since | Description
+| *`specVersion`*      | Automatically detected  | 1.4.0  | The plugin will generate a descriptor for the Declarative Service version (e.g.
 1.0, 1.1, or 1.2).
 If no value is specified, the plugin will detect the version and only use 1.1 if features from this version are used.
---- *`generateAccessors`*      + _Default_: `true`  + _Since_:   + If this switch is turned on, the bind and unbind methods for unary references are automatically generated by the plugin.
---- *`scanClasses`*  + _Default_: `false`  + _Since_: 1.9.0  + By default the plugin scans the java source tree, if this is set to `true`, the generated classes directory is scanned instead.
---- *`sourceIncludes`*      + _Default_: `true`  + _Since_: 1.7.4  + Comma separated list of classes to include when processing the source.
---- *`sourceExcludes`*      + _Default_: `true`  + _Since_:  + Comma separated list of classes to exclude when processing the source.
---- *`strictMode`*      + _Default_: `false`  + _Since_:  + The plugin distinguishes between errors and warnings.
+| *`generateAccessors`*      | `true`  |   | If this switch is turned on, the bind and unbind methods for unary references are automatically generated by the plugin.
+| *`scanClasses`*  | `false`  | 1.9.0  | By default the plugin scans the java source tree, if this is set to `true`, the generated classes directory is scanned instead.
+| *`sourceIncludes`*      | `true`  | 1.7.4  | Comma separated list of classes to include when processing the source.
+| *`sourceExcludes`*      | `true`  |  | Comma separated list of classes to exclude when processing the source.
+| *`strictMode`*      | `false`  |  | The plugin distinguishes between errors and warnings.
 In strict mode warnings are treated as errors and cause the plugin to fail.
---- *`properties`*      + _Default_: None  + _Since_: 1.2.0  + A map of predefined properties.
+| *`properties`*      | None  | 1.2.0  | A map of predefined properties.
 These properties are set to each component (if the component does not define the property already).
 This is a map where the property name is made up by the included element name and the value is the value of the element.
---- *`outputDirectory`*      + _Default_: `${project.build.outputDirectory}`  + _Since_: 1.0.0  + The directory where all files are generated in.
---- *`supportedProjectTypes`*  + _Default_: `jar, bundle`  + _Since_: 1.8.0  + Project types which this plugin supports.
----
+| *`outputDirectory`*      | `${project.build.outputDirectory}`  | 1.0.0  | The directory where all files are generated in.
+| *`supportedProjectTypes`*  | `jar, bundle`  | 1.8.0  | Project types which this plugin supports.
+|===
 
 The metatype files are generated in the `OSGI-INF/metatype/` directory and the Declarative Services descriptor files in the `OSGI-INF` directory.
 
 The plugin will look for component annotations in all Java files found in the source directories of the project unless the `scanClasses` property indicates the class files are to be scanned instead.
-This is usefull if the annotations are actually defined in JVM-based languages such as Groovy or Scala.
+This is useful if the annotations are actually defined in JVM-based languages such as Groovy or Scala.
 
 == Using the descriptor
 
diff --git a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-annotations.adoc b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-annotations.adoc
index b06cc2c..613936f 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-annotations.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-annotations.adoc
@@ -12,11 +12,11 @@
 
 The following annotations are supported:
 
-* <<component,@Component>>
-* <<activate-deactivate-and-modified,@Activate, @Deactivate, and @Modified>>
-* <<service,@Service>>
-* <<property,@Property>>
-* <<reference,@Reference>>
+* <<_component,@Component>>
+* <<_activate_deactivate_and_modified,@Activate, @Deactivate, and @Modified>>
+* <<_service,@Service>>
+* <<_property,@Property>>
+* <<_reference,@Reference>>
 
 The annotations itself do _not_ support the new features from R6 or above.
 It is suggested to use the official OSGi annotations for Declarative Services instead.
@@ -32,31 +32,37 @@
 
 Supported attributes:
 
-'''
-
-*`ds`*  + _Default_: `true`  + _SCR Descriptor_: --  + _Metatype Descriptor_: --  + Whether Declarative Services descriptor is generated or not.
+[%header,cols="2a,2a,2a,2a,3a"]
+|===
+| Property | Default | SCR Descriptor | Metatype Descriptor | Description
+| *`ds`*  |  `true`  |   |   | Whether Declarative Services descriptor is generated or not.
 If this parameter is not set or set to `true` the Declarative Services descriptor is generated in the service descriptor file for this component.
 Otherwise no Declarative Services descriptor is generated for this component.
---- *`specVersion`*  + _Default_: `1.0`  + _SCR Descriptor_: --  + _Metatype Descriptor_: --  + Defines what Declarative Services specification the component is written against.
+| *`specVersion`*  |  `1.0`  |   |   | Defines what Declarative Services specification the component is written against.
 Though the Maven SCR Plugin is very good at detecting whether components are written against the original or a newer specification, there are some cases, where the plugin may fail.
 For these cases, the `specVersion` attribute may be set to the correct version.
 Currently supported values for this attribute are `1.0` and `1.1`.
 Since version 1.4.1 of the Maven SCR Plugin and version 1.0.1 of the SCR Annotations.
---- *`metatype`*  + _Default_: `false`  + _SCR Descriptor_: --  + _Metatype Descriptor_: --  + Whether Metatype Service data is generated or not.
+| *`metatype`*  |  `false`  |   |   | Whether Metatype Service data is generated or not.
 If this parameter is set to `true` Metatype Service data is generated in the `metatype.xml` file for this component.
 Otherwise no Metatype Service data is generated for this component.
---- *`componentAbstract`*  + _Default_: see <<abstract-service-descriptions,description>>  + _SCR Descriptor_: --  + _Metatype Descriptor_: --  + This marks an abstract service description which is not added to the descriptor but intended for reuse through inheritance.
+| *`componentAbstract`*  |  see <<_abstract_service_descriptions,description>>  |   |   | This marks an abstract service description which is not added to the descriptor but intended for reuse through inheritance.
 This attribute defaults to `true` for abstract classes and `false` for concrete classes.
---- *`inherit`*  + _Default_: `true`  + _SCR Descriptor_: --  + _Metatype Descriptor_: --  + Whether any service, property and reference declarations from base classes should be inherited by this class.
---- *`createPid`*  + _Default_: `true`  + _SCR Descriptor_: `service.pid`  + _Metatype Descriptor_: --  + Generate the `service.pid` property if non is declared.
---- *`name`*  + _Default_: Fully qualified name of the Java class  + _SCR Descriptor_: `component.name`  + _Metatype Descriptor_: `OCD.id`  + Defines the Component name also used as the PID for the Configuration Admin Service --- *`enabled`*  + _Default_: `true`  + _SCR Descriptor_: `component.enabled`  + _Metatype Descriptor_: --  + Whether the component is enabled when the bundle starts --- *`factory`*  + _Default_: --  + _SCR Descriptor_: `component.factory`  + _Metatype Descriptor_: --  + Whether the component is a factory component --- *`immediate`*  + _Default_: --  + _SCR Descriptor_: `component.immediate`  + _Metatype Descriptor_: --  + Whether the component is immediately activated --- *`policy`*  + _Default_: `OPTIONAL`  + _SCR Descriptor_: `component.policy`  + _Metatype Descriptor_: --  + The configuration policy for this component: `OPTIONAL`, `IGNORE`, or `REQUIRE`.
+| *`inherit`*  |  `true`  |   |   | Whether any service, property and reference declarations from base classes should be inherited by this class.
+| *`createPid`*  |  `true`  |  `service.pid`  |   | Generate the `service.pid` property if non is declared.
+| *`name`*  |  Fully qualified name of the Java class  |  `component.name`  | `OCD.id`  | Defines the Component name also used as the PID for the Configuration Admin Service
+| *`enabled`*  |  `true`  |  `component.enabled`  |   | Whether the component is enabled when the bundle starts
+| *`factory`*  |  |  `component.factory`  |   | Whether the component is a factory component
+| *`immediate`*  |  |  `component.immediate`  |   | Whether the component is immediately activated
+| *`policy`*  |  `OPTIONAL`  |  `component.policy`  |   | The configuration policy for this component: `OPTIONAL`, `IGNORE`, or `REQUIRE`.
 This attribute is supported since version 1.4.0 of the plugin and requires a Declarative Service implementation 1.1 or higher.
---- *`label`*  + _Default_: `%<name>.name`  + _SCR Descriptor_: --  + _Metatype Descriptor_: `OCD.name`  + This is generally used as a title for the object described by the meta type.
+| *`label`*  |  `%<name>.name`  |   | `OCD.name`  | This is generally used as a title for the object described by the meta type.
 This name may be localized by prepending a `%` sign to the name.
---- *`description`*  + _Default_: `%<name>.name`  + _SCR Descriptor_: --  + _Metatype Descriptor_: `OCD.description`  + This is generally used as a description for the object described by the meta type.
+| *`description`*  |  `%<name>.name`  |   | `OCD.description`  | This is generally used as a description for the object described by the meta type.
 This name may be localized by prepending a `%` sign to the name.
---- *`configurationFactory`*  + _Default_: `false`  + _SCR Descriptor_: --  + _Metatype Descriptor_: `Designate.factoryPid`  + Is this a configuration factory?
+| *`configurationFactory`*  |  `false`  |   | `Designate.factoryPid`  | Is this a configuration factory?
 (since 1.4.0)
+|===
 
 === Abstract Service Descriptions
 
@@ -73,7 +79,7 @@
 The `@Activate`, `@Deactivate`, and `@Modified` annotation can be used to mark a method to be used for the specified purpose.
 However, as the DS specifies a method search algorithm, there are rare cases where the marked method is not used (if there is another method with the same name, but a different signature this might happen).
 
-These annoations have no attribues.
+These annotations have no attributes.
 
 == @Service
 
@@ -85,15 +91,18 @@
 
 Supported attributes:
 
-'''
-
-*`value`*  + _Default_: All implemented interfaces  + _SCR Descriptor_: `provide.interface`  + The name of the service interface provided by the component.
+[%header,cols="2a,2a,2a,3a"]
+|===
+| Property | Default | SCR Descriptor | Description
+| *`value`*  | All implemented interfaces  | `provide.interface`  | The name of the service interface provided by the component.
 This can either be the fully qualified  name or just the interface class name if the interface is either in the same package or is imported.
-If this property is not set `provide` elements will be generated for all interfaces generated by the class --- *`serviceFactory`*  + _Default_: `false`  + _SCR Descriptor_: `service.servicefactory`  + Whether the component is registered as a `ServiceFactory` or not
+If this property is not set `provide` elements will be generated for all interfaces generated by the class 
+| *`serviceFactory`*  | `false`  | `service.servicefactory`  | Whether the component is registered as a `ServiceFactory` or not
+|===
 
 Omitting the `Service` annotation will just define (and activate if required) the component but not register it as a service.
 Multiple `Service` annotations may be declared each with its own `value`.
-These annotations need to be wrapped into a `Services` anotation.
+These annotations need to be wrapped into a `Services` annotation.
 The component is registered as a `ServiceFactory` if at least on `Service` annotations declares the `serviceFactory` attribute as `true`.
 
 == @Property
@@ -109,43 +118,45 @@
 
 Supported attributes:
 
-'''
-
-*`name`*  + _Default_: The name of constant  + _SCR Descriptor_: `property.name`  + _Metatype Descriptor_: `AD.id`  + The name of the property.
+[%header,cols="2a,2a,2a,2a,3a"]
+|===
+| Property | Default | SCR Descriptor | Metatype Descriptor | Description
+| *`name`*  |  The name of constant  |  `property.name`  |  `AD.id`  | The name of the property.
 If this tag is defined on a field with an initialization expression, the value of that expression is used as the name if the field is of type `String`.
---- *`value`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The string value of the property.
+| *`value`*  |   |  `property.value`  |  `AD.default`  | The string value of the property.
 This can either be a single value or an array.
---- *`longValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The long value of the property.
+| *`longValue`*  |   |  `property.value`  |  `AD.default`  | The long value of the property.
 This can either be a single value or an array.
---- *`doubleValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The double value of the property.
+| *`doubleValue`*  |   |  `property.value`  |  `AD.default`  | The double value of the property.
 This can either be a single value or an array.
---- *`floatValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The float value of the property.
+| *`floatValue`*  |   |  `property.value`  |  `AD.default`  | The float value of the property.
 This can either be a single value or an array.
---- *`intValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The int value of the property.
+| *`intValue`*  |   |  `property.value`  |  `AD.default`  | The int value of the property.
 This can either be a single value or an array.
---- *`byteValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The byte value of the property.
+| *`byteValue`*  |   |  `property.value`  |  `AD.default`  | The byte value of the property.
 This can either be a single value or an array.
---- *`charValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The char value of the property.
+| *`charValue`*  |   |  `property.value`  |  `AD.default`  | The char value of the property.
 This can either be a single value or an array.
---- *`boolValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The boolean value of the property.
+| *`boolValue`*  |   |  `property.value`  |  `AD.default`  | The boolean value of the property.
 This can either be a single value or an array.
---- *`shortValue`*  + _Default_: --  + _SCR Descriptor_: `property.value`  + _Metatype Descriptor_: `AD.default`  + The short value of the property.
+| *`shortValue`*  |   |  `property.value`  |  `AD.default`  | The short value of the property.
 This can either be a single value or an array.
---- *`label`*  + _Default_: `%<name>.name`  + _SCR Descriptor_: --  + _Metatype Descriptor_: `AD.name`  + The label to display in a form to configure this property.
+| *`label`*  |  `%<name>.name`  |   |  `AD.name`  | The label to display in a form to configure this property.
 This name may be localized by prepending a `%` sign to the name.
---- *`description`*  + _Default_: `%<name>.description`  + _SCR Descriptor_: --  + _Metatype Descriptor_: `AD.description`  + A descriptive text to provide the client in a form to configure this property.
+| *`description`*  |  `%<name>.description`  |   |  `AD.description`  | A descriptive text to provide the client in a form to configure this property.
 This name may be localized by prepending a `%` sign to the name.
---- *`propertyPrivate`*  + _Default_: Depending on the name  + _SCR Descriptor_: --  + _Metatype Descriptor_: See description Boolean flag defining whether a metatype descriptor entry should be generated for this property or not.
+| *`propertyPrivate`*  |  Depending on the name  |   |   | See description Boolean flag defining whether a metatype descriptor entry should be generated for this property or not.
 By default a metatype descriptor entry, i.e.
 an `AD` element, is generated except for the properties `service.pid`, `service.description`, `service.id`, `service.ranking`, `service.vendor`, `service.bundlelocation` and `service.factoryPid`.
 If a property should not be available for display in a configuration user interface, this parameter should be set to `true`.
---- *`cardinality`*  + _Default_: Depends on property value(s)  + _SCR Descriptor_: --  + _Metatype Descriptor_: `AD.cardinality`  + Defines the cardinality of the property and its collection type.
-If the cardinality is negative, the property is expected to be stored in a `java.util.Vector` (primitive types such as `boolean` are boxed in the Wrapper class), if the cardinality is positive, the property is stored in an array (primitve types are unboxed, that is `Boolean` type values are stored in `boolean\[\]({{ refs..path }})`).
+| *`cardinality`*  |  Depends on property value(s)  |   |  `AD.cardinality`  | Defines the cardinality of the property and its collection type.
+If the cardinality is negative, the property is expected to be stored in a `java.util.Vector` (primitive types such as `boolean` are boxed in the Wrapper class), if the cardinality is positive, the property is stored in an array (primitve types are unboxed, that is `Boolean` type values are stored in `boolean`).
 The actual value defines the maximum number of elements in the vector or array, where `Integer.MIN*INT` describes an unbounded Vector and `Integer.MAX*INT` describes an unbounded array.
 If the cardinality is zero, the property is a scalar value.
 If the defined value of the property is set in the `value` attribute, the cardinality defaults to `0` (zero for scalar value).
 If the property is defined in one or more properties starting with `values`, the cardinality defaults to `Integer.MAX_INT`, that is an unbounded array.
---- *`options`*  + _Default_: --  + _SCR Descriptor_: --  + _Metatype Descriptor_: <<the-options-attribute,See below>>  + See below for a description of the `options` attribute.
+| *`options`*  |   |   |  <<_the_options_attribute,See below>>  | See below for a description of the `options` attribute.
+|===
 
 Generating `<properties>` elements referring to bundle entries is not currently supported.
 
@@ -199,10 +210,10 @@
 Such scalar values are defined with the different `value` attributes of the `Property` annotation.
 In the case of a scalar property value, the `cardinality` parameter value is assumed to be `0` (zero) unless of course set otherwise.
 
-There may be properties, which have a list of values, such as a list of possible URL mappings for an URL Mapper.
+There may be properties, which have a list of values, such as a list of possible URL mappings for a URL Mapper.
 Such multiple values are defined just by comma separate as the value of the annotation parameter.
 
-If the cardinality of the property is not explicilty set with the `cardinality` property, it defaults to `Integer.MAX_INT`, i.e.
+If the cardinality of the property is not explicitly set with the `cardinality` property, it defaults to `Integer.MAX_INT`, i.e.
 unbound array, if multiple values are defined.
 Otherwise the `cardinality` parameter may be set for example to a negative value to store the values in a `java.util.Vector` instead.
 
@@ -218,22 +229,31 @@
 
 Supported parameters:
 
-'''
-
-*`name`*  + _Default_: Name of the field  + _SCR Descriptor_: `reference.name`  + The local name of the reference.
+[%header,cols="2a,2a,2a,3a"]
+|===
+| Property | Default | SCR Descriptor | Description
+| *`name`*  | Name of the field  | `reference.name`  | The local name of the reference.
 If the `Reference` annotation is declared in the class comment, this parameter is required.
-If the annotation is declared on a field, the default value for the `name` parameter is the name of the field --- *`interfaceReference`*  + _Default_: Type of the field  + _SCR Descriptor_: `reference.interface`  + The name of the service interface.
+If the annotation is declared on a field, the default value for the `name` parameter is the name of the field
+| *`interfaceReference`*  | Type of the field  | `reference.interface`  | The name of the service interface.
 This name is used by the Service Component Runtime to access the service on behalf of the component.
 If the `Reference` annotation is declared on a class level, this parameter is required.
-If the annoation is declared on a field, the default value for the `interfaceReference` parameter is the type of the field --- *`cardinality`*  + _Default_: `1..1`  + _SCR Descriptor_: `reference.cardinality`  + The cardinality of the service reference.
-This must be one of value from the enumeration `ReferenceCardinality` --- *`policy`*  + _Default_: `static`  + _SCR Descriptor_: `reference.policy`  + The dynamicity policy of the reference.
+If the annoation is declared on a field, the default value for the `interfaceReference` parameter is the type of the field
+| *`cardinality`*  | `1..1`  | `reference.cardinality`  | The cardinality of the service reference.
+This must be one of value from the enumeration `ReferenceCardinality`
+| *`policy`*  | `static`  | `reference.policy`  | The dynamicity policy of the reference.
 If `dynamic` the service will be made available to the component as it comes and goes.
 If `static` the component will be deactivated and re-activated if the service comes and/or goes away.
-This must be one of `static` and `dynamic` --- *`target`*  + _Default_: --  + _SCR Descriptor_: `reference.target`  + A service target filter to select specific services to be made available.
+This must be one of `static` and `dynamic`
+| *`target`*  |  | `reference.target`  | A service target filter to select specific services to be made available.
 In order to be able to overwrite the value of this value by a configuration property, this parameter must be declared.
-If the parameter is not declared, the respective declaration attribute will not be generated --- *`bind`*  + _Default_: See description  + _SCR Descriptor_: `reference.bind`  + The name of the method to be called when the service is to be bound to the component.
+If the parameter is not declared, the respective declaration attribute will not be generated
+| *`bind`*  | See description  | `reference.bind`  | The name of the method to be called when the service is to be bound to the component.
 The default value is the name created by appending the reference `name` to the string `bind`.
-The method must be declared `public` or `protected` and take single argument which is declared with the service interface type --- *`unbind`*  + _Default_: See description  + _SCR Descriptor_: `reference.unbind`  + The name of the method to be called when the service is to be unbound from the component.
+The method must be declared `public` or `protected` and take single argument which is declared with the service interface type
+| *`unbind`*  | See description  | `reference.unbind`  | The name of the method to be called when the service is to be unbound from the component.
 The default value is the name created by appending the reference `name` to the string `unbind`.
-The method must be declared `public` or `protected` and take single argument which is declared with the service interface type --- *`strategy`*  + _Default_: `event`  + _SCR Descriptor_: `reference.strategy`  + The strategy used for this reference, one of `event` or `lookup`.
+The method must be declared `public` or `protected` and take single argument which is declared with the service interface type
+| *`strategy`*  | `event`  | `reference.strategy`  | The strategy used for this reference, one of `event` or `lookup`.
 If the reference is defined on a field with a strategy of `event` and there is no bind or unbind method, the plugin will create the necessary methods.
+|===
\ No newline at end of file
diff --git a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-javadoc-tags.adoc b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-javadoc-tags.adoc
index 7fed954..ff66af5 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-javadoc-tags.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-maven-scr-plugin/scr-javadoc-tags.adoc
@@ -5,10 +5,10 @@
 
 The `scr` goal of the `maven-scr-plugin` looks for the following JavaDoc tags when building component descriptors:
 
-* <<scrcomponent,scr.component>>
-* <<scrproperty,scr.property>>
-* <<scrservice,scr.service>>
-* <<scrreference,scr.reference>>
+* <<_scr_component,scr.component>>
+* <<_scr_property,scr.property>>
+* <<_scr_service,scr.service>>
+* <<_scr_reference,scr.reference>>
 
 == scr.component
 
@@ -232,7 +232,7 @@
 | --
 | `AD.cardinality`
 | Defines the cardinality of the property and its collection type.
-If the cardinality is negative, the property is expected to be stored in a `java.util.Vector` (primitive types such as `boolean` are boxed in the Wrapper class), if the cardinality is positive, the property is stored in an array (primitve types are unboxed, that is `Boolean` type values are stored in `boolean\[\]({{ refs..path }})`).
+If the cardinality is negative, the property is expected to be stored in a `java.util.Vector` (primitive types such as `boolean` are boxed in the Wrapper class), if the cardinality is positive, the property is stored in an array (primitve types are unboxed, that is `Boolean` type values are stored in `boolean`).
 The actual value defines the maximum number of elements in the vector or array, where `Integer.MIN*INT` describes an unbounded Vector and `Integer.MAX*INT` describes an unbounded array.
 If the cardinality is zero, the property is a scalar value.
 If the defined value of the property is set in the `value` attribute, the cardinality defaults to `0` (zero for scalar value).
@@ -309,7 +309,7 @@
 Such multiple values are defined in one more parameters whose name starts with `values`.
 Each parameter must of course have a unique name which is not in any except to differentiate the parameters.
 
-If the cardinality of the property is not explicilty set with the `cardinality` property, it defaults to `Integer.MAX_INT`, i.e.
+If the cardinality of the property is not explicitly set with the `cardinality` property, it defaults to `Integer.MAX_INT`, i.e.
 unbound array, if multiple values with a series of `values` parameters are defined.
 Otherwise the `cardinality` parameter may be set for example to a negative value to store the values in a `java.util.Vector` instead.
 
diff --git a/modules/ROOT/pages/subprojects/apache-felix-web-console/extending-the-apache-felix-web-console.adoc b/modules/ROOT/pages/subprojects/apache-felix-web-console/extending-the-apache-felix-web-console.adoc
index a9916b3..4e3a45c 100644
--- a/modules/ROOT/pages/subprojects/apache-felix-web-console/extending-the-apache-felix-web-console.adoc
+++ b/modules/ROOT/pages/subprojects/apache-felix-web-console/extending-the-apache-felix-web-console.adoc
@@ -7,4 +7,4 @@
 * xref:subprojects/apache-felix-web-console/extending-the-apache-felix-web-console/branding-the-web-console.adoc[Branding the Web Console]
 * xref:subprojects/apache-felix-web-console/extending-the-apache-felix-web-console/web-console-output-templating.adoc[Web Console Output Templating]
 * xref:subprojects/apache-felix-web-console/extending-the-apache-felix-web-console/web-console-logging.adoc[Web Console Logging]
-* xref:subprojects/apache-felix-web-console/extending-the-apache-felix-web-console/web-console-security-provider.adoc[Web Console Security Provider]
+* xref:subprojects/apache-felix-web-console/web-console-security-provider.adoc[Web Console Security Provider]