diff --git a/generator/templates/art/api_kotlin_enum.kt b/generator/templates/art/api_kotlin_enum.kt
index c54f813..ff87ebd 100644
--- a/generator/templates/art/api_kotlin_enum.kt
+++ b/generator/templates/art/api_kotlin_enum.kt
@@ -26,8 +26,15 @@
 //* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 package {{ metadata.kotlin_package }}
 
-object {{ enum.name.CamelCase() }} {
-    {% for value in enum.values %}
-        const val {{ as_ktName(value.name.CamelCase() ) }} = {{ '{:#010x}'.format(value.value) }};
-    {% endfor %}
+@JvmInline
+value class {{ enum.name.CamelCase() }}(val v: Int) {
+    {% if enum.category == 'bitmask' %}
+        infix fun or(b: {{ enum.name.CamelCase() }}) = {{ enum.name.CamelCase() }}(this.v or b.v)
+    {% endif %}
+    companion object {
+        {% for value in enum.values %}
+            val {{ as_ktName(value.name.CamelCase()) }} =
+                {{- enum.name.CamelCase() }}({{ '{:#010x}'.format(value.value) }})
+        {% endfor %}
+    }
 }
diff --git a/generator/templates/art/api_kotlin_structure.kt b/generator/templates/art/api_kotlin_structure.kt
index 076b4f6..a1c36e2 100644
--- a/generator/templates/art/api_kotlin_structure.kt
+++ b/generator/templates/art/api_kotlin_structure.kt
@@ -29,6 +29,9 @@
 
 class {{ structure.name.CamelCase() }}(
     {% for member in structure.members %}
+        {%- if member.type.category in ['bitmask', 'enum'] -%}
+            @get:JvmName("get{{ member.name.CamelCase() }}")
+        {% endif %}
         var {{ member.name.camelCase() }}: {{ kotlin_declaration(member) }},
     {% endfor %}
     {% for structure in chain_children[structure.name.get()] %}
