diff --git a/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AgeRule.java b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AgeRule.java
new file mode 100644
index 0000000..b09fc40
--- /dev/null
+++ b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AgeRule.java
@@ -0,0 +1,40 @@
+package org.easyrules.samples.rulePriority;
+
+import org.easyrules.annotation.Action;
+import org.easyrules.annotation.Condition;
+import org.easyrules.annotation.Priority;
+import org.easyrules.annotation.Rule;
+
+/**
+ * A rule class that marks a person as adult if it's age is greater than 18.
+ *
+ * @author Mahmoud Ben Hassine (md.benhassine@gmail.com)
+ */
+@Rule(name = "AgeRule", description = "Check if person's age is > 18 and marks the person as adult")
+public class AgeRule {
+
+ private Person person;
+
+ private int adultAge = 18;
+
+ public AgeRule(Person person) {
+ this.person = person;
+ }
+
+ @Condition
+ public boolean isAdult() {
+ return person.getAge() > adultAge;
+ }
+
+ @Action
+ public void markAsAdult(){
+ person.setAdult(true);
+ System.out.printf("Person %s has been marked as adult.\n", person.getName());
+ }
+
+ @Priority
+ public int getPriority() {
+ return 1;
+ }
+
+}
diff --git a/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AlcoholRule.java b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AlcoholRule.java
new file mode 100644
index 0000000..26cc448
--- /dev/null
+++ b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/AlcoholRule.java
@@ -0,0 +1,37 @@
+package org.easyrules.samples.rulePriority;
+
+import org.easyrules.annotation.Action;
+import org.easyrules.annotation.Condition;
+import org.easyrules.annotation.Priority;
+import org.easyrules.annotation.Rule;
+
+/**
+ * Rule class that prohibits children from buying alcohol.
+ *
+ * @author Mahmoud Ben Hassine (md.benhassine@gmail.com)
+ */
+@Rule(name = "alcoholRule", description = "Children are not allowed to buy alcohol.")
+public class AlcoholRule {
+
+ private Person person;
+
+ public AlcoholRule(Person person) {
+ this.person = person;
+ }
+
+ @Condition
+ public boolean isChildren() {
+ return !person.isAdult();
+ }
+
+ @Action
+ public void denyAlcohol(){
+ System.out.printf("Sorry %s, you are not allowed to buy alcohol.\n", person.getName());
+ }
+
+ @Priority
+ public int getPriority() {
+ return 2;
+ }
+
+}
diff --git a/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Launcher.java b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Launcher.java
new file mode 100644
index 0000000..78349a5
--- /dev/null
+++ b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Launcher.java
@@ -0,0 +1,30 @@
+package org.easyrules.samples.rulePriority;
+
+import org.easyrules.core.AnnotatedRulesEngine;
+
+/**
+ * Launcher class for rule priority tutorial.
+ *
+ * @author Mahmoud Ben Hassine (md.benhassine@gmail.com)
+ */
+public class Launcher {
+
+ public static void main(String[] args) {
+
+ //create a person instance
+ Person tom = new Person("Tom", 16);
+ System.out.println("Tom: Hi! can I have some Vodka please?");
+
+ //create a rules engine
+ AnnotatedRulesEngine annotatedRulesEngine = new AnnotatedRulesEngine();
+
+ //register rules
+ annotatedRulesEngine.registerRule(new AgeRule(tom));
+ annotatedRulesEngine.registerRule(new AlcoholRule(tom));
+
+ //fire rules
+ annotatedRulesEngine.fireRules();
+
+ }
+
+}
diff --git a/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Person.java b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Person.java
new file mode 100644
index 0000000..c33ec21
--- /dev/null
+++ b/easyrules-samples/src/main/java/org/easyrules/samples/rulePriority/Person.java
@@ -0,0 +1,45 @@
+package org.easyrules.samples.rulePriority;
+
+/**
+ * Person class.
+ *
+ * @author Mahmoud Ben Hassine (md.benhassine@gmail.com)
+ */
+public class Person {
+
+ private String name;
+
+ private int age;
+
+ private boolean adult;
+
+ public Person(String name, int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public boolean isAdult() {
+ return adult;
+ }
+
+ public void setAdult(boolean adult) {
+ this.adult = adult;
+ }
+
+}
diff --git a/site/_includes/docs_contents.html b/site/_includes/docs_contents.html
index 0f237f6..66ebc9b 100644
--- a/site/_includes/docs_contents.html
+++ b/site/_includes/docs_contents.html
@@ -32,6 +32,9 @@
Hello World
+
+ Rule Priority
+
Dynamic configuration
diff --git a/site/tutorials/rule-priority.md b/site/tutorials/rule-priority.md
new file mode 100644
index 0000000..5e36a04
--- /dev/null
+++ b/site/tutorials/rule-priority.md
@@ -0,0 +1,163 @@
+---
+layout: docs
+title: Rule Priority
+header: Rule Priority tutorial
+prev_section: tutorials/hello-world
+next_section: tutorials/dynamic-configuration
+doc: true
+---
+
+This tutorial shows how define priority in which rules must be fired.
+In Easy Rules, every rule has a priority. Rules are fired by default according to their priorities (this can be changed as described in the [user guide]({{site.url}}/user-guide/defining-rules.html#rules-priorities)).
+
+In this tutorial, we have an application that sells alcohol. The application must flag the customer as adult if his age is greater than 18,
+and must deny children from buying alcohol. Customers are represented by the following `Person` class:
+
+```java
+public class Person {
+
+ private String name;
+
+ private int age;
+
+ private boolean adult;
+
+ //getters and setters omitted
+
+}
+```
+
+Based on these requirements, we can define the following rules:
+
+* Rule 1: This rule should operate an a `Person` instance, check that the peron age is greater than 18 and set the adult flag.
+* Rule 2: This rule should operate an a `Person` instance, check that the peron is adult and deny children (ie, non adult) from buying alcohol.
+
+Rule 1 should be fired **_before_** rule 2. We will set rule 1 priority to 1 and rule 2 priority to 2 so that Easy Rules engine fire them in this order.
+
+First, let's create a class for rule 1:
+
+```java
+@Rule(name = "AgeRule",
+ description = "Check if person's age is > 18
+ and marks the person as adult")
+public class AgeRule {
+
+ private Person person;
+
+ private int adultAge = 18;
+
+ public AgeRule(Person person) {
+ this.person = person;
+ }
+
+ @Condition
+ public boolean isAdult() {
+ return person.getAge() > adultAge;
+ }
+
+ @Action
+ public void markAsAdult(){
+ person.setAdult(true);
+ System.out.printf(
+ "Person %s has been marked as adult.\n",
+ person.getName());
+ }
+
+ @Priority
+ public int getPriority() {
+ return 1;
+ }
+
+}
+```
+As required, this rule class operates on a person that is passed at construction time.
+
+The `isAdult` method annotated with `@Condition` tells Easy Rules engine to call this method to check if the rule should be fired, in this case, if the person's age is greater than 18.
+
+The `markAsAdult` method annotated with `@Action` will mark the person as adult by setting the `adult` flag.
+
+Finally, the `getPriority` method annotated with `@Priority` tells Easy Rules engine to fire this rule in first order.
+
+Now, let's a class for rule 2:
+
+```java
+@Rule(name = "alcoholRule",
+ description = "Children are not allowed to buy alcohol.")
+public class AlcoholRule {
+
+ private Person person;
+
+ public AlcoholRule(Person person) {
+ this.person = person;
+ }
+
+ @Condition
+ public boolean isChildren() {
+ return !person.isAdult();
+ }
+
+ @Action
+ public void denyAlcohol(){
+ System.out.printf(
+ "Sorry %s, you are not allowed to buy alcohol.\n",
+ person.getName());
+ }
+
+ @Priority
+ public int getPriority() {
+ return 2;
+ }
+
+}
+```
+As for rule 1, the class operates on a person instance and provides methods to define rule condition, action and priority.
+
+To launch the tutorial, we will use the following class:
+
+```java
+public class Launcher {
+
+ public static void main(String[] args) {
+
+ //create a person instance
+ Person tom = new Person("Tom", 16);
+ System.out.println(
+ "Tom: Hi! can I have some Vodka please?");
+
+ //create a rules engine
+ AnnotatedRulesEngine annotatedRulesEngine =
+ new AnnotatedRulesEngine();
+
+ //register rules
+ annotatedRulesEngine.registerRule(new AgeRule(tom));
+ annotatedRulesEngine.registerRule(new AlcoholRule(tom));
+
+ //fire rules
+ annotatedRulesEngine.fireRules();
+
+ }
+
+}
+```
+
+To run the tutorial, you can follow these instructions from the root directory of Easy Rules :
+
+{% highlight bash %}
+$ mvn install
+$ cd easyrules-samples
+$ mvn exec:java -P runRulePriorityTutorial
+{% endhighlight %}
+
+If you run this tutorial, you would get the following output:
+
+```
+Tom: Hi! can I have some Vodka please?
+Oct 13, 2014 9:37:14 PM org.easyrules.core.AnnotatedRulesEngine fireRules
+INFO: Rule alcoholRule triggered.
+Sorry Tom, you are not allowed to buy alcohol.
+Oct 13, 2014 9:37:14 PM org.easyrules.core.AnnotatedRulesEngine fireRules
+INFO: Rule alcoholRule performed successfully.
+```
+
+As you can see, since Tom's age is under 18, he has not been allowed to buy alcohol as expected.
+