diff --git a/docs/xacml/xacml-tutorial.rst b/docs/xacml/xacml-tutorial.rst
index 72271ad..2a1d4ac 100644
--- a/docs/xacml/xacml-tutorial.rst
+++ b/docs/xacml/xacml-tutorial.rst
@@ -24,7 +24,7 @@
   :linenos:
 
 We would expect then to be able to create the following policies to allow the demo user to Read/Write
-a entity called foo. While the audit user can only read the entity called foo. No user has Delete
+an entity called foo, while the audit user can only read the entity called foo. Neither user has Delete
 permission.
 
 .. literalinclude:: tutorial/tutorial-policies.yaml
@@ -107,11 +107,11 @@
 
   public class TutorialApplication extends StdXacmlApplicationServiceProvider {
 
-	@Override
-	protected ToscaPolicyTranslator getTranslator(String type) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+        @Override
+        protected ToscaPolicyTranslator getTranslator(String type) {
+                // TODO Auto-generated method stub
+                return null;
+        }
 
   }
 
@@ -134,7 +134,7 @@
 
   public class TutorialApplication extends StdXacmlApplicationServiceProvider {
 	
-	private final ToscaPolicyTypeIdentifier supportedPolicyType = new ToscaPolicyTypeIdentifier();
+    private final ToscaPolicyTypeIdentifier supportedPolicyType = new ToscaPolicyTypeIdentifier();
 
     @Override
     public String applicationName() {
@@ -157,10 +157,10 @@
     }
 
     @Override
-	protected ToscaPolicyTranslator getTranslator(String type) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+        protected ToscaPolicyTranslator getTranslator(String type) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
   }
 
@@ -191,20 +191,20 @@
 
   public class TutorialTranslator implements ToscaPolicyTranslator {
 
-	public PolicyType convertPolicy(ToscaPolicy toscaPolicy) throws ToscaPolicyConversionException {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public PolicyType convertPolicy(ToscaPolicy toscaPolicy) throws ToscaPolicyConversionException {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public Request convertRequest(DecisionRequest request) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Request convertRequest(DecisionRequest request) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public DecisionResponse convertResponse(Response xacmlResponse) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public DecisionResponse convertResponse(Response xacmlResponse) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
   }
 
@@ -250,8 +250,8 @@
 
   public class TutorialApplication extends StdXacmlApplicationServiceProvider {
 	
-	private final ToscaPolicyTypeIdentifier supportedPolicyType = new ToscaPolicyTypeIdentifier();
-	private final TutorialTranslator translator = new TutorialTranslator();
+    private final ToscaPolicyTypeIdentifier supportedPolicyType = new ToscaPolicyTypeIdentifier();
+    private final TutorialTranslator translator = new TutorialTranslator();
 
     @Override
     public String applicationName() {
@@ -274,9 +274,9 @@
     }
 
     @Override
-	protected ToscaPolicyTranslator getTranslator(String type) {
-		return translator;
-	}
+    protected ToscaPolicyTranslator getTranslator(String type) {
+        return translator;
+     }
 
   }
 
