diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index 4bc4365..11e6dc2 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -111,7 +111,7 @@
     mMaxBigrams = maxBigrams;
 
     if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) {
-        int pos = mParentDictionary->isValidWord(prevWord, prevWordLength);
+        int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength);
         if (DEBUG_DICT) {
             LOGI("Pos -> %d", pos);
         }
diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp
index a49769b..9e32ee8 100644
--- a/native/src/dictionary.cpp
+++ b/native/src/dictionary.cpp
@@ -57,4 +57,12 @@
     return mUnigramDictionary->isValidWord(word, length);
 }
 
+int Dictionary::getBigramPosition(unsigned short *word, int length) {
+    if (IS_LATEST_DICT_VERSION) {
+        return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length);
+    } else {
+        return mUnigramDictionary->getBigramPosition(0, word, 0, length);
+    }
+}
+
 } // namespace latinime
diff --git a/native/src/dictionary.h b/native/src/dictionary.h
index 3b360d9..1b41f69 100644
--- a/native/src/dictionary.h
+++ b/native/src/dictionary.h
@@ -62,6 +62,9 @@
             const int pos, unsigned short *c, int *childrenPosition,
             bool *terminal, int *freq);
 
+    // TODO: delete this
+    int getBigramPosition(unsigned short *word, int length);
+
 private:
     bool hasBigram();
 
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 7bcdbb4..c294cf3 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -932,15 +932,16 @@
 // TODO: use uint32_t instead of unsigned short
 bool UnigramDictionary::isValidWord(unsigned short *word, int length) {
     if (IS_LATEST_DICT_VERSION) {
-        return (getFrequency(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+        return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
     } else {
-        return (getFrequency(0, word, 0, length) != NOT_VALID_WORD);
+        return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD);
     }
 }
 
 
 // Require strict exact match.
-int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, int length) const {
+int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset,
+        int length) const {
     // returns address of bigram data of that word
     // return -99 if not found
 
@@ -957,7 +958,7 @@
                 }
             } else {
                 if (childPos != 0) {
-                    int t = getFrequency(childPos, word, offset + 1, length);
+                    int t = getBigramPosition(childPos, word, offset + 1, length);
                     if (t > 0) {
                         return t;
                     }
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index b8e4914..c47db1a 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -40,6 +40,7 @@
             int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
             const bool isLatestDictVersion);
     bool isValidWord(unsigned short *word, int length);
+    int getBigramPosition(int pos, unsigned short *word, int offset, int length) const;
     int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
             const int *ycoordinates, const int *codes, const int codesSize, const int flags,
             unsigned short *outWords, int *frequencies);
@@ -59,7 +60,6 @@
     void getSuggestionCandidates(const int skipPos, const int excessivePos,
             const int transposedPos, int *nextLetters, const int nextLettersSize,
             const int maxDepth);
-    int getFrequency(int pos, unsigned short *word, int offset, int length) const;
     void getVersionNumber();
     bool checkIfDictVersionIsLatest();
     int getAddress(int *pos);
