diff --git a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BInteger.java b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BInteger.java
index aca62d9e50d3edb6abeb311aa2290087af7090bf..3a2cc0e469963cb2db7bb24c6a32a8deac0ce8c7 100755
--- a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BInteger.java
+++ b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BInteger.java
@@ -70,32 +70,32 @@ public class BInteger extends java.lang.Number implements Comparable<BInteger>,
 	}
 
 	public BBoolean lessEqual(BInteger o) {
-		return new BBoolean(this.value <= o.value);
+		return new BBoolean(compareTo(o) <= 0);
 	}
 
 
 	public BBoolean greaterEqual(BInteger o) {
-		return new BBoolean(this.value >= o.value);
-	}
-
-	public java.math.BigInteger asBigInteger() {
-		return new java.math.BigInteger(String.valueOf(value));
+		return new BBoolean(compareTo(o) >= 0);
 	}
 
 	public BBoolean less(BInteger o) {
-		return new BBoolean(this.value < o.value);
+		return new BBoolean(compareTo(o) < 0);
 	}
 
 	public BBoolean greater(BInteger o) {
-		return new BBoolean(this.value > o.value);
+		return new BBoolean(compareTo(o) > 0);
 	}
 
 	public BBoolean equal(BInteger o) {
-		return new BBoolean(this.value == o.value);
+		return new BBoolean(compareTo(o) == 0);
 	}
 
 	public BBoolean unequal(BInteger o) {
-		return new BBoolean(this.value != o.value);
+		return new BBoolean(compareTo(o) != 0);
+	}
+
+	public java.math.BigInteger asBigInteger() {
+		return new java.math.BigInteger(String.valueOf(value));
 	}
 
 	@Override
diff --git a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BSet.java b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BSet.java
index f190d5266f19726cfc970caaafbf4fe54feaa350..e7ee93110023e2e12330d4f2e78718c2976c56c5 100755
--- a/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BSet.java
+++ b/btypes_big_integer/src/main/java/de/hhu/stups/btypes/BSet.java
@@ -348,20 +348,31 @@ public class BSet<T> implements BObject, Set<T> {
 		return new BBoolean(true);
 	}
 
+	public BBoolean subsetOfBoolean() {
+		for(T e : this) {
+			if(e instanceof BBoolean) {
+				return new BBoolean(true);
+			} else {
+				return new BBoolean(false);
+			}
+		}
+		return new BBoolean(true);
+	}
+
 	public BBoolean strictSubsetOfBoolean() {
-		return subsetOfBoolean();
+		return new BBoolean(this.subsetOfBoolean().booleanValue() && this.size() < 2);
 	}
 
 	public BBoolean notSubsetOfBoolean() {
-		return subsetOfBoolean().not();
+		return this.subsetOfBoolean().not();
 	}
 
 	public BBoolean equalBoolean() {
-		return new BBoolean(subsetOfBoolean().booleanValue() && this.size() == 2);
+		return new BBoolean(this.subsetOfBoolean().booleanValue() && this.size() == 2);
 	}
 
 	public BBoolean unequalBoolean() {
-		return new BBoolean(subsetOfBoolean().booleanValue() && this.size() < 2);
+		return new BBoolean(this.subsetOfBoolean().booleanValue() && this.size() < 2);
 	}
 
 	public BBoolean strictSubsetOfInteger() {