diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
index cd60e71..046ceab 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv4Address.java
@@ -15,12 +15,12 @@
 
 package org.openvpp.vppjapi;
 
-public class vppIPv4Address {
-    public int ip;
-    public byte prefixLength;
+public final class vppIPv4Address {
+    public final int ip;
+    public final byte prefixLength;
 
-    public vppIPv4Address(int _ip, byte _prefixLength) {
-        ip = _ip;
-        prefixLength = _prefixLength;
+    public vppIPv4Address(int ip, byte prefixLength) {
+        this.ip = ip;
+        this.prefixLength = prefixLength;
     }
 }
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
index efaa89c..7bf10f2 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppIPv6Address.java
@@ -16,8 +16,9 @@
 package org.openvpp.vppjapi;
 
 public class vppIPv6Address {
-    public byte[] ip;
-    public byte prefixLength;
+    // FIXME: this is dangerous
+    public final byte[] ip;
+    public final byte prefixLength;
 
     public vppIPv6Address(byte[] _ip, byte _prefixLength) {
         ip = _ip;
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
index 1777d5d..8a02ad0 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceCounters.java
@@ -17,29 +17,29 @@
 
 public class vppInterfaceCounters {
 
-    public long rxOctets;
-    public long rxIp4;
-    public long rxIp6;
-    public long rxUnicast;
-    public long rxMulticast;
-    public long rxBroadcast;
-    public long rxDiscard;
-    public long rxFifoFull;
-    public long rxError;
-    public long rxUnknownProto;
-    public long rxMiss;
+    public final long rxOctets;
+    public final long rxIp4;
+    public final long rxIp6;
+    public final long rxUnicast;
+    public final long rxMulticast;
+    public final long rxBroadcast;
+    public final long rxDiscard;
+    public final long rxFifoFull;
+    public final long rxError;
+    public final long rxUnknownProto;
+    public final long rxMiss;
 
-    public long txOctets;
-    public long txIp4;
-    public long txIp6;
-    public long txUnicast;
-    public long txMulticast;
-    public long txBroadcast;
-    public long txDiscard;
-    public long txFifoFull;
-    public long txError;
-    public long txUnknownProto;
-    public long txMiss;
+    public final long txOctets;
+    public final long txIp4;
+    public final long txIp6;
+    public final long txUnicast;
+    public final long txMulticast;
+    public final long txBroadcast;
+    public final long txDiscard;
+    public final long txFifoFull;
+    public final long txError;
+    public final long txUnknownProto;
+    public final long txMiss;
 
     public vppInterfaceCounters(
             long rxOctets, long rxIp4, long rxIp6, long rxUni, long rxMulti,
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
index 8bc94d2..b2edae0 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppInterfaceDetails.java
@@ -15,28 +15,29 @@
 
 package org.openvpp.vppjapi;
 
-public class vppInterfaceDetails {
-    public int ifIndex;
-    public String interfaceName;
-    public int supIfIndex;
-    public byte[] physAddr;
-    public byte adminUp;
-    public byte linkUp;
-    public byte linkDuplex;
-    public byte linkSpeed;
-    public int subId;
-    public byte subDot1ad;
-    public byte subNumberOfTags;
-    public int subOuterVlanId;
-    public int subInnerVlanId;
-    public byte subExactMatch;
-    public byte subDefault;
-    public byte subOuterVlanIdAny;
-    public byte subInnerVlanIdAny;
-    public int vtrOp;
-    public int vtrPushDot1q;
-    public int vtrTag1;
-    public int vtrTag2;
+public final class vppInterfaceDetails {
+    public final int ifIndex;
+    public final String interfaceName;
+    public final int supIfIndex;
+    // FIXME: this is dangerous
+    public final byte[] physAddr;
+    public final byte adminUp;
+    public final byte linkUp;
+    public final byte linkDuplex;
+    public final byte linkSpeed;
+    public final int subId;
+    public final byte subDot1ad;
+    public final byte subNumberOfTags;
+    public final int subOuterVlanId;
+    public final int subInnerVlanId;
+    public final byte subExactMatch;
+    public final byte subDefault;
+    public final byte subOuterVlanIdAny;
+    public final byte subInnerVlanIdAny;
+    public final int vtrOp;
+    public final int vtrPushDot1q;
+    public final int vtrTag1;
+    public final int vtrTag2;
 
     public vppInterfaceDetails(int ifIndex, String interfaceName, int supIfIndex, byte[] physAddr, byte adminUp,
             byte linkUp, byte linkDuplex, byte linkSpeed, int subId, byte subDot1ad, byte subNumberOfTags,
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java b/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
index 9f43449..b38d801 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppL2Fib.java
@@ -15,20 +15,21 @@
 
 package org.openvpp.vppjapi;
 
-public class vppL2Fib {
-    public byte[] physAddress;
-    public boolean staticConfig;
-    public String outgoingInterface;
-    public boolean filter;
-    public boolean bridgedVirtualInterface;
+public final class vppL2Fib {
+    // FIXME: this is dangerous
+    public final byte[] physAddress;
+    public final boolean staticConfig;
+    public final String outgoingInterface;
+    public final boolean filter;
+    public final boolean bridgedVirtualInterface;
 
-    public vppL2Fib(byte[] _physAddress, boolean _staticConfig,
-            String _outgoingInterface, boolean _filter,
-            boolean _bridgedVirtualInterface) {
-        physAddress = _physAddress;
-        staticConfig = _staticConfig;
-        outgoingInterface = _outgoingInterface;
-        filter = _filter;
-        bridgedVirtualInterface = _bridgedVirtualInterface;
+    public vppL2Fib(byte[] physAddress, boolean staticConfig,
+            String outgoingInterface, boolean filter,
+            boolean bridgedVirtualInterface) {
+        this.physAddress = physAddress;
+        this.staticConfig = staticConfig;
+        this.outgoingInterface = outgoingInterface;
+        this.filter = filter;
+        this.bridgedVirtualInterface = bridgedVirtualInterface;
     }
 }
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java b/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
index 557ca7b..6408dee 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppVersion.java
@@ -15,18 +15,17 @@
 
 package org.openvpp.vppjapi;
 
-public class vppVersion {
-    public String programName;
-    public String buildDirectory;
-    public String gitBranch;
-    public String buildDate;
+public final class vppVersion {
+    public final String programName;
+    public final String buildDirectory;
+    public final String gitBranch;
+    public final String buildDate;
 
-    public vppVersion(String _progName, String _buildDir, String _gitBranch, String _buildDate)
-    {
-        programName = _progName;
-        buildDirectory = _buildDir;
-        gitBranch = _gitBranch;
-        buildDate = _buildDate;
+    public vppVersion(String progName, String buildDir, String gitBranch, String buildDate) {
+        this.programName = progName;
+        this.buildDirectory = buildDir;
+        this.gitBranch = gitBranch;
+        this.buildDate = buildDate;
     }
 }
 
diff --git a/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java b/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
index a90e933..dd81e98 100644
--- a/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
+++ b/vpp-japi/japi/org/openvpp/vppjapi/vppVxlanTunnelDetails.java
@@ -15,19 +15,19 @@
 
 package org.openvpp.vppjapi;
 
-public class vppVxlanTunnelDetails {
-    public int srcAddress;
-    public int dstAddress;
-    public int encapVrfId;
-    public int vni;
-    public int decap_next_index;
+public final class vppVxlanTunnelDetails {
+    public final int srcAddress;
+    public final int dstAddress;
+    public final int encapVrfId;
+    public final int vni;
+    public final int decapNextIndex;
 
-    public vppVxlanTunnelDetails(int _srcAddress, int _dstAddress,
-            int _encapVrfId, int _vni, int _decap_next_index) {
-        srcAddress = _srcAddress;
-        dstAddress = _dstAddress;
-        encapVrfId = _encapVrfId;
-        vni = _vni;
-        decap_next_index = _decap_next_index;
+    public vppVxlanTunnelDetails(int srcAddress, int dstAddress,
+            int encapVrfId, int vni, int decapNextIndex) {
+        this.srcAddress = srcAddress;
+        this.dstAddress = dstAddress;
+        this.encapVrfId = encapVrfId;
+        this.vni = vni;
+        this.decapNextIndex = decapNextIndex;
     }
 }
