diff --git a/src/main/java/avatartranslator/AvatarExpressionAttribute.java b/src/main/java/avatartranslator/AvatarExpressionAttribute.java
index 290b018dd3c937927e6191aadbf614f690a70678..d4559085174036dbddb44876cd5294f481c1fc66 100644
--- a/src/main/java/avatartranslator/AvatarExpressionAttribute.java
+++ b/src/main/java/avatartranslator/AvatarExpressionAttribute.java
@@ -38,6 +38,8 @@
 
 package avatartranslator;
 
+import java.util.List;
+
 import avatartranslator.modelchecker.SpecificationBlock;
 import avatartranslator.modelchecker.SpecificationState;
 
@@ -204,6 +206,19 @@ public class AvatarExpressionAttribute {
         return value;
     }
     
+    public int getValue(int[] attributesValues) {
+        int value;
+        
+        if (isState) {
+                return 0;
+        }
+        
+        //Cancel offset based on Specification Blocks
+        value = attributesValues[accessIndex - SpecificationBlock.ATTR_INDEX];
+        
+        return value;
+    }
+    
     public void setValue(SpecificationState ss, int value) {
         int v;
         
diff --git a/src/main/java/avatartranslator/AvatarExpressionSolver.java b/src/main/java/avatartranslator/AvatarExpressionSolver.java
index d9e9bec9440de6250bfb0c801c16c9ae10277d27..bacb6d4639fefafb34f660936046a6548c70d10b 100644
--- a/src/main/java/avatartranslator/AvatarExpressionSolver.java
+++ b/src/main/java/avatartranslator/AvatarExpressionSolver.java
@@ -557,6 +557,26 @@ public class AvatarExpressionSolver {
         return res;
     }
     
+    public int getResult(int[] attributesValues) {
+        int res;
+        if (isLeaf) {
+            if (isImmediateValue != IMMEDIATE_NO) {
+                res = intValue;
+            } else {
+                res = leaf.getValue(attributesValues);
+            }
+        } else {
+            res = getChildrenResult(left.getResult(attributesValues), right.getResult(attributesValues));
+        }
+        
+        if (isNot) {
+            res = (res == 0) ? 1 : 0;
+        } else if (isNegated) {
+            res = -res;
+        }
+        return res;
+    }
+    
     private int getChildrenResult(int leftV, int rightV) {
         int result;
         
diff --git a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
index 5fd6e9f492dd72e7057f322fe5f61cca24bc6708..96318fb4bcb1b693fc76f949b32f1e07511d709b 100644
--- a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
+++ b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
@@ -135,6 +135,7 @@ public class AvatarExpressionTest {
     public void testBlock() {
         SpecificationBlock specBlock = new SpecificationBlock();
         specBlock.init(block1, false);
+        int[] attributes = {2, 3, 7, 0, 1};
         
         AvatarExpressionSolver e1 = new AvatarExpressionSolver("x + y");
         assertTrue(e1.buildExpression(block1));
@@ -156,6 +157,12 @@ public class AvatarExpressionTest {
         assertTrue(e9.buildExpression(block1));
         AvatarExpressionSolver e10 = new AvatarExpressionSolver("x*((x + y)*z + (x+z)/z)/x");
         assertTrue(e10.buildExpression(block1));
+        AvatarExpressionSolver e11 = new AvatarExpressionSolver("x + y");
+        assertTrue(e11.buildExpression(block1));
+        AvatarExpressionSolver e12 = new AvatarExpressionSolver("x*((x + y)*z + (x+z)/z)/x");
+        assertTrue(e12.buildExpression(block1));
+        AvatarExpressionSolver e13 = new AvatarExpressionSolver("(key1==false) and (key2==true)");
+        assertTrue(e13.buildExpression(block1));
         assertTrue(e1.getResult(specBlock) == 15);
         assertTrue(e2.getResult(specBlock) == 1);
         assertTrue(e3.getResult(specBlock) == 0);
@@ -166,6 +173,9 @@ public class AvatarExpressionTest {
         assertTrue(e8.getResult(specBlock) == 45);
         assertTrue(e9.getResult(specBlock) == 570);
         assertTrue(e10.getResult(specBlock) == 36);
+        assertTrue(e11.getResult(attributes) == 5);
+        assertTrue(e12.getResult(attributes) == 36);
+        assertTrue(e13.getResult(attributes) == 1);
     }
     
     @Test