diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt
index a73c80f57cfa4a1051cde7f206db54eac12914d2..ab5ce92ea7a934eed15ea4b6834b9a497a99a386 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt
@@ -104,7 +104,7 @@ data class Flags<E>(
 
 infix fun <T> Flags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Flag<T> {
   // an Undefined flag is a special case.
-  if (value == 0u) return false
+  if (which.bit == 0u) return false
   return value and which.bit == which.bit
 }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
index 61dec8af07fd596fab138b1f8c6119102fe11592..5aa32e1826e8f41b76db4b66f225247b7279b0c2 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt
@@ -104,7 +104,7 @@ data class LongFlags<E>(
 
 infix fun <T> LongFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : LongFlag<T> {
   // an Undefined flag is a special case.
-  if (value == 0uL) return false
+  if (which.bit == 0uL) return false
   return value and which.bit == which.bit
 }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
index 273d8cce62ce9e27bfd246e4bd158d60da6de6dd..0eacf94f316f45eab5a7c2c2bdff2d32842bbd2f 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt
@@ -104,7 +104,7 @@ data class ShortFlags<E>(
 
 infix fun <T> ShortFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : ShortFlag<T> {
   // an Undefined flag is a special case.
-  if (value == 0u.toUShort()) return false
+  if (which.bit == 0u.toUShort()) return false
   return value and which.bit == which.bit
 }
 
diff --git a/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt b/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e8e4389d402a0d0f629e47ca5bcd1a36cedbcdad
--- /dev/null
+++ b/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt
@@ -0,0 +1,70 @@
+package de.kuschku.libquassel.quassel
+
+import de.kuschku.libquassel.protocol.Buffer_Type
+import de.kuschku.libquassel.util.flag.hasFlag
+import org.junit.Assert
+import org.junit.Test
+
+class BufferTypeTest {
+  @Test
+  fun testHasFlag() {
+    Assert.assertTrue(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.StatusBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.QueryBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.ChannelBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.GroupBuffer))
+
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.StatusBuffer))
+    Assert.assertTrue(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.QueryBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.ChannelBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.GroupBuffer))
+
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.StatusBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.QueryBuffer))
+    Assert.assertTrue(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.ChannelBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.GroupBuffer))
+
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.StatusBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.QueryBuffer))
+    Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.ChannelBuffer))
+    Assert.assertTrue(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.GroupBuffer))
+  }
+
+  @Test
+  fun testEnabledValues() {
+    Assert.assertEquals(
+      Buffer_Type.StatusBuffer,
+      Buffer_Type.of(Buffer_Type.StatusBuffer).enabledValues().firstOrNull()
+    )
+    Assert.assertEquals(
+      setOf(Buffer_Type.StatusBuffer),
+      Buffer_Type.of(Buffer_Type.StatusBuffer).enabledValues()
+    )
+
+    Assert.assertEquals(
+      Buffer_Type.QueryBuffer,
+      Buffer_Type.of(Buffer_Type.QueryBuffer).enabledValues().firstOrNull()
+    )
+    Assert.assertEquals(
+      setOf(Buffer_Type.QueryBuffer),
+      Buffer_Type.of(Buffer_Type.QueryBuffer).enabledValues()
+    )
+
+    Assert.assertEquals(
+      Buffer_Type.ChannelBuffer,
+      Buffer_Type.of(Buffer_Type.ChannelBuffer).enabledValues().firstOrNull()
+    )
+    Assert.assertEquals(
+      setOf(Buffer_Type.ChannelBuffer),
+      Buffer_Type.of(Buffer_Type.ChannelBuffer).enabledValues()
+    )
+
+    Assert.assertEquals(
+      Buffer_Type.GroupBuffer,
+      Buffer_Type.of(Buffer_Type.GroupBuffer).enabledValues().firstOrNull()
+    )
+    Assert.assertEquals(
+      setOf(Buffer_Type.GroupBuffer),
+      Buffer_Type.of(Buffer_Type.GroupBuffer).enabledValues()
+    )
+  }
+}