diff --git a/README.md b/README.md
index 9e0034c..debe0af 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,32 @@
-# DesignPatternsJava9
-This repo consists Gang of Four Design patterns code on Java 9. Each branch in the repository has code of 1 design pattern. Switch repository to try out different design patterns.
+# What is Interpreter Design Pattern 
+Interpreter pattern provides a way to evaluate language grammar or expression.
+
+## Diagram
+![Diagram](https://github.com/premaseem/DesignPatternsJava9/blob/interpreter-pattern/diagrams/IntrepreterDesignPatternClassDiagram.jpeg "Diagram")
+
+![Diagram](https://github.com/premaseem/DesignPatternsJava9/blob//interpreter-pattern/diagrams/interpreterPattenSequenceDiagram.png "Diagram")
+
+# When to use Interpreter Design Pattern 
+* Specialized database query languages such as SQL.
+* Specialized computer languages that are often used to describe communication protocols.
+Voice command based apps. 
+
+### Learn Design Patterns with Java by Aseem Jain
+This repository contains working project code used in video Course by Packt Publication with title "Learn Design Patterns with Java " authored by "Aseem Jain".
+
+### Course link: 
+https://www.packtpub.com/application-development/learn-design-patterns-java-9-video
+
+### ![ http://in.linkedin.com/in/premaseem](https://github.com/premaseem/DesignPatternsJava9/blob/master/linkedin.png "http://in.linkedin.com/in/premaseem") Profile:  http://in.linkedin.com/in/premaseem
+
+### Authors blog on design patterns:
+https://premaseem.wordpress.com/category/computers/design-patterns/
+
+### Software Design pattern community face book page:
+https://www.facebook.com/DesignPatternGuru/
+
+### Note: 
+* This code base will work on Java 9 and above versions. 
+* `diagrams` folders carry UML diagrams.
+* `pattern` folder has code of primary example. 
+* `patternBonus` folder has code of secondary or bonus example.
diff --git a/diagrams/IntrepreterDesignPatternClassDiagram.jpeg b/diagrams/IntrepreterDesignPatternClassDiagram.jpeg
new file mode 100644
index 0000000..bc722e7
Binary files /dev/null and b/diagrams/IntrepreterDesignPatternClassDiagram.jpeg differ
diff --git a/diagrams/interpreterPattenSequenceDiagram.png b/diagrams/interpreterPattenSequenceDiagram.png
new file mode 100644
index 0000000..f94f7c4
Binary files /dev/null and b/diagrams/interpreterPattenSequenceDiagram.png differ
diff --git a/pattern/src/com/premaseem/Client.java b/pattern/src/com/premaseem/Client.java
index 15f05df..592cbca 100644
--- a/pattern/src/com/premaseem/Client.java
+++ b/pattern/src/com/premaseem/Client.java
@@ -1,13 +1,42 @@
 package com.premaseem;
 
+import java.util.Scanner;
+
 /*
 @author: Aseem Jain
 @title: Design Patterns with Java 9
 @link: https://premaseem.wordpress.com/category/computers/design-patterns/
-@copyright: 2018 Packt Publication
 */
 public class Client {
     public static void main (String[] args) {
-        System.out.println("Singleton cook example ");
+        System.out.println("Alexa welcomes you to Artificial intelligence app designed using Interpreter Design pattern :-) ");
+        Scanner scanner1 = new Scanner(System.in);
+        Scanner scanner2 = new Scanner(System.in);
+
+        // User input block
+        String repeatRunFlag = "yes";
+        while (!repeatRunFlag.equalsIgnoreCase("no")) {
+            System.out.println("\n Please ask your question related to voting ...");
+            String question = scanner1.nextLine();
+
+            // get Voting context
+            Context votingContext = new VotingContext();
+
+            // get Rules or grammar around context
+            Expression ruleExpression = votingContext.getRuleExpression();
+
+            // question is interpreted based on context and rules
+            Boolean result = ruleExpression.interpret(question);
+
+            // print Results
+            String voteEligible = result ? "Yes ! can vote :-) ":"No ! cannot vote :-)";
+            System.out.println("Alexa answered: " + voteEligible);
+
+            // Ask from another questions
+            System.out.println("Do you have another questions ? yes / no ");
+            repeatRunFlag = scanner2.next();
+        }
     }
 }
+
+
diff --git a/pattern/src/com/premaseem/Context.java b/pattern/src/com/premaseem/Context.java
new file mode 100644
index 0000000..627ecac
--- /dev/null
+++ b/pattern/src/com/premaseem/Context.java
@@ -0,0 +1,20 @@
+package com.premaseem;
+
+/*
+@author: Aseem Jain
+@title: Design Patterns with Java 9
+@link: https://premaseem.wordpress.com/category/computers/design-patterns/
+*/
+interface Context {
+    Expression getRuleExpression ();
+}
+
+class VotingContext implements Context {
+
+    @Override
+    public Expression getRuleExpression () {
+        Expression condition_1 = new TerminalExpression("citizen");
+        Expression condition_2 = new TerminalExpression("18");
+        return new AndExpression(condition_1, condition_2);
+    }
+}
diff --git a/pattern/src/com/premaseem/Expression.java b/pattern/src/com/premaseem/Expression.java
new file mode 100644
index 0000000..35d87a0
--- /dev/null
+++ b/pattern/src/com/premaseem/Expression.java
@@ -0,0 +1,63 @@
+package com.premaseem;
+
+/*
+@author: Aseem Jain
+@title: Design Patterns with Java 9
+@link: https://premaseem.wordpress.com/category/computers/design-patterns/
+*/
+interface Expression {
+    public boolean interpret (String context);
+}
+
+/**
+ * Terminal Expression is used in other expressions for interpretation
+ */
+class TerminalExpression implements Expression {
+
+    private String data;
+
+    public TerminalExpression(String data){
+        this.data = data;
+    }
+
+    @Override
+    public boolean interpret(String context) {
+        if(context.contains(data)){
+            return true;
+        }
+        return false;
+    }
+}
+
+class AndExpression implements Expression {
+
+    private Expression expr1 = null;
+    private Expression expr2 = null;
+
+    public AndExpression(Expression expr1, Expression expr2) {
+        this.expr1 = expr1;
+        this.expr2 = expr2;
+    }
+
+    @Override
+    public boolean interpret(String context) {
+        return expr1.interpret(context) && expr2.interpret(context);
+    }
+}
+
+class OrExpression implements Expression {
+
+    private Expression expr1 = null;
+    private Expression expr2 = null;
+
+    public OrExpression(Expression expr1, Expression expr2) {
+        this.expr1 = expr1;
+        this.expr2 = expr2;
+    }
+
+    @Override
+    public boolean interpret(String context) {
+        return expr1.interpret(context) || expr2.interpret(context);
+    }
+}
+
diff --git a/patternBonus/src/com/premaseem/Client.java b/patternBonus/src/com/premaseem/Client.java
deleted file mode 100644
index 15f05df..0000000
--- a/patternBonus/src/com/premaseem/Client.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.premaseem;
-
-/*
-@author: Aseem Jain
-@title: Design Patterns with Java 9
-@link: https://premaseem.wordpress.com/category/computers/design-patterns/
-@copyright: 2018 Packt Publication
-*/
-public class Client {
-    public static void main (String[] args) {
-        System.out.println("Singleton cook example ");
-    }
-}