diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 631b31f..a6dd2fd 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -17,8 +17,6 @@
 #ifndef LATINIME_DEFINES_H
 #define LATINIME_DEFINES_H
 
-#include <stdint.h>
-
 #ifdef __GNUC__
 #define AK_FORCE_INLINE __attribute__((always_inline)) __inline__
 #else // __GNUC__
diff --git a/native/jni/src/dic_traverse_wrapper.h b/native/jni/src/dic_traverse_wrapper.h
index 3fe3d5b..22cf1b1 100644
--- a/native/jni/src/dic_traverse_wrapper.h
+++ b/native/jni/src/dic_traverse_wrapper.h
@@ -17,8 +17,6 @@
 #ifndef LATINIME_DIC_TRAVERSE_WRAPPER_H
 #define LATINIME_DIC_TRAVERSE_WRAPPER_H
 
-#include <stdint.h>
-
 #include "defines.h"
 #include "jni.h"
 
diff --git a/native/jni/src/gesture/gesture_decoder_wrapper.h b/native/jni/src/gesture/gesture_decoder_wrapper.h
index 5b056b6..b968149 100644
--- a/native/jni/src/gesture/gesture_decoder_wrapper.h
+++ b/native/jni/src/gesture/gesture_decoder_wrapper.h
@@ -17,7 +17,6 @@
 #ifndef LATINIME_GESTURE_DECODER_WRAPPER_H
 #define LATINIME_GESTURE_DECODER_WRAPPER_H
 
-#include <stdint.h>
 #include "defines.h"
 #include "incremental_decoder_interface.h"
 
diff --git a/native/jni/src/gesture/incremental_decoder_interface.h b/native/jni/src/gesture/incremental_decoder_interface.h
index e41513d..ff85adc 100644
--- a/native/jni/src/gesture/incremental_decoder_interface.h
+++ b/native/jni/src/gesture/incremental_decoder_interface.h
@@ -17,7 +17,6 @@
 #ifndef LATINIME_INCREMENTAL_DECODER_INTERFACE_H
 #define LATINIME_INCREMENTAL_DECODER_INTERFACE_H
 
-#include <stdint.h>
 #include "defines.h"
 
 namespace latinime {
diff --git a/native/jni/src/gesture/incremental_decoder_wrapper.h b/native/jni/src/gesture/incremental_decoder_wrapper.h
index 7d16560..c15b439 100644
--- a/native/jni/src/gesture/incremental_decoder_wrapper.h
+++ b/native/jni/src/gesture/incremental_decoder_wrapper.h
@@ -17,7 +17,6 @@
 #ifndef LATINIME_INCREMENTAL_DECODER_WRAPPER_H
 #define LATINIME_INCREMENTAL_DECODER_WRAPPER_H
 
-#include <stdint.h>
 #include "defines.h"
 #include "incremental_decoder_interface.h"
 
diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp
index 7879175..39d53fb 100644
--- a/native/jni/src/proximity_info_state.cpp
+++ b/native/jni/src/proximity_info_state.cpp
@@ -16,7 +16,6 @@
 
 #include <cstring> // for memset()
 #include <sstream> // for debug prints
-#include <stdint.h>
 
 #define LOG_TAG "LatinIME: proximity_info_state.cpp"
 
@@ -758,8 +757,8 @@
 }
 
 // Puts possible characters into filter and returns new filter size.
-int32_t ProximityInfoState::getAllPossibleChars(
-        const size_t index, int32_t *const filter, const int32_t filterSize) const {
+int ProximityInfoState::getAllPossibleChars(
+        const size_t index, int *const filter, const int filterSize) const {
     if (index >= mSampledInputXs.size()) {
         return filterSize;
     }
@@ -767,7 +766,7 @@
     const int keyCount = mProximityInfo->getKeyCount();
     for (int j = 0; j < keyCount; ++j) {
         if (mSearchKeysVector[index].test(j)) {
-            const int32_t keyCodePoint = mProximityInfo->getCodePointOf(j);
+            const int keyCodePoint = mProximityInfo->getCodePointOf(j);
             bool insert = true;
             // TODO: Avoid linear search
             for (int k = 0; k < filterSize; ++k) {
diff --git a/native/jni/src/proximity_info_state.h b/native/jni/src/proximity_info_state.h
index 53a2383..d3b4062 100644
--- a/native/jni/src/proximity_info_state.h
+++ b/native/jni/src/proximity_info_state.h
@@ -19,7 +19,6 @@
 
 #include <bitset>
 #include <cstring> // for memset()
-#include <stdint.h>
 #include <string>
 #include <vector>
 
@@ -164,8 +163,7 @@
 
     int getSpaceY() const;
 
-    int32_t getAllPossibleChars(
-            const size_t startIndex, int32_t *const filter, const int32_t filterSize) const;
+    int getAllPossibleChars(const size_t startIndex, int *const filter, const int filterSize) const;
 
     float getSpeedRate(const int index) const {
         return mSpeedRates[index];
