diff --git a/lib/decoding/GSM690Tables.cpp b/lib/decoding/GSM690Tables.cpp
deleted file mode 100644
index 7c40a9a..0000000
--- a/lib/decoding/GSM690Tables.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/* AMR (GSM 06.90) importance bit ordering */
-
-/*
- * Copyright 2010  Sylvain Munaut <tnt@246tNt.com>
- * All Rights Reserved
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "GSM690Tables.h"
-
-unsigned int GSM::g690_12_2_BitOrder[244] = {
-	  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,
-	 10,  11,  12,  13,  14,  23,  15,  16,  17,  18,
-	 19,  20,  21,  22,  24,  25,  26,  27,  28,  38,
-	141,  39, 142,  40, 143,  41, 144,  42, 145,  43,
-	146,  44, 147,  45, 148,  46, 149,  47,  97, 150,
-	200,  48,  98, 151, 201,  49,  99, 152, 202,  86,
-	136, 189, 239,  87, 137, 190, 240,  88, 138, 191,
-	241,  91, 194,  92, 195,  93, 196,  94, 197,  95,
-	198,  29,  30,  31,  32,  33,  34,  35,  50, 100,
-	153, 203,  89, 139, 192, 242,  51, 101, 154, 204,
-	 55, 105, 158, 208,  90, 140, 193, 243,  59, 109,
-	162, 212,  63, 113, 166, 216,  67, 117, 170, 220,
-	 36,  37,  54,  53,  52,  58,  57,  56,  62,  61,
-	 60,  66,  65,  64,  70,  69,  68, 104, 103, 102,
-	108, 107, 106, 112, 111, 110, 116, 115, 114, 120,
-	119, 118, 157, 156, 155, 161, 160, 159, 165, 164,
-	163, 169, 168, 167, 173, 172, 171, 207, 206, 205,
-	211, 210, 209, 215, 214, 213, 219, 218, 217, 223,
-	222, 221,  73,  72,  71,  76,  75,  74,  79,  78,
-	 77,  82,  81,  80,  85,  84,  83, 123, 122, 121,
-	126, 125, 124, 129, 128, 127, 132, 131, 130, 135,
-	134, 133, 176, 175, 174, 179, 178, 177, 182, 181,
-	180, 185, 184, 183, 188, 187, 186, 226, 225, 224,
-	229, 228, 227, 232, 231, 230, 235, 234, 233, 238,
-	237, 236,  96, 199,
-};
diff --git a/lib/decoding/GSM690Tables.h b/lib/decoding/GSM690Tables.h
deleted file mode 100644
index 6b9bb36..0000000
--- a/lib/decoding/GSM690Tables.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* AMR (GSM 06.90) importance bit ordering */
-
-/*
- * Copyright 2010  Sylvain Munaut <tnt@246tNt.com>
- * All Rights Reserved
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef GSM690TABLES_H
-#define GSM690TABLES_H
-
-namespace GSM {
-
-/** Table #7 from GSM 05.03 */
-extern unsigned int g690_12_2_BitOrder[244];
-
-}
-
-#endif /* GSM690TABLES_H */
diff --git a/lib/decoding/VocoderFrame.h b/lib/decoding/VocoderFrame.h
deleted file mode 100644
index 1651a29..0000000
--- a/lib/decoding/VocoderFrame.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef _VOCODERFRAME_H
-#define _VOCODERFRAME_H
-
-#include "BitVector.h"
-//#include "GSMCommon.h"
-
-class VocoderFrame : public BitVector {
-
-        public:
-
-        VocoderFrame()
-                :BitVector(264)
-        { fillField(0,0x0d,4); }
-
-        /** Construct by unpacking a char[33]. */
-        VocoderFrame(const unsigned char *src)
-                :BitVector(264)
-        { unpack(src); }
-
-        BitVector payload() { return tail(4); }
-//        const BitVector payload() const { return tail(4); }
-
-};
-
-class VocoderAMRFrame : public BitVector {
-
-        public:
-
-        VocoderAMRFrame()
-                :BitVector(244+8)
-        { fillField(0,0x3c,8); /* AMR-NB 12.2 */ }
-
-        /** Construct by unpacking a char[32]. */
-        VocoderAMRFrame(const unsigned char *src)
-                :BitVector(244+8)
-        { unpack(src); }
-
-        BitVector payload() { return tail(8); }
-//        const BitVector payload() const { return tail(8); }
-
-};
-
-class VocoderAMR_5_9_Frame : public BitVector {
-
-        public:
-
-        VocoderAMR_5_9_Frame()
-                :BitVector(118+8)
-        { fillField(0,0x14,8); /* AMR-NB 12.2 */ }
-
-        /** Construct by unpacking a char[32]. */
-        VocoderAMR_5_9_Frame(const unsigned char *src)
-                :BitVector(118+8)
-        { unpack(src); }
-
-        BitVector payload() { return tail(8); }
-//        const BitVector payload() const { return tail(8); }
-
-};
-
-
-#endif
diff --git a/lib/decoding/tch_f_decoder_impl.cc b/lib/decoding/tch_f_decoder_impl.cc
index b4ff24f..89b8520 100644
--- a/lib/decoding/tch_f_decoder_impl.cc
+++ b/lib/decoding/tch_f_decoder_impl.cc
@@ -236,7 +236,7 @@
                           EFRBits[k-8] = TCHW[k] & 1;
 
                         // Map bits as AMR 12.2k
-                        EFRBits.map(GSM::g690_12_2_BitOrder, 244, payload);
+                        EFRBits.map(GSM::gAMRBitOrderTCH_AFS12_2, 244, payload);
 
                         // Put the whole frame (hdr + payload)
                         mTCHFrameLength = 32;
diff --git a/lib/decoding/tch_f_decoder_impl.h b/lib/decoding/tch_f_decoder_impl.h
index d603845..4c8a4b9 100644
--- a/lib/decoding/tch_f_decoder_impl.h
+++ b/lib/decoding/tch_f_decoder_impl.h
@@ -25,11 +25,9 @@
 
 #include "AmrCoder.h"
 #include "BitVector.h"
-#include "VocoderFrame.h"
 #include "GSM503Tables.h"
 #include "GSM610Tables.h"
 #include "GSM660Tables.h"
-#include "GSM690Tables.h"
 #include "ViterbiR204.h"
 #include <grgsm/decoding/tch_f_decoder.h>
 
