diff --git a/Licence b/Licence
new file mode 100644
index 0000000..479e578
--- /dev/null
+++ b/Licence
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Sunbird Unified Communications Interface (UCI)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b2ebfce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,56 @@
+# Transformer
+A transformer is a stateless processing object that takes inputs and converts the input into a processed output. Transformers may in turn call external services if needed.
+
+Transformers transforms the previous xMessage from the user to one that needs to be sent next. It is essentially a microservice that based on the previous user action, returns a new xMessage that will then be shown to the user. This also enables conversion from one type
+All inbound messages pass through a transformer. If a transformer is not assigned, then a null transformer is assigned to the xMessage. Since the current implementation of MessageRosa is only in Java, currently there is a limitation on the number of languages you can build the transformer on which right now is just Java.
+
+More details can be found here - https://uci.sunbird.org/use/developer/uci-basics/transformers
+
+Simply put a transformer looks something like this
+
+
+**Responsibilities**
+* Acts as a state machine and converts messages from one state to another.
+* Used to transform messages
+* Applies conversational logic (constraints or input format)
+
+To set things in prespetive the following block diagram below outlines various components that come together to form the Unified Communications Interface (UCI):
+
+
+
+# High-level Architecture Design
+
+1. **Adapter**: An adapter translates between messages received from communication channels on specific providers and the internal XMessage format (followed by UCI). A new adapter is required for every new combination of communication channel and service provider (e.g. - WhatsApp + Gupshup; WhatsApp + NetCore; WhatsApp + Twilio). An adapter config references the communication channel, service provider and associated metadata such as a specific business account phone number.
+2. **Transformer**: A transformer is a stateless processing object that takes inputs and converts the input into a processed output. Transformers may in turn call external services if needed.
+3. **Conversation Logic**: Conversation logic defines the overall flow for a specific conversation. A conversation logic object references a sequence of transformers that will be applied to arrive at the final response at a specific point in the conversation and the associated adapter config for this conversation logic.
+4. **User Segments:** A bot can either be an open public bot or a closed targetted bot. In the latter case, a closed user segment has to be defined. User segment contains user data including a mechanism to fetch them from a federated user registry.
+5. **Conversations:** A conversation orchestrates a conversation with a specific conversation logic assigned to a set of users. A bot object references user segment(s) and conversation logic(s).
+
+Following is a summary of the relation between the different blocks of UCI :
+
+`Adapter = Communication Channel + Service Provider`
+
+`User segment`
+
+`Transformer`
+
+`Conversation Logic = {Transformers} + Adapter`
+
+`Bot = {Conversation Logics} + {User segments}`
+
+| Real World | UCI Platform |
+| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Set of end users in a state | User segment 1 containing user registry uri, user ids, user metadata including phone numbers |
+| Single end user phone number part of the state (eg. 938490834) | User phone number field in user segment object |
+| Whatsapp | Communication Channel referenced in the Adapter 1 config |
+| Gupshup | Service provider referenced in the Adapter 1 config |
+| Business account phone number 908092348 | Meta data for adapter 1, referenced in Adapter config |
+| If fail, then this message | Transformer 1 referencing an XForm with pass/fail message logic |
+| Translate message from English to Hindi | Transformer 2 referencing a translation microservice |
+| Given fail, send message via Whatsapp to student | Conversation logic 1 = Transformer 1 + Transformer 2 + Adapter 1 |
+| Given fail, send same message via SMS to student | Conversation logic 2 = Transformer 1 + Transformer 2 + Adapter 2 (where adapter 2 config references SMS communication channel and SMS service provider) |
+| Lifecycle of conversation | Conversation = Conversation logic 1 + Conversation logic 2 + User segment 1 |
+
+
+
+****
diff --git a/pom.xml b/pom.xml
index c43b713..572fa94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -129,7 +129,7 @@
org.springframework
spring-web
- 5.2.7.RELEASE
+ 6.0.0
commons-io