diff --git a/contributing/index.html b/contributing/index.html
index d52fd3f..f08b0b2 100644
--- a/contributing/index.html
+++ b/contributing/index.html
@@ -10,11 +10,14 @@
 <title>Contributors Guide | CogniCrypt</title>
 <meta property="og:title" content="Contributors Guide | CogniCrypt" />
 <meta name="twitter:title" content="Contributors Guide | CogniCrypt" />
-<meta name="description" content="There are several opportunities for non-project-members to contribute to CogniCrypt. CognICrypt users may contribute bug reports and feature requests. Regular developers who take interest in CogniCrypt may provide bug fixes and other kind of code contributions. Lastly, cryptography experts may share their own cryptographic components so that they can be used by its users.
+<meta name="description" content="There are several opportunities for non-project-members to contribute to CogniCrypt: * CogniCrypt users may contribute Bug Reports and Feature Requests.
+* Regular developers who take interest in CogniCrypt may provide bug fixes and other kind of code contributions. * Lastly, cryptography experts may share their own cryptographic components so that they can be used by CogniCrypt users.
 Bug Reports and Feature Requests  In case you find a bug or have an idea for a feature, please check out CogniCrypt&rsquo;s issue tracker.">
-<meta property="og:description" content="There are several opportunities for non-project-members to contribute to CogniCrypt. CognICrypt users may contribute bug reports and feature requests. Regular developers who take interest in CogniCrypt may provide bug fixes and other kind of code contributions. Lastly, cryptography experts may share their own cryptographic components so that they can be used by its users.
+<meta property="og:description" content="There are several opportunities for non-project-members to contribute to CogniCrypt: * CogniCrypt users may contribute Bug Reports and Feature Requests.
+* Regular developers who take interest in CogniCrypt may provide bug fixes and other kind of code contributions. * Lastly, cryptography experts may share their own cryptographic components so that they can be used by CogniCrypt users.
 Bug Reports and Feature Requests  In case you find a bug or have an idea for a feature, please check out CogniCrypt&rsquo;s issue tracker.">
-<meta name="twitter:description" content="There are several opportunities for non-project-members to contribute to CogniCrypt. CognICrypt users may contribute bug reports and feature requests. Regular developers who take interest in …">
+<meta name="twitter:description" content="There are several opportunities for non-project-members to contribute to CogniCrypt: * CogniCrypt users may contribute Bug Reports and Feature Requests.
+* Regular developers who take interest in …">
 <meta name="author" content="Eclipse Foundation"/>
 <link href='https://www.eclipse.org/cognicrypt/favicon.ico' rel='icon' type='image/x-icon'/>
 <meta name="twitter:card" content="summary" />
@@ -233,44 +236,53 @@
         <div class="col-md-10">
     		
 
-<p>There are several opportunities for non-project-members to contribute to CogniCrypt. CognICrypt users may contribute bug reports and feature requests. Regular developers who take interest in CogniCrypt may provide bug fixes and other kind of code contributions. Lastly, cryptography experts may share their own cryptographic components so that they can be used by its users.</p>
+<p>There are several opportunities for non-project-members to contribute to CogniCrypt:
+* CogniCrypt users may contribute <strong>Bug Reports</strong> and <strong>Feature Requests</strong>.<br />
+* Regular developers who take interest in CogniCrypt may provide <strong>bug fixes</strong> and other kind of <strong>code contributions</strong>.
+* Lastly, cryptography experts may share their own <strong>cryptographic components</strong> so that they can be used by CogniCrypt users.</p>
 
 <h1 id="bug-reports-and-feature-requests-a-name-bugs-a">Bug Reports and Feature Requests <a name="bugs"></a></h1>
 
-<p>In case you find a bug or have an idea for a feature, please check out <a href="https://github.com/CROSSINGTUD/CogniCrypt/issues">CogniCrypt&rsquo;s issue tracker</a>. If your AAproblem or request is not yet being addressed there, please file a <a href="https://github.com/CROSSINGTUD/CogniCrypt/issues/new/choose">new issue</a>.</p>
+<p>In case you find a bug or have an idea for a feature, please check out <a href="https://github.com/CROSSINGTUD/CogniCrypt/issues">CogniCrypt&rsquo;s issue tracker</a>. If your problem or request is not yet being addressed there, please file a <a href="https://github.com/CROSSINGTUD/CogniCrypt/issues/new/choose">new issue</a>.</p>
 
 <h1 id="code-contributions-a-name-code-a">Code Contributions <a name="code"></a></h1>
 
-<p>Any contributions - no matter whether they are bug fixes or new features - are very welcome. That said, since CogniCrypt is an official Eclipse project, only official committers may contribute directly to the repository without any review. Commits from non-committers are possible, but must be reviewed by someone with committer status and come in a certain form, described by the <a href="https://www.eclipse.org/projects/handbook/#resources-commit">Eclipse manual</a>. In short, apart from the usual <em>author</em> tag, each commit needs to come with a <em>signed-off-by</em> tag at the bottom of the commit message. Pull requests that contain commits from non-committers not following this structure may not be accepted. Note: Regular long-time contributors who wish to continue contributing and may apply to project-committer status.</p>
+<p>Any contributions - no matter whether they are bug fixes or new features - are very welcome. That being said, since CogniCrypt is an official Eclipse project, only official committers may contribute directly to the repository without any review. Commits from non-committers are possible, but must be reviewed by someone with committer status and come in a certain form, described by the <a href="https://www.eclipse.org/projects/handbook/#resources-commit">Eclipse manual</a>. In short, apart from the usual <em>author</em> tag, each commit needs to come with a <em>signed-off-by</em> tag at the bottom of the commit message. Pull requests that contain commits from non-committers not following this structure may not be accepted. Note: Regular long-time contributors who wish to continue contributing may apply to project-committer status.</p>
 
 <h1 id="cryptographic-components">Cryptographic Components</h1>
 
-<p>In general, crypto experts can contribute in two ways. First, they can contribute support for new cryptographic primitives (e.g., encryption schemes, key agreement algorithms, digital signature algorithms). Second, they can integrate new cryptographic use cases for CogniCrypt to offer to to users for code generation. In the context of CogniCrypt, these use cases are called tasks. Examples for cryptographic tasks that CogniCrypt already supports  include file encryption, communication over secure channel, and user authentication mechanisms. Depending on how a task is integrated, it can use primitives that have been integrated before, but primitives are not directly exposed to the end user. For easier distinction, this guide separates contributing crypto experts into primitives developers and task developers. CogniCrypt users are being refered to as developers.</p>
+<p>In general, crypto experts can contribute in two ways:
+* First, they can contribute support for new cryptographic primitives (e.g., encryption schemes, key agreement algorithms, digital signature algorithms).
+* Second, they can integrate new cryptographic use cases for CogniCrypt to offer to the users for code generation.</p>
 
-<p>In order to integrate a new primitive/task, two components need to be provided.</p>
+<p>In the context of CogniCrypt, these use cases are called <strong>tasks</strong>. Examples for cryptographic tasks that CogniCrypt already supports  include:  <strong>file encryption</strong>, <strong>communication over secure channel</strong>, and <strong>user authentication mechanisms</strong>. Depending on how a task is integrated, it can use primitives that have been integrated before. However primitives are not directly exposed to the end user. For easier distinction, this guide separates:
+* Contributing crypto experts into: <strong>primitives developers</strong> and <strong>task developers</strong>.
+* CogniCrypt users are being refered to as <strong>developers</strong>.</p>
+
+<p>In order to integrate a new primitive/task, two components need to be provided:</p>
 
 <ul>
 <li>Implementation</li>
 <li>Usage rules</li>
 </ul>
 
-<p>The implementation should encompass the full functionality of the primitive/task. To both <a href="../documentation/code-analysis">prevent developers from misusing a primitive/task</a> and <a href="../documentation/code-generation">facilitate the code generation for tasks</a>, usage rules describe how a task and or primitive is supposed to be used.</p>
+<p>The implementation should encompass the full functionality of the primitive/task. To both <a href="../documentation/code-analysis">prevent developers from misusing a primitive/task</a> and <a href="../documentation/code-generation">facilitate the code generation for tasks</a>, usage rules describe how a task and/or a primitive is supposed to be used.</p>
 
 <h2 id="integrating-primitives-a-name-prim-a">Integrating Primitives <a name="prim"></a></h2>
 
-<h3 id="implementation">Implementation</h3>
+<h3 id="implementation">Implementation:</h3>
 
-<p>Primitives need to be implemented as <a href="https://docs.oracle.com/javase/9/security/howtoimplaprovider.htm#JSSEC-GUID-C485394F-08C9-4D35-A245-1B82CDDBC031">Cryptographic Service Providers (CSP)</a> in Java. The JDK does not simply provide a set of implementations of cryptographic primitives to its users. Instead, a set of standardized and algorithm-specific interfaces is provided by the <a href="https://docs.oracle.com/javase/9/security/java-cryptography-architecture-jca-reference-guide.htm#JSSEC-GUID-2BCFDD85-D533-4E6C-8CE9-29990DEB0190">Java Cryptography Architecture(JCA)</a>. These interfaces must then be implemented by CSPs in order to provide cryptographic primitives to an application developer. With this design, the architecture around cryptography is made both independent of algorithms and implementations as well as easily extensible. It enables primitives developers to implement their own algorithms as CSPs and plug them into the JCA. One CSP may include multiple primitives of multiple algorithm types.</p>
+<p>Primitives need to be implemented as <a href="https://docs.oracle.com/javase/9/security/howtoimplaprovider.htm#JSSEC-GUID-C485394F-08C9-4D35-A245-1B82CDDBC031">Cryptographic Service Providers (CSP)</a> in Java. The JDK does not simply provide a set of implementations of cryptographic primitives to its users. Instead, a set of standardized and algorithm-specific interfaces is provided by the <a href="https://docs.oracle.com/javase/9/security/java-cryptography-architecture-jca-reference-guide.htm#JSSEC-GUID-2BCFDD85-D533-4E6C-8CE9-29990DEB0190">Java Cryptography Architecture(JCA)</a>. These interfaces must then be implemented by CSPs in order to provide cryptographic primitives to an application developer. With this design, the architecture around cryptography is made both independent of algorithms and implementations, as well as easily extensible. It enables primitives developers to implement their own algorithms as CSPs and plug them into the JCA. One CSP may include multiple primitives of multiple algorithm types.</p>
 
 <p>The JCA comes with a <a href="https://docs.oracle.com/javase/9/security/oracleproviders.htm#JSSEC-GUID-FE2D2E28-C991-4EF9-9DBE-2A4982726313">number of default providers</a> that implement the most common cryptographic algorithms in several configurations. <a href="https://www.bouncycastle.org/java.html">BouncyCastle</a>, another cryptographic library for Java, can also be used <a href="https://www.bouncycastle.org/wiki/display/JA1/Provider+Installation">as a CSP</a>. It implements a wide range of cryptographic algorithms and configurations, including the ones implemented by the default CSPs.</p>
 
-<p>During runtime, the Java Virtual Machine (JVM) maintains an ordered list of all plugged in CSPs. As illustrated in the figure below, when an algorithm in a certain configuration is requested by some application code, the JVM iterates through the list and asks each provider if it supports the requested algorithm and configuration. In case several CSPs support the same configuration, the implementation of the first CSP in the list to support the configuration is selected.</p>
+<p>During runtime, the Java Virtual Machine (JVM) maintains an ordered list of all plugged-in CSPs. As illustrated in the figure below, when an algorithm in a certain configuration is requested by some application code, the JVM iterates through the list and asks each provider if it supports the requested algorithm and configuration. In case several CSPs support the same configuration, the implementation of the first CSP in the list to support the configuration is selected.</p>
 
 <p><img src="https://docs.oracle.com/javase/9/security/img/architecture-service-provider-interface.gif" alt="JCA plug and play" /></p>
 
-<h3 id="usage-rules">Usage Rules</h3>
+<h3 id="usage-rules">Usage Rules:</h3>
 
-<p>Furthermore, developers of primitives should provide usage rules for their CSP. Any component may be misused and each and every such misuse within a security context leads a potential security vulnerability. To illustrate the necessity for such rules, consider the following two examples. The code snippet in Listing~\ref{lst:enc} is a simple example of a symmetric encryption using the JCA. The call in Line 2 instantiates an object of class <code>Cipher</code>, which is using the symmetric block cipher AES. Although not obvious at first glance, method <code>getInstance()</code> does in fact not expect a single algorithm, but instead a<code>transformation</code> consisting of cipher, mode of operation and padding scheme. If the latter two are not provided by the developer (as in the code snippet below), the exact behaviour depends on the selected CSP. The default CSP of the JCA selects ECB as mode of operation by default. Unfortunately, in ECB mode, identical plaintext blocks are encrypted to identical ciphertext blocks. Consequently, any encryption of more than one block using this configuration is deemed insecure. To prevent such misuses, contributors may specify how to use their CSP correctly and securely.</p>
+<p>Furthermore, developers of primitives should provide usage rules for their CSP. Any component may be misused and each and every such misuse within a security context leads to a potential security vulnerability. To illustrate the necessity for such rules, consider the following two examples. The code snippet in the Listing below is a simple example of a symmetric encryption using the JCA. The call in <em>Line 2</em> instantiates an object of class <code>Cipher</code>, which is using the symmetric block cipher <strong>AES</strong>. Although not obvious at first glance, method <code>getInstance()</code> does in fact not expect a single algorithm, but instead a<code>transformation</code> consisting of <strong>cipher</strong>, <strong>mode of operation</strong> and <strong>padding scheme</strong>. If the latter two are not provided by the developer (as in the code snippet below), the exact behaviour depends on the selected CSP. The default CSP of the JCA selects ECB as mode of operation by default. Unfortunately, in ECB mode, identical plaintext blocks are encrypted to identical ciphertext blocks. Consequently, any encryption of more than one block using this configuration is deemed insecure. To prevent such misuses, contributors may specify how to use their CSP correctly and securely.</p>
 
 <pre><code>public byte[] encrypt(byte[] secret, SecretKey key) {
     Cipher ciph = new Cipher.getInstance(&quot;AES&quot;); 
@@ -289,11 +301,11 @@
 
 <h3 id="implementation-1">Implementation</h3>
 
-<p>The implementation for a task may be provided to CogniCrypt as source code or a jar file. In this case, application developers get direct access to the code. If task developers do not wish to share the source code, they may provide access to the task&rsquo;s functionality indirectly through an API. Suppose a task developer wants to offer long-term document archiving as a cryptographic task in CogniCrypt. An archive requires the documents to stored on a hard-disk. To not require the user to manage these files on their own, the task developer offers their archive as a web service that stores the documents on their server. In this case, the task developer does not have to provide any implementation directly to CogniCrypt. A task developer may choose to let the application developer configure the task in terms of used algorithms among other things. This configuration is done through the dialogue system after the CogniCrypt user selects a task they want to implement.</p>
+<p>The implementation for a task may be provided to CogniCrypt as source code or a jar file. In this case, application developers get direct access to the code. If task developers do not wish to share the source code, they may provide access to the task&rsquo;s functionality indirectly through an API. Suppose a task developer wants to offer long-term document archiving as a cryptographic task in CogniCrypt. An archive requires the documents to be stored on a hard-disk. To not require the user to manage these files on their own, the task developer offers their archive as a web service that stores the documents on their server. In this case, the task developer does not have to provide any implementation directly to CogniCrypt. A task developer may choose to let the application developer configure the task in terms of used algorithms among other things. This configuration is done through the dialogue system after the CogniCrypt user selects a task they want to implement.</p>
 
 <h3 id="usage-rules-1">Usage Rules</h3>
 
-<p>Task developers must further provide usage rules for component. CogniCrypt then automatically and continuously applies static analyses based on these rules in the background to ensure the code stays secure. These usage rules have to be provided in the specification language <a href="../documentation/crysl">CrySL</a>.</p>
+<p>Task developers must further provide usage rules for this component. CogniCrypt then automatically and continuously applies static analyses based on these rules in the background to ensure the code stays secure. These usage rules have to be provided in the specification language <a href="../documentation/crysl">CrySL</a>.</p>
 
 <h3 id="configuration-questions">Configuration Questions</h3>
 
