diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
index 444730a..838f987 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
@@ -142,7 +142,7 @@
         } else {
             final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
             // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
-            builder.insertKeysAtRow(3, 2, key("\u0626"));
+            builder.insertKeysAtRow(3, 2, "\u0626");
             return builder.build();
         }
     }
@@ -198,7 +198,7 @@
                     // U+069C: "ڜ" ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
                     key("\u0634", moreKey("\u069C")),
                     // U+0633: "س" ARABIC LETTER SEEN
-                    key("\u0633"),
+                    "\u0633",
                     // U+064A: "ي" ARABIC LETTER YEH
                     // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
                     // U+0649: "ى" ARABIC LETTER ALEF MAKSURA
@@ -226,18 +226,16 @@
                     // U+0671: "ٱ" ARABIC LETTER ALEF WASLA
                     key("\u0627", joinMoreKeys("\u0622", "\u0621", "\u0623", "\u0625", "\u0671")),
                     // U+062A: "ت" ARABIC LETTER TEH
-                    key("\u062A"),
                     // U+0646: "ن" ARABIC LETTER NOON
-                    key("\u0646"),
                     // U+0645: "م" ARABIC LETTER MEEM
-                    key("\u0645"),
+                    "\u062A", "\u0646", "\u0645",
                     // U+0643: "ك" ARABIC LETTER KAF
                     // U+06AF: "گ" ARABIC LETTER GAF
                     // U+06A9: "ک" ARABIC LETTER KEHEH
                     key("\u0643", joinMoreKeys("\u06AF", "\u06A9")),
                     // U+0637: "ط" ARABIC LETTER TAH
-                    key("\u0637"))
-            .setKeysOfRow(3, joinKeys(
+                    "\u0637")
+            .setKeysOfRow(3,
                     // U+0630: "ذ" ARABIC LETTER THAL
                     // U+0621: "ء" ARABIC LETTER HAMZA
                     // U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE
@@ -254,7 +252,7 @@
                     key("\u0632", moreKey("\u0698")),
                     // U+0638: "ظ" ARABIC LETTER ZAH
                     // U+062F: "د" ARABIC LETTER DAL
-                    "\u0638", "\u062F"))
+                    "\u0638", "\u062F")
             .build();
 
     private static class ArabicSymbols extends RtlSymbols {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java b/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java
index 24d85cf..eaa2582 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java
@@ -51,7 +51,7 @@
         } else {
             builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
             getCustomizer().setAccentedLetters(builder);
-            builder.replaceKeyOfLabel(ROW3_QUOTE, key("?"));
+            builder.replaceKeyOfLabel(ROW3_QUOTE, "?");
         }
         builder.toUpperCase(getLocale());
         return builder.build();
@@ -71,7 +71,7 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")))
-            .setLabelsOfRow(2, "q", "s", "d", "f", "g", "h", "j", "k", "l", "m")
-            .setLabelsOfRow(3, "w", "x", "c", "v", "b", "n", ROW3_QUOTE)
+            .setKeysOfRow(2, "q", "s", "d", "f", "g", "h", "j", "k", "l", "m")
+            .setKeysOfRow(3, "w", "x", "c", "v", "b", "n", ROW3_QUOTE)
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java b/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java
index a1ad549..0972cc1 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java
@@ -76,7 +76,7 @@
                     // U+043F: "п" CYRILLIC SMALL LETTER PE
                     key("\u043F", moreKey("0")),
                     // U+0447: "ч" CYRILLIC SMALL LETTER CHE
-                    key("\u0447"))
+                    "\u0447")
             // U+0430: "а" CYRILLIC SMALL LETTER A
             // U+0441: "с" CYRILLIC SMALL LETTER ES
             // U+0434: "д" CYRILLIC SMALL LETTER DE
@@ -88,7 +88,7 @@
             // U+043B: "л" CYRILLIC SMALL LETTER EL
             // U+0448: "ш" CYRILLIC SMALL LETTER SHA
             // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
                     "\u0430", "\u0441", "\u0434", "\u0444", "\u0433", "\u0445", "\u0439", "\u043A",
                     "\u043B", "\u0448", "\u0449")
             // U+0437: "з" CYRILLIC SMALL LETTER ZE
@@ -99,7 +99,7 @@
             // U+043D: "н" CYRILLIC SMALL LETTER EN
             // U+043C: "м" CYRILLIC SMALL LETTER EM
             // U+044E: "ю" CYRILLIC SMALL LETTER YU
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
                     "\u0437", "\u044C", "\u0446", "\u0436", "\u0431", "\u043D", "\u043C", "\u044E")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java
index b47b592..f8de934 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java
@@ -66,7 +66,7 @@
                     // U+0446: "ц" CYRILLIC SMALL LETTER TSE
                     key("\u0446", moreKey("0")),
                     // U+0431: "б" CYRILLIC SMALL LETTER BE
-                    key("\u0431"))
+                    "\u0431")
             // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
             // U+044F: "я" CYRILLIC SMALL LETTER YA
             // U+0430: "а" CYRILLIC SMALL LETTER A
@@ -78,7 +78,7 @@
             // U+0432: "в" CYRILLIC SMALL LETTER VE
             // U+043C: "м" CYRILLIC SMALL LETTER EM
             // U+0447: "ч" CYRILLIC SMALL LETTER CHE
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
                     "\u044C", "\u044F", "\u0430", "\u043E", "\u0436", "\u0433", "\u0442", "\u043D",
                     "\u0432", "\u043C", "\u0447")
             // U+044E: "ю" CYRILLIC SMALL LETTER YU
@@ -90,7 +90,7 @@
             // U+043F: "п" CYRILLIC SMALL LETTER PE
             // U+0440: "р" CYRILLIC SMALL LETTER ER
             // U+043B: "л" CYRILLIC SMALL LETTER EL
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
                     "\u044E", "\u0439", "\u044A", "\u044D", "\u0444", "\u0445", "\u043F", "\u0440",
                     "\u043B")
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java b/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java
index 6d2e245..f6de53f 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java
@@ -82,7 +82,7 @@
                     // U+0437: "з" CYRILLIC SMALL LETTER ZE
                     key("\u0437", moreKey("0")),
                     // U+0445: "х" CYRILLIC SMALL LETTER HA
-                    key("\u0445"))
+                    "\u0445")
             // U+0444: "ф" CYRILLIC SMALL LETTER EF
             // U+0432: "в" CYRILLIC SMALL LETTER VE
             // U+0430: "а" CYRILLIC SMALL LETTER A
@@ -92,7 +92,7 @@
             // U+043B: "л" CYRILLIC SMALL LETTER EL
             // U+0434: "д" CYRILLIC SMALL LETTER DE
             // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
                     "\u0444", ROW2_2, "\u0432", "\u0430", "\u043F", "\u0440", "\u043E", "\u043B",
                     "\u0434", "\u0436", ROW2_11)
             // U+044F: "я" CYRILLIC SMALL LETTER YA
@@ -103,7 +103,7 @@
             // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
             // U+0431: "б" CYRILLIC SMALL LETTER BE
             // U+044E: "ю" CYRILLIC SMALL LETTER YU
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
                     "\u044F", "\u0447", "\u0441", "\u043C", ROW3_5, "\u0442", "\u044C", "\u0431",
                     "\u044E")
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
index afec463..6da817f 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
@@ -148,7 +148,7 @@
         }
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
         // U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
-        builder.insertKeysAtRow(3, 10, key("\u0622"));
+        builder.insertKeysAtRow(3, 10, "\u0622");
         return builder.build();
     }
 
@@ -195,12 +195,11 @@
                     // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
                     key("\u062D", joinMoreKeys("\u06F0", "0")),
                     // U+062C: "ج" ARABIC LETTER JEEM
-                    key("\u062C"))
+                    "\u062C")
             .setKeysOfRow(2,
                     // U+0634: "ش" ARABIC LETTER SHEEN
-                    key("\u0634"),
                     // U+0633: "س" ARABIC LETTER SEEN
-                    key("\u0633"),
+                    "\u0634", "\u0633",
                     // U+06CC: "ی" ARABIC LETTER FARSI YEH
                     // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
                     // U+064A: "ي" ARABIC LETTER YEH
@@ -208,9 +207,8 @@
                     // U+0649: "ى" ARABIC LETTER ALEF MAKSURA
                     key("\u06CC", joinMoreKeys("\u0626", "\u064A", moreKey("\uFBE8", "\u0649"))),
                     // U+0628: "ب" ARABIC LETTER BEH
-                    key("\u0628"),
                     // U+0644: "ل" ARABIC LETTER LAM
-                    key("\u0644"),
+                    "\u0628", "\u0644",
                     // U+0627: "ا" ARABIC LETTER ALEF
                     // U+0671: "ٱ" ARABIC LETTER ALEF WASLA
                     // U+0621: "ء" ARABIC LETTER HAMZA
@@ -222,15 +220,14 @@
                     // U+0629: "ة": ARABIC LETTER TEH MARBUTA
                     key("\u062A", moreKey("\u0629")),
                     // U+0646: "ن" ARABIC LETTER NOON
-                    key("\u0646"),
                     // U+0645: "م" ARABIC LETTER MEEM
-                    key("\u0645"),
+                    "\u0646", "\u0645",
                     // U+06A9: "ک" ARABIC LETTER KEHEH
                     // U+0643: "ك" ARABIC LETTER KAF
                     key("\u06A9", moreKey("\u0643")),
                     // U+06AF: "گ" ARABIC LETTER GAF
-                    key("\u06AF"))
-            .setKeysOfRow(3, joinKeys(
+                    "\u06AF")
+            .setKeysOfRow(3,
                     // U+0638: "ظ" ARABIC LETTER ZAH
                     // U+0637: "ط" ARABIC LETTER TAH
                     // U+0698: "ژ" ARABIC LETTER JEH
@@ -244,7 +241,7 @@
                     // U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE
                     key("\u0648", moreKey("\u0624")),
                     // U+0686: "چ" ARABIC LETTER TCHEH
-                    "\u0686"))
+                    "\u0686")
             .build();
 
     private static class FarsiSymbols extends RtlSymbols {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java b/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java
index ad87c3b..6f20dfc 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java
@@ -99,9 +99,8 @@
                     // U+10FA: "ჺ" GEORGIAN LETTER AIN
                     key("\u10D0", moreKey("\u10FA")),
                     // U+10E1: "ს" GEORGIAN LETTER SAN
-                    key("\u10E1"),
                     // U+10D3: "დ" GEORGIAN LETTER DON
-                    key("\u10D3"),
+                    "\u10E1", "\u10D3",
                     // U+10E4: "ფ" GEORGIAN LETTER PHAR
                     // U+10F6: "ჶ" GEORGIAN LETTER FI
                     key("\u10E4", moreKey("\u10F6")),
@@ -115,27 +114,26 @@
                     // U+10F7: "ჷ" GEORGIAN LETTER YN
                     key("\u10EF", moreKey("\u10F7")),
                     // U+10D9: "კ" GEORGIAN LETTER KAN
-                    key("\u10D9"),
                     // U+10DA: "ლ" GEORGIAN LETTER LAS
-                    key("\u10DA"))
+                    "\u10D9", "\u10DA")
             .setKeysOfRow(3,
                     // U+10D6: "ზ" GEORGIAN LETTER ZEN
-                    key("\u10D6"),
+                    "\u10D6",
                     // U+10EE: "ხ" GEORGIAN LETTER XAN
                     // U+10F4: "ჴ" GEORGIAN LETTER HAR
                     key("\u10EE", moreKey("\u10F4")),
                     // U+10EA: "ც" GEORGIAN LETTER CAN
-                    key("\u10EA"),
+                    "\u10EA",
                     // U+10D5: "ვ" GEORGIAN LETTER VIN
                     // U+10F3: "ჳ" GEORGIAN LETTER WE
                     key("\u10D5", moreKey("\u10F3")),
                     // U+10D1: "ბ" GEORGIAN LETTER BAN
-                    key("\u10D1"),
+                    "\u10D1",
                     // U+10DC: "ნ" GEORGIAN LETTER NAR
                     // U+10FC: "ჼ" MODIFIER LETTER GEORGIAN NAR
                     key("\u10DC", moreKey("\u10FC")),
                     // U+10DB: "მ" GEORGIAN LETTER MAN
-                    key("\u10DB"))
+                    "\u10DB")
             .build();
 
     private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
@@ -154,26 +152,12 @@
                     key("O", moreKey("9")),
                     key("P", moreKey("0")))
             .setKeysOfRow(2,
-                    key("A"),
                     // U+10E8: "შ" GEORGIAN LETTER SHIN
-                    key("\u10E8"),
-                    key("D"),
-                    key("F"),
-                    key("G"),
-                    key("H"),
                     // U+10DF: "ჟ" GEORGIAN LETTER ZHAR
-                    key("\u10DF"),
-                    key("K"),
-                    key("L"))
+                    "A", "\u10E8", "D", "F", "G", "H", "\u10DF", "K", "L")
             .setKeysOfRow(3,
                     // U+10EB: "ძ" GEORGIAN LETTER JIL
-                    key("\u10EB"),
-                    key("X"),
                     // U+10E9: "ჩ" GEORGIAN LETTER CHIN
-                    key("\u10E9"),
-                    key("V"),
-                    key("B"),
-                    key("N"),
-                    key("M"))
+                    "\u10EB", "X", "\u10E9", "V", "B", "N", "M")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Greek.java b/tests/src/com/android/inputmethod/keyboard/layout/Greek.java
index 762170b..1a71fad 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Greek.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Greek.java
@@ -112,37 +112,28 @@
                     // U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS
                     key("\u03B1", moreKey("\u03AC")),
                     // U+03C3: "σ" GREEK SMALL LETTER SIGMA
-                    key("\u03C3"),
                     // U+03B4: "δ" GREEK SMALL LETTER DELTA
-                    key("\u03B4"),
                     // U+03C6: "φ" GREEK SMALL LETTER PHI
-                    key("\u03C6"),
                     // U+03B3: "γ" GREEK SMALL LETTER GAMMA
-                    key("\u03B3"),
+                    "\u03C3", "\u03B4", "\u03C6", "\u03B3",
                     // U+03B7: "η" GREEK SMALL LETTER ETA
                     // U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS
                     key("\u03B7", moreKey("\u03AE")),
                     // U+03BE: "ξ" GREEK SMALL LETTER XI
-                    key("\u03BE"),
                     // U+03BA: "κ" GREEK SMALL LETTER KAPPA
-                    key("\u03BA"),
                     // U+03BB: "λ" GREEK SMALL LETTER LAMDA
-                    key("\u03BB"))
+                    "\u03BE", "\u03BA", "\u03BB")
             .setKeysOfRow(3,
                     // U+03B6: "ζ" GREEK SMALL LETTER ZETA
-                    key("\u03B6"),
                     // U+03C7: "χ" GREEK SMALL LETTER CHI
-                    key("\u03C7"),
                     // U+03C8: "ψ" GREEK SMALL LETTER PSI
-                    key("\u03C8"),
+                    "\u03B6", "\u03C7", "\u03C8",
                     // U+03C9: "ω" GREEK SMALL LETTER OMEGA
                     // U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS
                     key("\u03C9", moreKey("\u03CE")),
                     // U+03B2: "β" GREEK SMALL LETTER BETA
-                    key("\u03B2"),
                     // U+03BD: "ν" GREEK SMALL LETTER NU
-                    key("\u03BD"),
                     // U+03BC: "μ" GREEK SMALL LETTER MU
-                    key("\u03BC"))
+                    "\u03B2", "\u03BD", "\u03BC")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
index a5befab..83446de 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
@@ -129,16 +129,14 @@
                     key("\u05E4", moreKey("0")))
             .setKeysOfRow(2,
                     // U+05E9: "ש" HEBREW LETTER SHIN
-                    key("\u05E9"),
                     // U+05D3: "ד" HEBREW LETTER DALET
-                    key("\u05D3"),
+                    "\u05E9", "\u05D3",
                     // U+05D2: "ג" HEBREW LETTER GIMEL
                     // U+05D2 U+05F3: "ג׳" HEBREW LETTER GIMEL + HEBREW PUNCTUATION GERESH
                     key("\u05D2", moreKey("\u05D2\u05F3")),
                     // U+05DB: "כ" HEBREW LETTER KAF
-                    key("\u05DB"),
                     // U+05E2: "ע" HEBREW LETTER AYIN
-                    key("\u05E2"),
+                    "\u05DB", "\u05E2",
                     // U+05D9: "י" HEBREW LETTER YOD
                     // U+05F2 U+05B7: "ײַ" HEBREW LIGATURE YIDDISH DOUBLE YOD + HEBREW POINT PATAH
                     key("\u05D9", moreKey("\u05F2\u05B7")),
@@ -146,25 +144,19 @@
                     // U+05D7 U+05F3: "ח׳" HEBREW LETTER HET + HEBREW PUNCTUATION GERESH
                     key("\u05D7", moreKey("\u05D7\u05F3")),
                     // U+05DC: "ל" HEBREW LETTER LAMED
-                    key("\u05DC"),
                     // U+05DA: "ך" HEBREW LETTER FINAL KAF
-                    key("\u05DA"),
                     // U+05E3: "ף" HEBREW LETTER FINAL PE
-                    key("\u05E3"))
+                    "\u05DC", "\u05DA", "\u05E3")
             .setKeysOfRow(3,
                     // U+05D6: "ז" HEBREW LETTER ZAYIN
                     // U+05D6 U+05F3: "ז׳" HEBREW LETTER ZAYIN + HEBREW PUNCTUATION GERESH
                     key("\u05D6", moreKey("\u05D6\u05F3")),
                     // U+05E1: "ס" HEBREW LETTER SAMEKH
-                    key("\u05E1"),
                     // U+05D1: "ב" HEBREW LETTER BET
-                    key("\u05D1"),
                     // U+05D4: "ה" HEBREW LETTER HE
-                    key("\u05D4"),
                     // U+05E0: "נ" HEBREW LETTER NUN
-                    key("\u05E0"),
                     // U+05DE: "מ" HEBREW LETTER MEM
-                    key("\u05DE"),
+                    "\u05E1", "\u05D1", "\u05D4", "\u05E0", "\u05DE",
                     // U+05E6: "צ" HEBREW LETTER TSADI
                     // U+05E6 U+05F3: "צ׳" HEBREW LETTER TSADI + HEBREW PUNCTUATION GERESH
                     key("\u05E6", moreKey("\u05E6\u05F3")),
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
index c1d1616..7ff2dcb 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
@@ -155,7 +155,7 @@
                     // U+0947/U+0902: "ें" DEVANAGARI VOWEL SIGN E/DEVANAGARI SIGN ANUSVARA
                     key("\u0947", moreKey("\u0947\u0902")),
                     // U+094D: "्" DEVANAGARI SIGN VIRAMA
-                    key("\u094D"),
+                    "\u094D",
                     // U+093F: "ि" DEVANAGARI VOWEL SIGN I
                     // U+093F/U+0902: "िं" DEVANAGARI VOWEL SIGN I/DEVANAGARI SIGN ANUSVARA
                     key("\u093F", moreKey("\u093F\u0902")),
@@ -164,7 +164,7 @@
                     // U+0941/U+0901: "ुँ" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN CANDRABINDU
                     key("\u0941", joinMoreKeys("\u0941\u0902", "\u0941\u0901")),
                     // U+092A: "प" DEVANAGARI LETTER PA
-                    key("\u092A"),
+                    "\u092A",
                     // U+0930: "र" DEVANAGARI LETTER RA
                     // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
                     // U+0930/U+093C: "ऱ" DEVANAGARI LETTER RA/DEVANAGARI SIGN NUKTA
@@ -178,14 +178,12 @@
                     //     "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
                     key("\u0924", moreKey("\u0924\u094D\u0930")),
                     // U+091A: "च" DEVANAGARI LETTER CA
-                    key("\u091A"),
                     // U+091F: "ट" DEVANAGARI LETTER TTA
-                    key("\u091F"))
+                    "\u091A","\u091F")
             .setKeysOfRow(3,
                     // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
-                    key("\u0949"),
                     // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
-                    key("\u0902"),
+                    "\u0949", "\u0902",
                     // U+092E: "म" DEVANAGARI LETTER MA
                     // U+0950: "ॐ" DEVANAGARI OM
                     key("\u092E", moreKey("\u0950")),
@@ -195,13 +193,13 @@
                     // U+0928/U+093C: "ऩ" DEVANAGARI LETTER NA/DEVANAGARI SIGN NUKTA
                     key("\u0928", joinMoreKeys("\u091E", "\u0919", "\u0928\u093C")),
                     // U+0935: "व" DEVANAGARI LETTER VA
-                    key("\u0935"),
+                    "\u0935",
                     // U+0932: "ल" DEVANAGARI LETTER LA
                     // U+090C: "ऌ" DEVANAGARI LETTER VOCALIC L
                     // U+0961: "ॡ" DEVANAGARI LETTER VOCALIC LL
                     key("\u0932", joinMoreKeys("\u090C", "\u0961")),
                     // U+0938: "स" DEVANAGARI LETTER SA
-                    key("\u0938"),
+                    "\u0938",
                     // U+092F: "य" DEVANAGARI LETTER YA
                     // U+095F: "य़" DEVANAGARI LETTER YYA
                     key("\u092F", moreKey("\u095F")),
@@ -232,11 +230,9 @@
                     // U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU
                     key("\u090A", joinMoreKeys("\u090A\u0902", "\u090A\u0901")),
                     // U+092D: "भ" DEVANAGARI LETTER BHA
-                    key("\u092D"),
                     // U+0903: "ः" DEVANAGARI SIGN VISARGA
-                    key("\u0903"),
                     // U+0918: "घ" DEVANAGARI LETTER GHA
-                    key("\u0918"),
+                    "\u092D", "\u0903", "\u0918",
                     // U+0927: "ध" DEVANAGARI LETTER DHA
                     // U+0915/U+094D/U+0937:
                     //     "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
@@ -244,9 +240,8 @@
                     //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
                     key("\u0927", joinMoreKeys("\u0915\u094D\u0937", "\u0936\u094D\u0930")),
                     // U+091D: "झ" DEVANAGARI LETTER JHA
-                    key("\u091D"),
                     // U+0922: "ढ" DEVANAGARI LETTER DDHA
-                    key("\u0922"))
+                    "\u091D", "\u0922")
             .setKeysOfRow(2,
                     // U+0913: "ओ" DEVANAGARI LETTER O
                     // U+0913/U+0902: "ओं" DEVANAGARI LETTER O/DEVANAGARI SIGN ANUSVARA
@@ -282,33 +277,29 @@
                     // U+0916/U+093C: "ख़" DEVANAGARI LETTER KHA/DEVANAGARI SIGN NUKTA
                     key("\u0916", moreKey("\u0916\u093C")),
                     // U+0925: "थ" DEVANAGARI LETTER THA
-                    key("\u0925"),
                     // U+091B: "छ" DEVANAGARI LETTER CHA
-                    key("\u091B"),
                     // U+0920: "ठ" DEVANAGARI LETTER TTHA
-                    key("\u0920"))
+                    "\u0925", "\u091B", "\u0920")
             .setKeysOfRow(3,
                     // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
-                    key("\u0911"),
+                    "\u0911",
                     // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
                     // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
                     key("\u0901", moreKey("\u0945")),
                     // U+0923: "ण" DEVANAGARI LETTER NNA
-                    key("\u0923"),
                     // U+0929: "ऩ" DEVANAGARI LETTER NNNA
-                    key("\u0929"),
+                    "\u0923", "\u0929",
                     // U+0933: "ळ" DEVANAGARI LETTER LLA
                     // U+0934: "ऴ" DEVANAGARI LETTER LLLA
                     key("\u0933", moreKey("\u0934")),
                     // U+0936: "श" DEVANAGARI LETTER SHA
-                    key("\u0936"),
                     // U+0937: "ष" DEVANAGARI LETTER SSA
-                    key("\u0937"),
+                    "\u0936", "\u0937",
                     // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
                     // U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR
                     key("\u0943", moreKey("\u0944")),
                     // U+091E: "ञ" DEVANAGARI LETTER NYA
-                    key("\u091E"))
+                    "\u091E")
             .build();
 
     static class HindiSymbols extends Symbols {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
index 61ade8b..e7f6a65 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
@@ -66,7 +66,7 @@
             return ALPHABET_COMMON;
         }
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
-        builder.addKeysOnTheRightOfRow(4, EXCLAMATION_AND_QUESTION_MARKS);
+        builder.addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
         return builder.build();
     }
 
@@ -84,11 +84,9 @@
     ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
             final boolean isPhone) {
         final LayoutCustomizer customizer = getCustomizer();
-        final ExpectedKey[] spacebar = joinKeys(
-                customizer.getKeysLeftToSpacebar(isPhone),
-                customizer.getSpaceKeys(isPhone),
-                customizer.getKeysRightToSpacebar(isPhone));
-        builder.setKeysOfRow(5, spacebar);
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
         if (isPhone) {
             builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
@@ -99,8 +97,8 @@
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
-        builder.addKeysOnTheLeftOfRow(4, customizer.getLeftShiftKeys(isPhone))
-                .addKeysOnTheRightOfRow(4, customizer.getRightShiftKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
         return builder;
     }
 
@@ -144,27 +142,18 @@
                     key("\u17B2", moreKey("\u17B1")))
             .setKeysOfRow(2,
                     // U+1786: "ឆ" KHMER LETTER CHA
-                    key("\u1786"),
                     // U+17B9: "ឹ" KHMER VOWEL SIGN Y
-                    key("\u17B9"),
                     // U+17C1: "េ" KHMER VOWEL SIGN E
-                    key("\u17C1"),
                     // U+179A: "រ" KHMER LETTER RO
-                    key("\u179A"),
                     // U+178F: "ត" KHMER LETTER TA
-                    key("\u178F"),
                     // U+1799: "យ" KHMER LETTER YO
-                    key("\u1799"),
                     // U+17BB: "ុ" KHMER VOWEL SIGN U
-                    key("\u17BB"),
                     // U+17B7: "ិ" KHMER VOWEL SIGN I
-                    key("\u17B7"),
                     // U+17C4: "ោ" KHMER VOWEL SIGN OO
-                    key("\u17C4"),
                     // U+1795: "ផ" KHMER LETTER PHA
-                    key("\u1795"),
                     // U+17C0: "ៀ" KHMER VOWEL SIGN IE
-                    key("\u17C0"),
+                    "\u1786", "\u17B9", "\u17C1", "\u179A", "\u178F", "\u1799", "\u17BB", "\u17B7",
+                    "\u17C4", "\u1795", "\u17C0",
                     // U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV
                     // U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU
                     // U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
@@ -174,32 +163,23 @@
                     key("\u17AA", joinMoreKeys("\u17A7", "\u17B1", "\u17B3", "\u17A9", "\u17A8")))
             .setKeysOfRow(3,
                     // U+17B6: "ា" KHMER VOWEL SIGN AA
-                    key("\u17B6"),
                     // U+179F: "ស" KHMER LETTER SA
-                    key("\u179F"),
                     // U+178A: "ដ" KHMER LETTER DA
-                    key("\u178A"),
                     // U+1790: "ថ" KHMER LETTER THA
-                    key("\u1790"),
                     // U+1784: "ង" KHMER LETTER NGO
-                    key("\u1784"),
                     // U+17A0: "ហ" KHMER LETTER HA
-                    key("\u17A0"),
                     // U+17D2: "្" KHMER SIGN COENG
-                    key("\u17D2"),
                     // U+1780: "ក" KHMER LETTER KA
-                    key("\u1780"),
                     // U+179B: "ល" KHMER LETTER LO
-                    key("\u179B"),
                     // U+17BE: "ើ" KHMER VOWEL SIGN OE
-                    key("\u17BE"),
                     // U+17CB: "់" KHMER SIGN BANTOC
-                    key("\u17CB"),
+                    "\u17B6", "\u179F", "\u178A", "\u1790", "\u1784", "\u17A0", "\u17D2", "\u1780",
+                    "\u179B", "\u17BE", "\u17CB",
                     // U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY
                     // U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY
                     // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
                     key("\u17AE", joinMoreKeys("\u17AD", "\u17B0")))
-            .setLabelsOfRow(4,
+            .setKeysOfRow(4,
                     // U+178B: "ឋ" KHMER LETTER TTHA
                     // U+1781: "ខ" KHMER LETTER KHA
                     // U+1785: "ច" KHMER LETTER CA
@@ -241,7 +221,7 @@
                     // U+00D7: "×" MULTIPLICATION SIGN
                     key("\u17CC", moreKey("\u00D7")),
                     // U+17CE: "៎" KHMER SIGN KAKABAT
-                    key("\u17CE"))
+                    "\u17CE")
             .setKeysOfRow(2,
                     // U+1788: "ឈ" KHMER LETTER CHO
                     // U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA
@@ -250,73 +230,52 @@
                     // U+17DD: "៝" KHMER SIGN ATTHACAN
                     key("\u17BA", moreKey("\u17DD")),
                     // U+17C2: "ែ" KHMER VOWEL SIGN AE
-                    key("\u17C2"),
+                    "\u17C2",
                     // U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY
                     // U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY
                     key("\u17AC", moreKey("\u17AB")),
                     // U+1791: "ទ" KHMER LETTER TO
-                    key("\u1791"),
                     // U+17BD: "ួ" KHMER VOWEL SIGN UA
-                    key("\u17BD"),
                     // U+17BC: "ូ" KHMER VOWEL SIGN UU
-                    key("\u17BC"),
                     // U+17B8: "ី" KHMER VOWEL SIGN II
-                    key("\u17B8"),
                     // U+17C5: "ៅ" KHMER VOWEL SIGN AU
-                    key("\u17C5"),
                     // U+1797: "ភ" KHMER LETTER PHO
-                    key("\u1797"),
                     // U+17BF: "ឿ" KHMER VOWEL SIGN YA
-                    key("\u17BF"),
                     // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
-                    key("\u17B0"))
+                    "\u1791", "\u17BD", "\u17BC", "\u17B8", "\u17C5", "\u1797", "\u17BF", "\u17B0")
             .setKeysOfRow(3,
                     // U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT
-                    key("\u17B6\u17C6"),
                     // U+17C3: "ៃ" KHMER VOWEL SIGN AI
-                    key("\u17C3"),
                     // U+178C: "ឌ" KHMER LETTER DO
-                    key("\u178C"),
                     // U+1792: "ធ" KHMER LETTER THO
-                    key("\u1792"),
                     // U+17A2: "អ" KHMER LETTER QAE
-                    key("\u17A2"),
+                    "\u17B6\u17C6", "\u17C3", "\u178C", "\u1792", "\u17A2",
                     // U+17C7: "ះ" KHMER SIGN REAHMUK
                     // U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU
                     key("\u17C7", moreKey("\u17C8")),
                     // U+1789: "ញ" KHMER LETTER NYO
-                    key("\u1789"),
+                    "\u1789",
                     // U+1782: "គ" KHMER LETTER KO
                     // U+179D: "ឝ" KHMER LETTER SHA
                     key("\u1782", moreKey("\u179D")),
                     // U+17A1: "ឡ" KHMER LETTER LA
-                    key("\u17A1"),
                     // U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK
-                    key("\u17C4\u17C7"),
                     // U+17C9: "៉" KHMER SIGN MUUSIKATOAN
-                    key("\u17C9"),
                     // U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE
-                    key("\u17AF"))
+                    "\u17A1", "\u17C4\u17C7", "\u17C9", "\u17AF")
             .setKeysOfRow(4,
                     // U+178D: "ឍ" KHMER LETTER TTHO
-                    key("\u178D"),
                     // U+1783: "ឃ" KHMER LETTER KHO
-                    key("\u1783"),
                     // U+1787: "ជ" KHMER LETTER CO
-                    key("\u1787"),
                     // U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK
-                    key("\u17C1\u17C7"),
+                    "\u178D", "\u1783", "\u1787", "\u17C1\u17C7",
                     // U+1796: "ព" KHMER LETTER PO
                     // U+179E: "ឞ" KHMER LETTER SSO
                     key("\u1796", moreKey("\u179E")),
                     // U+178E: "ណ" KHMER LETTER NNO
-                    key("\u178E"),
                     // U+17C6: "ំ" KHMER SIGN NIKAHIT
-                    key("\u17C6"),
                     // U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK
-                    key("\u17BB\u17C7"),
                     // U+17D5: "៕" KHMER SIGN BARIYOOSAN
-                    key("\u17D5"),
-                    key("?"))
+                    "\u178E", "\u17C6", "\u17BB\u17C7", "\u17D5", "?")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Lao.java b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
index 4889055..6f2ef21 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
@@ -70,7 +70,7 @@
             return ALPHABET_COMMON;
         }
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
-        builder.addKeysOnTheRightOfRow(4, EXCLAMATION_AND_QUESTION_MARKS);
+        builder.addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
         return builder.build();
     }
 
@@ -88,11 +88,9 @@
     ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
             final boolean isPhone) {
         final LayoutCustomizer customizer = getCustomizer();
-        final ExpectedKey[] spacebar = joinKeys(
-                customizer.getKeysLeftToSpacebar(isPhone),
-                customizer.getSpaceKeys(isPhone),
-                customizer.getKeysRightToSpacebar(isPhone));
-        builder.setKeysOfRow(5, spacebar);
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
         if (isPhone) {
             builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
@@ -103,8 +101,8 @@
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
-        builder.addKeysOnTheLeftOfRow(4, customizer.getLeftShiftKeys(isPhone))
-                .addKeysOnTheRightOfRow(4, customizer.getRightShiftKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
         return builder;
     }
 
@@ -123,9 +121,8 @@
                     // U+0ED4: "໔" LAO DIGIT FOUR
                     key("\u0E96", joinMoreKeys("4", "\u0ED4")),
                     // U+0EB8: "ຸ" LAO VOWEL SIGN U
-                    key("\u0EB8"),
                     // U+0EB9: "ູ" LAO VOWEL SIGN UU
-                    key("\u0EB9"),
+                    "\u0EB8", "\u0EB9",
                     // U+0E84: "ຄ" LAO LETTER KHO TAM
                     // U+0ED5: "໕" LAO DIGIT FIVE
                     key("\u0E84", joinMoreKeys("5", "\u0ED5")),
@@ -142,34 +139,26 @@
                     // U+0ED9: "໙" LAO DIGIT NINE
                     key("\u0E8A", joinMoreKeys("9", "\u0ED9")),
                     // U+0ECD: "ໍ" LAO NIGGAHITA
-                    key("\u0ECD"))
+                    "\u0ECD")
             .setKeysOfRow(2,
                     // U+0EBB: "ົ" LAO VOWEL SIGN MAI KON
-                    key("\u0EBB"),
+                    "\u0EBB",
                     // U+0EC4: "ໄ" LAO VOWEL SIGN AI
                     // U+0ED0: "໐" LAO DIGIT ZERO
                     key("\u0EC4", joinMoreKeys("0", "\u0ED0")),
                     // U+0EB3: "ຳ" LAO VOWEL SIGN AM
-                    key("\u0EB3"),
                     // U+0E9E: "ພ" LAO LETTER PHO TAM
-                    key("\u0E9E"),
                     // U+0EB0: "ະ" LAO VOWEL SIGN A
-                    key("\u0EB0"),
                     // U+0EB4: "ິ" LAO VOWEL SIGN I
-                    key("\u0EB4"),
                     // U+0EB5: "ີ" LAO VOWEL SIGN II
-                    key("\u0EB5"),
                     // U+0EAE: "ຮ" LAO LETTER HO TAM
-                    key("\u0EAE"),
                     // U+0E99: "ນ" LAO LETTER NO
-                    key("\u0E99"),
                     // U+0E8D: "ຍ" LAO LETTER NYO
-                    key("\u0E8D"),
                     // U+0E9A: "ບ" LAO LETTER BO
-                    key("\u0E9A"),
                     // U+0EA5: "ລ" LAO LETTER LO LOOT
-                    key("\u0EA5"))
-            .setLabelsOfRow(3,
+                    "\u0EB3", "\u0E9E", "\u0EB0", "\u0EB4", "\u0EB5", "\u0EAE", "\u0E99", "\u0E8D",
+                    "\u0E9A", "\u0EA5")
+            .setKeysOfRow(3,
                     // U+0EB1: "ັ" LAO VOWEL SIGN MAI KAN
                     // U+0EAB: "ຫ" LAO LETTER HO SUNG
                     // U+0E81: "ກ" LAO LETTER KO
@@ -184,7 +173,7 @@
                     // U+201C: "“" LEFT DOUBLE QUOTATION MARK
                     "\u0EB1", "\u0EAB", "\u0E81", "\u0E94", "\u0EC0", "\u0EC9", "\u0EC8", "\u0EB2",
                     "\u0EAA", "\u0EA7", "\u0E87", "\u201C")
-            .setLabelsOfRow(4,
+            .setKeysOfRow(4,
                     // U+0E9C: "ຜ" LAO LETTER PHO SUNG
                     // U+0E9B: "ປ" LAO LETTER PO
                     // U+0EC1: "ແ" LAO VOWEL SIGN EI
@@ -200,7 +189,7 @@
             .build();
 
     private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
-            .setLabelsOfRow(1,
+            .setKeysOfRow(1,
                     // U+0ED1: "໑" LAO DIGIT ONE
                     // U+0ED2: "໒" LAO DIGIT TWO
                     // U+0ED3: "໓" LAO DIGIT THREE
@@ -215,7 +204,7 @@
                     // U+0ECD/U+0EC8: "ໍ່" LAO NIGGAHITA/LAO TONE MAI EK
                     "\u0ED1", "\u0ED2", "\u0ED3", "\u0ED4", "\u0ECC", "\u0EBC", "\u0ED5", "\u0ED6",
                     "\u0ED7", "\u0ED8", "\u0ED9", "\u0ECD\u0EC8")
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
                     // U+0EBB/U+0EC9: "" LAO VOWEL SIGN MAI KON/LAO TONE MAI THO
                     // U+0ED0: "໐" LAO DIGIT ZERO
                     // U+0EB3/U+0EC9: "ຳ້" LAO VOWEL SIGN AM/LAO TONE MAI THO
@@ -228,14 +217,14 @@
                     // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
                     "\u0EBB\u0EC9", "\u0ED0", "\u0EB3\u0EC9", "_", "+", "\u0EB4\u0EC9",
                     "\u0EB5\u0EC9", "\u0EA3", "\u0EDC", "\u0EBD", "\u0EAB\u0EBC", "\u201D")
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
                     // U+0EB1/U+0EC9: "ັ້" LAO VOWEL SIGN MAI KAN/LAO TONE MAI THO
                     // U+0ECA: "໊" LAO TONE MAI TI
                     // U+0ECB: "໋" LAO TONE MAI CATAWA
                     // U+201C: "“" LEFT DOUBLE QUOTATION MARK
                     "\u0EB1\u0EC9", ";", ".", ",", ":", "\u0ECA", "\u0ECB", "!", "?", "%", "=",
                     "\u201C")
-            .setLabelsOfRow(4,
+            .setKeysOfRow(4,
                     // U+20AD: "₭" KIP SIGN
                     // U+0EAF: "ຯ" LAO ELLIPSIS
                     // U+0EB6/U+0EC9: "ຶ້" LAO VOWEL SIGN Y/LAO TONE MAI THO
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index 982777b..256a0d1 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -161,7 +161,7 @@
          * @return the array of {@link ExpectedKey} that should be placed at left of the spacebar.
          */
         public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
-            return isPhone ? joinKeys(key(",", SETTINGS_KEY)) : joinKeys(key("/"));
+            return isPhone ? joinKeys(key(",", SETTINGS_KEY)) : joinKeys("/");
         }
 
         /**
@@ -171,7 +171,7 @@
          */
         public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
             final ExpectedKey periodKey = key(".", getPunctuationMoreKeys(isPhone));
-            return isPhone ? joinKeys(periodKey) : joinKeys(key(","), periodKey);
+            return isPhone ? joinKeys(periodKey) : joinKeys(",", periodKey);
         }
 
         /**
@@ -288,11 +288,9 @@
     ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
             final boolean isPhone) {
         final LayoutCustomizer customizer = getCustomizer();
-        final ExpectedKey[] spacebar = joinKeys(
-                customizer.getKeysLeftToSpacebar(isPhone),
-                customizer.getSpaceKeys(isPhone),
-                customizer.getKeysRightToSpacebar(isPhone));
-        builder.setKeysOfRow(4, spacebar);
+        builder.setKeysOfRow(4, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(4, (Object[])customizer.getKeysRightToSpacebar(isPhone));
         if (isPhone) {
             builder.addKeysOnTheRightOfRow(3, DELETE_KEY)
                     .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey())
@@ -302,10 +300,9 @@
                     .addKeysOnTheRightOfRow(2, ENTER_KEY)
                     .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey(), SETTINGS_KEY)
                     .addKeysOnTheRightOfRow(4, EMOJI_KEY);
-
         }
-        builder.addKeysOnTheLeftOfRow(3, customizer.getLeftShiftKeys(isPhone))
-            .addKeysOnTheRightOfRow(3, customizer.getRightShiftKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(3, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(3, (Object[])customizer.getRightShiftKeys(isPhone));
         return builder;
     }
 
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java b/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java
index 3c9f4a0..3c6c058 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java
@@ -77,37 +77,33 @@
                     // U+0437: "з" CYRILLIC SMALL LETTER ZE
                     key("\u0437", moreKey("0")),
                     // U+043A: "к" CYRILLIC SMALL LETTER KA
-                    key("\u043A"))
-            // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
-            // U+044B: "ы" CYRILLIC SMALL LETTER YERU
-            // U+0431: "б" CYRILLIC SMALL LETTER BE
-            // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
-            // U+0430: "а" CYRILLIC SMALL LETTER A
-            // U+0445: "х" CYRILLIC SMALL LETTER HA
-            // U+0440: "р" CYRILLIC SMALL LETTER ER
-            // U+043E: "о" CYRILLIC SMALL LETTER O
-            // U+043B: "л" CYRILLIC SMALL LETTER EL
-            // U+0434: "д" CYRILLIC SMALL LETTER DE
-            // U+043F: "п" CYRILLIC SMALL LETTER PE
-            .setLabelsOfRow(2,
+                    "\u043A")
+            .setKeysOfRow(2,
+                    // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
                     "\u0439", "\u044B", "\u0431", "\u04E9", "\u0430", "\u0445", "\u0440", "\u043E",
                     "\u043B", "\u0434", "\u043F")
             .setKeysOfRow(3,
                     // U+044F: "я" CYRILLIC SMALL LETTER YA
-                    key("\u044F"),
                     // U+0447: "ч" CYRILLIC SMALL LETTER CHE
-                    key("\u0447"),
+                    "\u044F", "\u0447",
                     // U+0451: "ё" CYRILLIC SMALL LETTER IO
                     // U+0435: "е" CYRILLIC SMALL LETTER IE
                     key("\u0451", moreKey("\u0435")),
                     // U+0441: "с" CYRILLIC SMALL LETTER ES
-                    key("\u0441"),
                     // U+043C: "м" CYRILLIC SMALL LETTER EM
-                    key("\u043C"),
                     // U+0438: "и" CYRILLIC SMALL LETTER I
-                    key("\u0438"),
                     // U+0442: "т" CYRILLIC SMALL LETTER TE
-                    key("\u0442"),
+                    "\u0441", "\u043C", "\u0438", "\u0442",
                     // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
                     // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
                     key("\u044C", moreKey("\u044A")),
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
index c0bc29f..7cfe344 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
@@ -99,77 +99,76 @@
                     // U+0966: "०" DEVANAGARI DIGIT ZERO
                     key("\u092A", joinMoreKeys("\u0966", "0")),
                     // U+0907: "इ" DEVANAGARI LETTER I
-                    key("\u0907"))
-            // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
-            // U+0938: "स" DEVANAGARI LETTER SA
-            // U+0926: "द" DEVANAGARI LETTER DA
-            // U+0909: "उ" DEVANAGARI LETTER U
-            // U+0917: "ग" DEVANAGARI LETTER GA
-            // U+0939: "ह" DEVANAGARI LETTER HA
-            // U+091C: "ज" DEVANAGARI LETTER JA
-            // U+0915: "क" DEVANAGARI LETTER KA
-            // U+0932: "ल" DEVANAGARI LETTER LA
-            // U+090F: "ए" DEVANAGARI LETTER E
-            // U+0950: "ॐ" DEVANAGARI OM
-            .setLabelsOfRow(2,
+                    "\u0907")
+            .setKeysOfRow(2,
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    // U+090F: "ए" DEVANAGARI LETTER E
+                    // U+0950: "ॐ" DEVANAGARI OM
                     "\u093E", "\u0938", "\u0926", "\u0909", "\u0917", "\u0939", "\u091C", "\u0915",
                     "\u0932", "\u090F", "\u0950")
-            // U+0937: "ष" DEVANAGARI LETTER SSA
-            // U+0921: "ड" DEVANAGARI LETTER DDA
-            // U+091A: "च" DEVANAGARI LETTER CA
-            // U+0935: "व" DEVANAGARI LETTER VA
-            // U+092C: "ब" DEVANAGARI LETTER BHA
-            // U+0928: "न" DEVANAGARI LETTER NA
-            // U+092E: "म" DEVANAGARI LETTER MA
-            // U+0964: "।" DEVANAGARI DANDA
-            // U+094D: "्" DEVANAGARI SIGN VIRAMA
-            .setLabelsOfRow(3,
-                    "\u0937", "\u0921", "\u091A", "\u0935", "\u092C", "\u0928", "\u092E", "\u0964",
+            .setKeysOfRow(3,
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    // U+092C: "ब" DEVANAGARI LETTER BHA
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    "\u0937", "\u0921", "\u091A", "\u0935", "\u092C", "\u0928", "\u092E",
+                    // U+0964: "।" DEVANAGARI DANDA
+                    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+                    key("\u0964", moreKey("\u093D")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
                     "\u094D")
-            // U+0964: "।" DEVANAGARI DANDA
-            // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
-            .setMoreKeysOf("\u0964", "\u093D")
             .build();
 
     private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
-            // U+0920: "ठ" DEVANAGARI LETTER TTHA
-            // U+0914: "औ" DEVANAGARI LETTER AU
-            // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
-            // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
-            // U+0925: "थ" DEVANAGARI LETTER THA
-            // U+091E: "ञ" DEVANAGARI LETTER NYA
-            // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
-            // U+0940: "ी" DEVANAGARI VOWEL SIGN II
-            // U+0913: "ओ" DEVANAGARI LETTER O
-            // U+092B: "फ" DEVANAGARI LETTER PHA
-            // U+0908: "ई" DEVANAGARI LETTER II
-            .setLabelsOfRow(1,
+            .setKeysOfRow(1,
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    // U+0908: "ई" DEVANAGARI LETTER II
                     "\u0920", "\u0914", "\u0948", "\u0943", "\u0925", "\u091E", "\u0942", "\u0940",
                     "\u0913", "\u092B", "\u0908")
-            // U+0906: "आ" DEVANAGARI LETTER AA
-            // U+0936: "श" DEVANAGARI LETTER SHA
-            // U+0927: "ध" DEVANAGARI LETTER DHA
-            // U+090A: "ऊ" DEVANAGARI LETTER UU
-            // U+0918: "घ" DEVANAGARI LETTER GHA
-            // U+0905: "अ" DEVANAGARI LETTER A
-            // U+091D: "झ" DEVANAGARI LETTER JHA
-            // U+0916: "ख" DEVANAGARI LETTER KHA
-            // U+0965: "॥" DEVANAGARI DOUBLE DANDA
-            // U+0910: "ऐ" DEVANAGARI LETTER AI
-            // U+0903: "ः" DEVANAGARI SIGN VISARGA
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    // U+0965: "॥" DEVANAGARI DOUBLE DANDA
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0903: "ः" DEVANAGARI SIGN VISARGA
                     "\u0906", "\u0936", "\u0927", "\u090A", "\u0918", "\u0905", "\u091D", "\u0916",
                     "\u0965", "\u0910", "\u0903")
-            // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
-            // U+0922: "ढ" DEVANAGARI LETTER DDHA
-            // U+091B: "छ" DEVANAGARI LETTER CHA
-            // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
-            // U+092D: "भ" DEVANAGARI LETTER BHA
-            // U+0923: "ण" DEVANAGARI LETTER NNA
-            // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
-            // U+0919: "ङ" DEVANAGARI LETTER NGA
-            // U+094D: "्" DEVANAGARI SIGN VIRAMA
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
                     "\u090B", "\u0922", "\u091B", "\u0901", "\u092D", "\u0923", "\u0902", "\u0919",
                     "\u094D")
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
index 658dec0..1599fd7 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
@@ -63,7 +63,7 @@
                     // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
                     key("\u0947", joinMoreKeys("\u0903", "\u093D")),
                     // U+0964: "।" DEVANAGARI DANDA
-                    key("\u0964"),
+                    "\u0964",
                     // U+0930: "र" DEVANAGARI LETTER RA
                     // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
                     key("\u0930", moreKey("\u0930\u0941")));
@@ -73,9 +73,8 @@
                     // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
                     key("\u0903", moreKey("\u093D")),
                     // U+0947: "े" DEVANAGARI VOWEL SIGN E
-                    key("\u0947"),
                     // U+0964: "।" DEVANAGARI DANDA
-                    key("\u0964"),
+                    "\u0947", "\u0964",
                     // U+0930: "र" DEVANAGARI LETTER RA
                     key("\u0930", moreKey("!")),
                     // U+094D: "्" DEVANAGARI SIGN VIRAMA
@@ -94,9 +93,8 @@
         if (isPhone) {
             builder.addKeysOnTheRightOfRow(3,
                     // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
-                    key("\u0902"),
                     // U+0919: "ङ" DEVANAGARI LETTER NGA
-                    key("\u0919"),
+                    "\u0902", "\u0919",
                     // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
                     // U+0936/U+094D/U+0930:
                     //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
@@ -104,16 +102,15 @@
         } else {
             builder.addKeysOnTheRightOfRow(3,
                     // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
-                    key("\u0902"),
                     // U+0919: "ङ" DEVANAGARI LETTER NGA
-                    key("\u0919"),
+                    "\u0902", "\u0919",
                     // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
                     // U+0936/U+094D/U+0930:
                     //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
                     key("\u0948", moreKey("\u0936\u094D\u0930")),
                     // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
                     key("\u0930\u0941", moreKey("!")),
-                    key("?"));
+                    "?");
         }
         return builder.build();
     }
@@ -153,27 +150,28 @@
                     // U+0907: "इ" DEVANAGARI LETTER I
                     // U+0914: "औ" DEVANAGARI LETTER AU
                     key("\u0907", moreKey("\u0914")))
-            // U+092C: "ब" DEVANAGARI LETTER BA
-            // U+0915: "क" DEVANAGARI LETTER KA
-            // U+092E: "म" DEVANAGARI LETTER MA
-            // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
-            // U+0928: "न" DEVANAGARI LETTER NA
-            // U+091C: "ज" DEVANAGARI LETTER JA
-            // U+0935: "व" DEVANAGARI LETTER VA
-            // U+092A: "प" DEVANAGARI LETTER PA
-            // U+093F: "ि" DEVANAGARI VOWEL SIGN I
-            // U+0938: "स" DEVANAGARI LETTER SA
-            // U+0941: "ु" DEVANAGARI VOWEL SIGN U
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
                     "\u092C", "\u0915", "\u092E", "\u093E", "\u0928", "\u091C", "\u0935", "\u092A",
                     "\u093F", "\u0938", "\u0941")
-            // U+0936: "श" DEVANAGARI LETTER SHA
-            // U+0939: "ह" DEVANAGARI LETTER HA
-            // U+0905: "अ" DEVANAGARI LETTER A
-            // U+0916: "ख" DEVANAGARI LETTER KHA
-            // U+0926: "द" DEVANAGARI LETTER DA
-            // U+0932: "ल" DEVANAGARI LETTER LA
-            .setLabelsOfRow(3, "\u0936", "\u0939", "\u0905", "\u0916", "\u0926", "\u0932")
+            .setKeysOfRow(3,
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    "\u0936", "\u0939", "\u0905", "\u0916", "\u0926", "\u0932")
             .build();
 
     private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
@@ -222,32 +220,32 @@
                     // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
                     // U+0913: "ओ" DEVANAGARI LETTER O
                     key("\u0943", moreKey("\u0913")))
-            // U+0906: "आ" DEVANAGARI LETTER AA
-            // U+0919/U+094D: "ङ्" DEVANAGARI LETTER NGA/DEVANAGARI SIGN VIRAMA
-            // U+0921/U+094D/U+0921:
-            //     "ड्ड" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDA
-            // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
-            // U+0926/U+094D/U+0926:
-            //     "द्द" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DA
-            // U+091D: "झ" DEVANAGARI LETTER JHA
-            // U+094B: "ो" DEVANAGARI VOWEL SIGN O
-            // U+092B: "फ" DEVANAGARI LETTER PHA
-            // U+0940: "ी" DEVANAGARI VOWEL SIGN II
-            // U+091F/U+094D/U+0920:
-            //     "ट्ठ" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA
-            // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
-            .setLabelsOfRow(2,
+            .setKeysOfRow(2,
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0919/U+094D: "ङ्" DEVANAGARI LETTER NGA/DEVANAGARI SIGN VIRAMA
+                    // U+0921/U+094D/U+0921:
+                    //     "ड्ड" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDA
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    // U+0926/U+094D/U+0926:
+                    //     "द्द" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DA
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+091F/U+094D/U+0920:
+                    //     "ट्ठ" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
                     "\u0906", "\u0919\u094D", "\u0921\u094D\u0921", "\u0901", "\u0926\u094D\u0926",
                     "\u091D", "\u094B", "\u092B", "\u0940", "\u091F\u094D\u0920", "\u0942")
-            // U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA
-            // U+0939/U+094D/U+092E:
-            //     "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA
-            // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
-            // U+0950: "ॐ" DEVANAGARI OM
-            // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
-            // U+0926/U+094D/U+092F:
-            //     "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
+                    // U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA
+                    // U+0939/U+094D/U+092E:
+                    //     "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0950: "ॐ" DEVANAGARI OM
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+0926/U+094D/U+092F:
+                    //     "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA
                     "\u0915\u094D", "\u0939\u094D\u092E", "\u090B", "\u0950", "\u094C",
                     "\u0926\u094D\u092F")
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java b/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java
index a535ad2..cee7eee 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java
@@ -51,8 +51,8 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")),
-                    key(ROW1_11))
-            .setLabelsOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
-            .setLabelsOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+                    ROW1_11)
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java
index a0da7e3..7ede74c 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java
@@ -47,7 +47,7 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")))
-            .setLabelsOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
-            .setLabelsOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java b/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java
index 25f4734..6fce3f6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java
@@ -44,7 +44,7 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")))
-            .setLabelsOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
-            .setLabelsOfRow(3, "y", "x", "c", "v", "b", "n", "m")
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
+            .setKeysOfRow(3, "y", "x", "c", "v", "b", "n", "m")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java b/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java
index ad226dd..4f8911b 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java
@@ -82,28 +82,28 @@
                     // U+043F: "п" CYRILLIC SMALL LETTER PE
                     key("\u043F", moreKey("0")),
                     // U+0448: "ш" CYRILLIC SMALL LETTER SHA
-                    key("\u0448"))
-            // U+0430: "а" CYRILLIC SMALL LETTER A
-            // U+0441: "с" CYRILLIC SMALL LETTER ES
-            // U+0434: "д" CYRILLIC SMALL LETTER DE
-            // U+0444: "ф" CYRILLIC SMALL LETTER EF
-            // U+0433: "г" CYRILLIC SMALL LETTER GHE
-            // U+0445: "х" CYRILLIC SMALL LETTER HA
-            // U+0458: "ј" CYRILLIC SMALL LETTER JE
-            // U+043A: "к" CYRILLIC SMALL LETTER KA
-            // U+043B: "л" CYRILLIC SMALL LETTER EL
-            // U+0447: "ч" CYRILLIC SMALL LETTER CHE
-            .setLabelsOfRow(2,
+                    "\u0448")
+            .setKeysOfRow(2,
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+0458: "ј" CYRILLIC SMALL LETTER JE
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
                     "\u0430", "\u0441", "\u0434", "\u0444", "\u0433", "\u0445", "\u0458", "\u043A",
                     "\u043B", "\u0447", ROW2_11)
-            // U+045F: "џ" CYRILLIC SMALL LETTER DZHE
-            // U+0446: "ц" CYRILLIC SMALL LETTER TSE
-            // U+0432: "в" CYRILLIC SMALL LETTER VE
-            // U+0431: "б" CYRILLIC SMALL LETTER BE
-            // U+043D: "н" CYRILLIC SMALL LETTER EN
-            // U+043C: "м" CYRILLIC SMALL LETTER EM
-            // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
-            .setLabelsOfRow(3,
+            .setKeysOfRow(3,
+                    // U+045F: "џ" CYRILLIC SMALL LETTER DZHE
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
                     ROW3_1, "\u045F", "\u0446", "\u0432", "\u0431", "\u043D", "\u043C", ROW3_8,
                     "\u0436")
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java b/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java
index 5ccc364..9e65560 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java
@@ -46,7 +46,7 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")))
-            .setLabelsOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10)
-            .setLabelsOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10)
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java b/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java
index 5bc45d4..c6562e2 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java
@@ -48,8 +48,8 @@
                     key("i", moreKey("8")),
                     key("o", moreKey("9")),
                     key("p", moreKey("0")),
-                    key(ROW1_11))
-            .setLabelsOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
-            .setLabelsOfRow(3, "y", "x", "c", "v", "b", "n", "m")
+                    ROW1_11)
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
+            .setKeysOfRow(3, "y", "x", "c", "v", "b", "n", "m")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
index 9ce4187..726fefc 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
@@ -46,7 +46,7 @@
                     .addKeysOnTheRightOfRow(4, key(ENTER_KEY, EMOJI_KEY));
         } else {
             // Tablet symbols keyboard has extra two keys at the left edge of the 3rd row.
-            builder.addKeysOnTheLeftOfRow(3, joinKeys("\\", "="));
+            builder.addKeysOnTheLeftOfRow(3, (Object[])joinKeys("\\", "="));
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(2, ENTER_KEY)
                     .addKeysOnTheLeftOfRow(3, customizer.getSymbolsShiftKey(isPhone))
@@ -136,11 +136,10 @@
                     key("4", moreKey("\u2074")),
                     // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
                     key("5", moreKey("\u215D")),
-                    key("6"),
+                    "6",
                     // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
                     key("7", moreKey("\u215E")),
-                    key("8"),
-                    key("9"),
+                    "8", "9",
                     // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
                     // U+2205: "∅" EMPTY SET
                     key("0", joinMoreKeys("\u207F", "\u2205")))
@@ -148,7 +147,7 @@
                     key("@"), key("#"), key(CURRENCY),
                     // U+2030: "‰" PER MILLE SIGN
                     key("%", moreKey("\u2030")),
-                    key("&"),
+                    "&",
                     // U+2013: "–" EN DASH
                     // U+2014: "—" EM DASH
                     // U+00B7: "·" MIDDLE DOT
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
index 7cbd2fb..f611310 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
@@ -34,7 +34,7 @@
     public ExpectedKey[][] getLayout(final boolean isPhone) {
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(SYMBOLS_SHIFTED_COMMON);
         final LayoutCustomizer customizer = mCustomizer;
-        builder.replaceKeyOfLabel(OTHER_CURRENCIES, customizer.getOtherCurrencyKeys());
+        builder.replaceKeyOfLabel(OTHER_CURRENCIES, (Object[])customizer.getOtherCurrencyKeys());
         if (isPhone) {
             builder.addKeysOnTheLeftOfRow(3, customizer.getBackToSymbolsKey())
                     .addKeysOnTheRightOfRow(3, DELETE_KEY)
@@ -44,7 +44,7 @@
             // Tablet symbols shifted keyboard has extra two keys at the right edge of the 3rd row.
             // U+00BF: "¿" INVERTED QUESTION MARK
             // U+00A1: "¡" INVERTED EXCLAMATION MARK
-            builder.addKeysOnTheRightOfRow(3, joinKeys("\u00A1", "\u00BF"));
+            builder.addKeysOnTheRightOfRow(3, (Object[])joinKeys("\u00A1", "\u00BF"));
             builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
                     .addKeysOnTheRightOfRow(2, ENTER_KEY)
                     .addKeysOnTheLeftOfRow(3, customizer.getBackToSymbolsKey())
@@ -72,10 +72,8 @@
     // Common symbols shifted keyboard layout.
     private static final ExpectedKey[][] SYMBOLS_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
             .setKeysOfRow(1,
-                    key("~"),
                     // U+0060: "`" GRAVE ACCENT
-                    key("\u0060"),
-                    key("|"),
+                    "~", "\u0060", "|",
                     // U+2022: "•" BULLET
                     // U+266A: "♪" EIGHTH NOTE
                     // U+2665: "♥" BLACK HEART SUIT
@@ -84,21 +82,20 @@
                     // U+2663: "♣" BLACK CLUB SUIT
                     key("\u2022", joinMoreKeys("\u266A", "\u2665", "\u2660", "\u2666", "\u2663")),
                     // U+221A: "√" SQUARE ROOT
-                    key("\u221A"),
+                    "\u221A",
                     // U+03C0: "π" GREEK SMALL LETTER PI
                     // U+03A0: "Π" GREEK CAPITAL LETTER PI
                     key("\u03C0", moreKey("\u03A0")),
                     // U+00F7: "÷" DIVISION SIGN
-                    key("\u00F7"),
                     // U+00D7: "×" MULTIPLICATION SIGN
-                    key("\u00D7"),
+                    "\u00F7", "\u00D7",
                     // U+00B6: "¶" PILCROW SIGN
                     // U+00A7: "§" SECTION SIGN
                     key("\u00B6", moreKey("\u00A7")),
                     // U+2206: "∆" INCREMENT
-                    key("\u2206"))
+                    "\u2206")
             .setKeysOfRow(2,
-                    key(OTHER_CURRENCIES),
+                    OTHER_CURRENCIES,
                     // U+2191: "↑" UPWARDS ARROW
                     // U+2193: "↓" DOWNWARDS ARROW
                     // U+2190: "←" LEFTWARDS ARROW
@@ -112,9 +109,8 @@
                     // U+2248: "≈" ALMOST EQUAL TO
                     // U+221E: "∞" INFINITY
                     key("=", joinMoreKeys("\u2260", "\u2248", "\u221E")),
-                    key("{"),
-                    key("}"))
-            .setLabelsOfRow(3,
+                    "{", "}")
+            .setKeysOfRow(3,
                     // U+00A9: "©" COPYRIGHT SIGN
                     // U+00AE: "®" REGISTERED SIGN
                     // U+2122: "™" TRADE MARK SIGN
@@ -129,7 +125,7 @@
                     // U+2265: "≥" GREATER-THAN EQUAL TO
                     // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
                     key(">", joinMoreKeys("\u203A", "\u2265", "\u00BB")),
-                    SPACE_KEY, key(","),
+                    SPACE_KEY, ",",
                     // U+2026: "…" HORIZONTAL ELLIPSIS
                     key(".", moreKey("\u2026")))
             .build();
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
index 64081a1..253c93b 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
@@ -69,11 +69,11 @@
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
         if (isPhone) {
             // U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
-            builder.addKeysOnTheRightOfRow(3, key("\u0E03"));
+            builder.addKeysOnTheRightOfRow(3, "\u0E03");
         } else {
             // U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
-            builder.addKeysOnTheRightOfRow(2, key("\u0E03"))
-                    .addKeysOnTheRightOfRow(4, EXCLAMATION_AND_QUESTION_MARKS);
+            builder.addKeysOnTheRightOfRow(2, "\u0E03")
+                    .addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
         }
         return builder.build();
     }
@@ -88,10 +88,10 @@
                 ALPHABET_SHIFTED_COMMON);
         if (isPhone) {
             // U+0E05: "ฅ" THAI CHARACTER KHO KHON
-            builder.addKeysOnTheRightOfRow(3, key("\u0E05"));
+            builder.addKeysOnTheRightOfRow(3, "\u0E05");
         } else {
             // U+0E05: "ฅ" THAI CHARACTER KHO KHON
-            builder.addKeysOnTheRightOfRow(2, key("\u0E05"));
+            builder.addKeysOnTheRightOfRow(2, "\u0E05");
         }
         return builder.build();
     }
@@ -101,11 +101,9 @@
     ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
             final boolean isPhone) {
         final LayoutCustomizer customizer = getCustomizer();
-        final ExpectedKey[] spacebar = joinKeys(
-                customizer.getKeysLeftToSpacebar(isPhone),
-                customizer.getSpaceKeys(isPhone),
-                customizer.getKeysRightToSpacebar(isPhone));
-        builder.setKeysOfRow(5, spacebar);
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
         if (isPhone) {
             builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
@@ -116,15 +114,15 @@
                     .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
                     .addKeysOnTheRightOfRow(5, EMOJI_KEY);
         }
-        builder.addKeysOnTheLeftOfRow(4, customizer.getLeftShiftKeys(isPhone))
-                .addKeysOnTheRightOfRow(4, customizer.getRightShiftKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
         return builder;
     }
 
     private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
             .setKeysOfRow(1,
                     // U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO
-                    key("\u0E45"),
+                    "\u0E45",
                     // U+0E51: "๑" THAI DIGIT ONE
                     key("/", joinMoreKeys("1", "\u0E51")),
                     // U+0E52: "๒" THAI DIGIT TWO
@@ -159,160 +157,110 @@
                     // U+0E50: "๐" THAI DIGIT ZERO
                     key("\u0E46", joinMoreKeys("0", "\u0E50")),
                     // U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI
-                    key("\u0E44"),
                     // U+0E33: "ำ" THAI CHARACTER SARA AM
-                    key("\u0E33"),
                     // U+0E1E: "พ" THAI CHARACTER PHO PHAN
-                    key("\u0E1E"),
                     // U+0E30: "ะ" THAI CHARACTER SARA A
-                    key("\u0E30"),
+                    "\u0E44", "\u0E33", "\u0E1E", "\u0E30",
                     // U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT
                     key(" \u0E31", "\u0E31"),
                     // U+0E35: " ี" HAI CHARACTER SARA II
                     key(" \u0E35", "\u0E35"),
                     // U+0E23: "ร" THAI CHARACTER RO RUA
-                    key("\u0E23"),
                     // U+0E19: "น" THAI CHARACTER NO NU
-                    key("\u0E19"),
                     // U+0E22: "ย" THAI CHARACTER YO YAK
-                    key("\u0E22"),
                     // U+0E1A: "บ" THAI CHARACTER BO BAIMAI
-                    key("\u0E1A"),
                     // U+0E25: "ล" THAI CHARACTER LO LING
-                    key("\u0E25"))
+                    "\u0E23", "\u0E19", "\u0E22", "\u0E1A", "\u0E25")
             .setKeysOfRow(3,
                     // U+0E1F: "ฟ" THAI CHARACTER FO FAN
-                    key("\u0E1F"),
                     // U+0E2B: "ห" THAI CHARACTER HO HIP
-                    key("\u0E2B"),
                     // U+0E01: "ก" THAI CHARACTER KO KAI
-                    key("\u0E01"),
                     // U+0E14: "ด" THAI CHARACTER DO DEK
-                    key("\u0E14"),
                     // U+0E40: "เ" THAI CHARACTER SARA E
-                    key("\u0E40"),
+                    "\u0E1F", "\u0E2B", "\u0E01", "\u0E14", "\u0E40",
                     // U+0E49: " ้" THAI CHARACTER MAI THO
                     key(" \u0E49", "\u0E49"),
                     // U+0E48: " ่" THAI CHARACTER MAI EK
                     key(" \u0E48", "\u0E48"),
                     // U+0E32: "า" THAI CHARACTER SARA AA
-                    key("\u0E32"),
                     // U+0E2A: "ส" THAI CHARACTER SO SUA
-                    key("\u0E2A"),
                     // U+0E27: "ว" THAI CHARACTER WO WAEN
-                    key("\u0E27"),
                     // U+0E07: "ง" THAI CHARACTER NGO NGU
-                    key("\u0E07"))
+                    "\u0E32", "\u0E2A", "\u0E27", "\u0E07")
             .setKeysOfRow(4,
                     // U+0E1C: "ผ" THAI CHARACTER PHO PHUNG
-                    key("\u0E1C"),
                     // U+0E1B: "ป" THAI CHARACTER PO PLA
-                    key("\u0E1B"),
                     // U+0E41: "แ" THAI CHARACTER SARA AE
-                    key("\u0E41"),
                     // U+0E2D: "อ" THAI CHARACTER O ANG
-                    key("\u0E2D"),
+                    "\u0E1C", "\u0E1B", "\u0E41", "\u0E2D",
                     // U+0E34: " ิ" THAI CHARACTER SARA I
                     key(" \u0E34", "\u0E34"),
                     // U+0E37: " ื" THAI CHARACTER SARA UEE
                     key(" \u0E37", "\u0E37"),
                     // U+0E17: "ท" THAI CHARACTER THO THAHAN
-                    key("\u0E17"),
                     // U+0E21: "ม" THAI CHARACTER MO MA
-                    key("\u0E21"),
                     // U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN
-                    key("\u0E43"),
                     // U+0E1D: "ฝ" THAI CHARACTER FO FA
-                    key("\u0E1D"))
+                    "\u0E17", "\u0E21", "\u0E43", "\u0E1D")
             .build();
 
     private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
             .setKeysOfRow(1,
-                    key("+"),
                     // U+0E51: "๑" THAI DIGIT ONE
-                    key("\u0E51"),
                     // U+0E52: "๒" THAI DIGIT TWO
-                    key("\u0E52"),
                     // U+0E53: "๓" THAI DIGIT THREE
-                    key("\u0E53"),
                     // U+0E54: "๔" THAI DIGIT FOUR
-                    key("\u0E54"),
                     // U+0E39: " ู" THAI CHARACTER SARA UU
+                    "+", "\u0E51", "\u0E52", "\u0E53", "\u0E54",
                     key(" \u0E39", "\u0E39"),
                     // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
-                    key("\u0E3F"),
                     // U+0E55: "๕" THAI DIGIT FIVE
-                    key("\u0E55"),
                     // U+0E56: "๖" THAI DIGIT SIX
-                    key("\u0E56"),
                     // U+0E57: "๗" THAI DIGIT SEVEN
-                    key("\u0E57"),
                     // U+0E58: "๘" THAI DIGIT EIGHT
-                    key("\u0E58"),
                     // U+0E59: "๙" THAI DIGIT NINE
-                    key("\u0E59"))
+                    "\u0E3F", "\u0E55", "\u0E56", "\u0E57", "\u0E58", "\u0E59")
             .setKeysOfRow(2,
                     // U+0E50: "๐" THAI DIGIT ZERO
-                    key("\u0E50"),
-                    key("\""),
                     // U+0E0E: "ฎ" THAI CHARACTER DO CHADA
-                    key("\u0E0E"),
                     // U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO
-                    key("\u0E11"),
                     // U+0E18: "ธ" THAI CHARACTER THO THONG
-                    key("\u0E18"),
+                    "\u0E50", "\"", "\u0E0E", "\u0E11", "\u0E18",
                     // U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT
                     key(" \u0E4D", "\u0E4D"),
                     // U+0E4A: " ๊" THAI CHARACTER MAI TRI
                     key(" \u0E4A", "\u0E4A"),
                     // U+0E13: "ณ" THAI CHARACTER NO NEN
-                    key("\u0E13"),
                     // U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI
-                    key("\u0E2F"),
                     // U+0E0D: "ญ" THAI CHARACTER YO YING
-                    key("\u0E0D"),
                     // U+0E10: "ฐ" THAI CHARACTER THO THAN
-                    key("\u0E10"),
-                    key(","))
+                    "\u0E13", "\u0E2F", "\u0E0D", "\u0E10", ",")
             .setKeysOfRow(3,
                     // U+0E24: "ฤ" THAI CHARACTER RU
-                    key("\u0E24"),
                     // U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG
-                    key("\u0E06"),
                     // U+0E0F: "ฏ" THAI CHARACTER TO PATAK
-                    key("\u0E0F"),
                     // U+0E42: "โ" THAI CHARACTER SARA O
-                    key("\u0E42"),
                     // U+0E0C: "ฌ" THAI CHARACTER CHO CHOE
-                    key("\u0E0C"),
+                    "\u0E24", "\u0E06", "\u0E0F", "\u0E42", "\u0E0C",
                     // U+0E47: " ็" THAI CHARACTER MAITAIKHU
                     key(" \u0E47", "\u0E47"),
                     // U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA
                     key(" \u0E4B", "\u0E4B"),
                     // U+0E29: "ษ" THAI CHARACTER SO RUSI
-                    key("\u0E29"),
                     // U+0E28: "ศ" THAI CHARACTER SO SALA
-                    key("\u0E28"),
                     // U+0E0B: "ซ" THAI CHARACTER SO SO
-                    key("\u0E0B"),
-                    key("."))
+                    "\u0E29", "\u0E28", "\u0E0B", ".")
             .setKeysOfRow(4,
-                    key("("),
-                    key(")"),
                     // U+0E09: "ฉ" THAI CHARACTER CHO CHING
-                    key("\u0E09"),
                     // U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK
-                    key("\u0E2E"),
+                    "(", ")", "\u0E09", "\u0E2E",
                     // U+0E3A: " ฺ" THAI CHARACTER PHINTHU
                     key(" \u0E3A", "\u0E3A"),
                     // U+0E4C: " ์" THAI CHARACTER THANTHAKHAT
                     key(" \u0E4C", "\u0E4C"),
-                    key("?"),
                     // U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO
-                    key("\u0E12"),
                     // U+0E2C: "ฬ" THAI CHARACTER LO CHULA
-                    key("\u0E2C"),
                     // U+0E26: "ฦ" THAI CHARACTER LU
-                    key("\u0E26"))
+                    "?", "\u0E12", "\u0E2C", "\u0E26")
             .build();
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
index 61cadfc..f9427bc 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
@@ -18,12 +18,8 @@
 
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-
 /**
  * Base class to create an expected keyboard for unit test.
  */
@@ -97,19 +93,7 @@
     // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
     // {@link ExpectedKey} array, and {@link String}.
     public static ExpectedKey[] joinKeys(final Object ... keys) {
-        final ArrayList<ExpectedKey> list = CollectionUtils.newArrayList();
-        for (final Object key : keys) {
-            if (key instanceof ExpectedKey) {
-                list.add((ExpectedKey)key);
-            } else if (key instanceof ExpectedKey[]) {
-                list.addAll(Arrays.asList((ExpectedKey[])key));
-            } else if (key instanceof String) {
-                list.add(key((String)key));
-            } else {
-                throw new RuntimeException("Unknown expected key type: " + key);
-            }
-        }
-        return list.toArray(new ExpectedKey[list.size()]);
+        return ExpectedKeyboardBuilder.joinKeys(keys);
     }
 
     // Icon ids.
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
index 176e0eb..c73fbf7 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
@@ -16,6 +16,9 @@
 
 package com.android.inputmethod.keyboard.layout.expected;
 
+import com.android.inputmethod.latin.utils.CollectionUtils;
+
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -105,67 +108,57 @@
         }
     }
 
-    /**
-     * Set the row with specified keys that have specified labels.
-     * @param row the row number to set keys.
-     * @param labels the label texts of the keys.
-     * @return this builder.
-     */
-    public ExpectedKeyboardBuilder setLabelsOfRow(final int row, final String ... labels) {
-        final ExpectedKey[] keys = new ExpectedKey[labels.length];
-        for (int columnIndex = 0; columnIndex < labels.length; columnIndex++) {
-            keys[columnIndex] = ExpectedKey.newInstance(labels[columnIndex]);
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    static ExpectedKey[] joinKeys(final Object ... keys) {
+        final ArrayList<ExpectedKey> list = CollectionUtils.newArrayList();
+        for (final Object key : keys) {
+            if (key instanceof ExpectedKey) {
+                list.add((ExpectedKey)key);
+            } else if (key instanceof ExpectedKey[]) {
+                list.addAll(Arrays.asList((ExpectedKey[])key));
+            } else if (key instanceof String) {
+                list.add(ExpectedKey.newInstance((String)key));
+            } else {
+                throw new RuntimeException("Unknown expected key type: " + key);
+            }
         }
-        setRowAt(row, keys);
-        return this;
+        return list.toArray(new ExpectedKey[list.size()]);
     }
 
     /**
      * Set the row with specified keys.
      * @param row the row number to set keys.
-     * @param keys the keys to be set at <code>row</code>.
+     * @param keys the keys to be set at <code>row</code>. Each key can be {@link ExpectedKey},
+     *        {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      */
-    public ExpectedKeyboardBuilder setKeysOfRow(final int row, final ExpectedKey ... keys) {
-        setRowAt(row, keys);
+    public ExpectedKeyboardBuilder setKeysOfRow(final int row, final Object ... keys) {
+        setRowAt(row, joinKeys(keys));
         return this;
     }
 
     /**
      * Set the "more keys" of the key that has the specified label.
      * @param label the label of the key to set the "more keys".
-     * @param moreKeys the array of labels of the "more keys" to be set.
+     * @param moreKeys the array of "more key" to be set. Each "more key" can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      */
-    public ExpectedKeyboardBuilder setMoreKeysOf(final String label, final String ... moreKeys) {
-        final ExpectedKey[] expectedMoreKeys = new ExpectedKey[moreKeys.length];
-        for (int index = 0; index < moreKeys.length; index++) {
-            expectedMoreKeys[index] = ExpectedKey.newInstance(moreKeys[index]);
-        }
-        setMoreKeysOf(label, expectedMoreKeys);
-        return this;
-    }
-
-    /**
-     * Set the "more keys" of the key that has the specified label.
-     * @param label the label of the key to set the "more keys".
-     * @param moreKeys the array of "more key" to be set.
-     * @return this builder.
-     */
-    public ExpectedKeyboardBuilder setMoreKeysOf(final String label,
-            final ExpectedKey ... moreKeys) {
-        setMoreKeysOf(ExpectedKeyVisual.newInstance(label), moreKeys);
+    public ExpectedKeyboardBuilder setMoreKeysOf(final String label, final Object ... moreKeys) {
+        setMoreKeysOf(ExpectedKeyVisual.newInstance(label), joinKeys(moreKeys));
         return this;
     }
 
     /**
      * Set the "more keys" of the key that has the specified icon.
      * @param iconId the icon id of the key to set the "more keys".
-     * @param moreKeys the array of "more key" to be set.
+     * @param moreKeys the array of "more key" to be set. Each "more key" can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      */
-    public ExpectedKeyboardBuilder setMoreKeysOf(final int iconId, final ExpectedKey ... moreKeys) {
-        setMoreKeysOf(ExpectedKeyVisual.newInstance(iconId), moreKeys);
+    public ExpectedKeyboardBuilder setMoreKeysOf(final int iconId, final Object ... moreKeys) {
+        setMoreKeysOf(ExpectedKeyVisual.newInstance(iconId), joinKeys(moreKeys));
         return this;
     }
 
@@ -188,14 +181,16 @@
      * Insert the keys at specified position.
      * @param row the row number to insert the <code>keys</code>.
      * @param column the column number to insert the <code>keys</code>.
-     * @param keys the array of keys to insert at <code>row,column</code>.
+     * @param keys the array of keys to insert at <code>row,column</code>. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      * @throws {@link RuntimeException} if <code>row</code> or <code>column</code> is illegal.
      */
     public ExpectedKeyboardBuilder insertKeysAtRow(final int row, final int column,
-            final ExpectedKey ... keys) {
+            final Object ... keys) {
+        final ExpectedKey[] expectedKeys = joinKeys(keys);
         for (int index = 0; index < keys.length; index++) {
-            setElementAt(row, column + index, keys[index], true /* insert */);
+            setElementAt(row, column + index, expectedKeys[index], true /* insert */);
         }
         return this;
     }
@@ -203,15 +198,17 @@
     /**
      * Add the keys on the left most of the row.
      * @param row the row number to add the <code>keys</code>.
-     * @param keys the array of keys to add on the left most of the row.
+     * @param keys the array of keys to add on the left most of the row. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      * @throws {@link RuntimeException} if <code>row</code> is illegal.
      */
     public ExpectedKeyboardBuilder addKeysOnTheLeftOfRow(final int row,
-            final ExpectedKey ... keys) {
+            final Object ... keys) {
+        final ExpectedKey[] expectedKeys = joinKeys(keys);
         // Keys should be inserted from the last to preserve the order.
         for (int index = keys.length - 1; index >= 0; index--) {
-            setElementAt(row, 1, keys[index], true /* insert */);
+            setElementAt(row, 1, expectedKeys[index], true /* insert */);
         }
         return this;
     }
@@ -219,12 +216,13 @@
     /**
      * Add the keys on the right most of the row.
      * @param row the row number to add the <code>keys</code>.
-     * @param keys the array of keys to add on the right most of the row.
+     * @param keys the array of keys to add on the right most of the row. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
      * @return this builder.
      * @throws {@link RuntimeException} if <code>row</code> is illegal.
      */
     public ExpectedKeyboardBuilder addKeysOnTheRightOfRow(final int row,
-            final ExpectedKey ... keys) {
+            final Object ... keys) {
         final int rightEnd = getRowAt(row).length + 1;
         insertKeysAtRow(row, rightEnd, keys);
         return this;
@@ -233,16 +231,17 @@
     /**
      * Replace the most top-left key that has the specified label with the new keys.
      * @param label the label of the key to set <code>newKeys</code>.
-     * @param newKeys the keys to be set.
+     * @param newKeys the keys to be set. Each key can be {@link ExpectedKey}, {@link ExpectedKey}
+     *        array, and {@link String}.
      * @return this builder.
      */
     public ExpectedKeyboardBuilder replaceKeyOfLabel(final String label,
-            final ExpectedKey ... newKeys) {
+            final Object ... newKeys) {
         final ExpectedKeyVisual visual = ExpectedKeyVisual.newInstance(label);
         replaceKeyOf(visual, new ReplaceJob() {
             @Override
             public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
-                return newKeys;
+                return joinKeys(newKeys);
             }
             @Override
             public boolean stopAtFirstOccurrence() {
@@ -255,15 +254,16 @@
     /**
      * Replace the all specified keys with the new keys.
      * @param key the key to be replaced by <code>newKeys</code>.
-     * @param newKeys the keys to be set.
+     * @param newKeys the keys to be set. Each key can be {@link ExpectedKey}, {@link ExpectedKey}
+     *        array, and {@link String}.
      * @return this builder.
      */
     public ExpectedKeyboardBuilder replaceKeysOfAll(final ExpectedKey key,
-            final ExpectedKey ... newKeys) {
+            final Object ... newKeys) {
         replaceKeyOf(key.getVisual(), new ReplaceJob() {
             @Override
             public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
-                return newKeys;
+                return joinKeys(newKeys);
             }
             @Override
             public boolean stopAtFirstOccurrence() {
