diff --git a/README.md b/README.md
index c7bdc72..d0729f6 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-##Fabric - A real-time stream processing framework
+## Fabric - A real-time stream processing framework
-###What?
+### What?
A scalable, practical and safe real-time computation framework designed for easy operability and extension.
Fabric is proven to work very well for:
@@ -10,7 +10,7 @@ Fabric is proven to work very well for:
- Real-time pattern matching
- Basic Streaming analytics
-###Why?
+### Why?
* Highly scalable and guaranteed availability using battle-tested clustering capabilities provided by Apache Mesos and Marathon
* Framework level guarantees against message loss, support for replay, multiple sources and complex tuple trees.
* Event batching is supported at the core level.
@@ -37,14 +37,14 @@ Fabric is proven to work very well for:
**Streaming Processor**: A Streaming Processor is a processor that is triggered whenever and event set is sent to the processor.
**Scheduled Processor**: A Scheduled Processor is a processor which is triggered whenever a fixed period of time elapses in a periodic fashion.
-###Walkthrough
+### Walkthrough
Let’s write a word count computation that processes a list of sentences and outputs words frequency counts.
We need three components for this computation:
1. A source that generates random sentences - RandomSentenceSource
2. A processor that splits the sentences by space into its constituent words - SplitterProcessor
3. A processor that outputs the word frequency counts at regular intervals - WordCountProcessor
-####RandomSentenceSource.java
+#### RandomSentenceSource.java
```
// Add this annotation for registering the source with the metadata server
@Source(
@@ -105,7 +105,7 @@ public class RandomSentenceSource implements PipelineSource {
}
```
-####SplitterProcessor.java
+#### SplitterProcessor.java
```
@Processor(
namespace = "global",
@@ -158,7 +158,7 @@ public class SplitterProcessor extends StreamingProcessor {
}
```
-####WordCountProcessor.java
+#### WordCountProcessor.java
```
@Processor(
namespace = "global",
@@ -314,11 +314,11 @@ The json specification for this computation will look like this
}
```
-###Benchmarks
-####Performance Test Configuration
+### Benchmarks
+#### Performance Test Configuration
No of messages: 1 million
Payload size: 258 bytes
-####Topology
+#### Topology
Kafka Source -> Event Counter (Prints number of total events consumed every one second to the console)
No of partitions: 1
Topic Name: end-to-end-latency-perf
@@ -327,9 +327,9 @@ Kafka source buffer size: 3 MB
Docker CPU (number of cpu shares): 1.0
Docker Memory: 2 GB
JVM Heap Size: 2 GB
-####Kafka Broker configuration
+#### Kafka Broker configuration
2 cores Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz 8 GB RAM
-####Mesos Host configuration
+#### Mesos Host configuration
8 cores Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz 32 GB RAM
End to end latency to process all messages in seconds (ceiling) averaged over multiple runs is presented below
@@ -345,7 +345,7 @@ Throughput with best configuration T ~ 166666 events / second
NOTE: Using Disruptor with YieldWaitingStrategy instead of LBQ for channel communication actually reduced the throughput
-###Using Processor Maven Archetype
+### Using Processor Maven Archetype
To create a processor project, please run following command -