diff --git a/html-src/rules/mainecoon.html b/html-src/rules/mainecoon.html
new file mode 100644
index 00000000..a08b8006
--- /dev/null
+++ b/html-src/rules/mainecoon.html
@@ -0,0 +1,12 @@
+<h1>Maine Coon</h1>
+<p>
+Two-Deck game type. 2 decks. No redeal.
+
+<h3>Object</h3>
+<p>
+Move all cards to the foundation.
+
+<h3>Rules</h3>
+<p>
+Like <a href='tabbycat.html'>Tabby Cat</a>, but with 2 decks and 8
+foundations.
diff --git a/html-src/rules/manx.html b/html-src/rules/manx.html
new file mode 100644
index 00000000..22fcdce2
--- /dev/null
+++ b/html-src/rules/manx.html
@@ -0,0 +1,12 @@
+<h1>Manx</h1>
+<p>
+One-Deck game type. 1 deck. No redeal.
+
+<h3>Object</h3>
+<p>
+Move all cards to the foundation.
+
+<h3>Rules</h3>
+<p>
+Like <a href='tabbycat.html'>Tabby Cat</a>, but the reserve may hold
+only a single card.
diff --git a/html-src/rules/tabbycat.html b/html-src/rules/tabbycat.html
new file mode 100644
index 00000000..c84badc3
--- /dev/null
+++ b/html-src/rules/tabbycat.html
@@ -0,0 +1,19 @@
+<h1>Tabby Cat</h1>
+<p>
+One-Deck game type. 1 deck. No redeal.
+
+<h3>Object</h3>
+<p>
+Move all cards to the foundation.
+
+<h3>Rules</h3>
+<p>
+Foundations are built up from Ace to King, regardless of suit. One
+must move an entire Ace-to-King sequence to a foundation as one move.
+<p>
+The playing piles build down by rank, regardless of suit. A king may
+be played on an ace.. An empty pile can receive any card, or
+sequence.
+<p>
+When no more moves are possible, click on the talon. One card will be
+added to each of the playing piles.
diff --git a/po/games.pot b/po/games.pot
index 8218c7db..a54c50b4 100644
--- a/po/games.pot
+++ b/po/games.pot
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PySol 0.0.1\n"
-"POT-Creation-Date: Sat Sep  1 22:26:18 2007\n"
+"POT-Creation-Date: Wed Sep  5 17:37:12 2007\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2418,6 +2418,9 @@ msgstr ""
 msgid "Mahjongg Yummy"
 msgstr ""
 
+msgid "Maine Coon"
+msgstr ""
+
 msgid "Makara"
 msgstr ""
 
@@ -2427,6 +2430,9 @@ msgstr ""
 msgid "Mancunian"
 msgstr ""
 
+msgid "Manx"
+msgstr ""
+
 msgid "Maria"
 msgstr ""
 
@@ -3507,6 +3513,9 @@ msgstr ""
 msgid "Sweet Sixteen"
 msgstr ""
 
+msgid "Tabby Cat"
+msgstr ""
+
 msgid "Taipei"
 msgstr ""
 
diff --git a/po/pysol.pot b/po/pysol.pot
index df43fcf6..021bb338 100644
--- a/po/pysol.pot
+++ b/po/pysol.pot
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "#-#-#-#-#  pysol-1.pot (PACKAGE VERSION)  #-#-#-#-#\n"
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: Sat Sep  1 22:27:31 2007\n"
+"POT-Creation-Date: Wed Sep  5 17:38:29 2007\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,7 +24,7 @@ msgstr ""
 "Generated-By: pygettext.py 1.6con\n"
 "#-#-#-#-#  pysol-2.pot (PACKAGE VERSION)  #-#-#-#-#\n"
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2007-09-01 22:27+0400\n"
+"POT-Creation-Date: 2007-09-05 17:38+0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -762,13 +762,13 @@ msgid ""
 msgstr ""
 
 #: pysollib/games/canfield.py:544 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1568 pysollib/util.py:78 pysollib/wizardutil.py:158
+#: pysollib/stack.py:1569 pysollib/util.py:78 pysollib/wizardutil.py:158
 #: pysollib/wizardutil.py:216
 msgid "King"
 msgstr ""
 
 #: pysollib/games/canfield.py:549 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1567 pysollib/util.py:78
+#: pysollib/stack.py:1568 pysollib/util.py:78
 msgid "Queen"
 msgstr ""
 
@@ -793,12 +793,12 @@ msgid "Waste. Build up or down regardless of suit."
 msgstr ""
 
 #: pysollib/games/golf.py:117 pysollib/games/golf.py:305
-#: pysollib/stack.py:2321
+#: pysollib/stack.py:2330
 msgid "Tableau. No building."
 msgstr ""
 
 #: pysollib/games/golf.py:390 pysollib/games/pileon.py:255
-#: pysollib/stack.py:2210
+#: pysollib/stack.py:2211
 msgid "Foundation. Build up regardless of suit."
 msgstr ""
 
@@ -812,11 +812,11 @@ msgid ""
 "moved as a unit."
 msgstr ""
 
-#: pysollib/games/klondike.py:449
+#: pysollib/games/klondike.py:450
 msgid "Reserve. Only Kings are acceptable."
 msgstr ""
 
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1781
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1782
 msgid "Round %d"
 msgstr ""
 
@@ -890,7 +890,7 @@ msgid "Deal %d"
 msgstr ""
 
 #: pysollib/games/numerica.py:263 pysollib/games/royalcotillion.py:912
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2254
 msgid "Foundation. Build up by color."
 msgstr ""
 
@@ -956,7 +956,7 @@ msgstr ""
 #: pysollib/games/special/tarock.py:223
 #: pysollib/games/ultra/dashavatara.py:351
 #: pysollib/games/ultra/hexadeck.py:273 pysollib/games/ultra/mughal.py:254
-#: pysollib/stack.py:1569 pysollib/util.py:77 pysollib/wizardutil.py:157
+#: pysollib/stack.py:1570 pysollib/util.py:77 pysollib/wizardutil.py:157
 #: pysollib/wizardutil.py:161 pysollib/wizardutil.py:215
 msgid "Ace"
 msgstr ""
@@ -1299,10 +1299,9 @@ msgid ""
 "PySol Fan Club edition\n"
 "%s%s\n"
 "\n"
-"Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003\n"
-"Markus F.X.J. Oberhumer\n"
+"Copyright (C) 1998 - 2003 Markus F.X.J. Oberhumer.\n"
 "Copyright (C) 2003 Mt. Hood Playing Card Co.\n"
-"Copyright (C) 2005 Skomoroh\n"
+"Copyright (C) 2005 - 2007 Skomoroh.\n"
 "All Rights Reserved.\n"
 "\n"
 "PySol is free software distributed under the terms\n"
@@ -1311,11 +1310,11 @@ msgid ""
 "For more information about this application visit"
 msgstr ""
 
-#: pysollib/help.py:93
+#: pysollib/help.py:92
 msgid "Credits"
 msgstr ""
 
-#: pysollib/help.py:94
+#: pysollib/help.py:93
 msgid ""
 " credits go to:\n"
 "\n"
@@ -1330,15 +1329,15 @@ msgid ""
 "for making this program possible"
 msgstr ""
 
-#: pysollib/help.py:129
+#: pysollib/help.py:128
 msgid " HTML Problem"
 msgstr ""
 
-#: pysollib/help.py:130
+#: pysollib/help.py:129
 msgid "Cannot find help document\n"
 msgstr ""
 
-#: pysollib/help.py:143
+#: pysollib/help.py:142
 msgid " Help"
 msgstr ""
 
@@ -1685,221 +1684,221 @@ msgstr ""
 msgid "Top 10"
 msgstr ""
 
-#: pysollib/stack.py:1563
+#: pysollib/stack.py:1564
 msgid "Base card - %s."
 msgstr ""
 
-#: pysollib/stack.py:1564
+#: pysollib/stack.py:1565
 msgid "Empty row cannot be filled."
 msgstr ""
 
-#: pysollib/stack.py:1565
+#: pysollib/stack.py:1566
 msgid "any card"
 msgstr ""
 
-#: pysollib/stack.py:1566 pysollib/util.py:78
+#: pysollib/stack.py:1567 pysollib/util.py:78
 msgid "Jack"
 msgstr ""
 
-#: pysollib/stack.py:1576
+#: pysollib/stack.py:1577
 msgid "No cards"
 msgstr ""
 
-#: pysollib/stack.py:1577
+#: pysollib/stack.py:1578
 msgid "%d card"
 msgid_plural "%d cards"
 msgstr[0] ""
 msgstr[1] ""
 
-#: pysollib/stack.py:1790 pysollib/stack.py:1792 pysollib/stack.py:1828
+#: pysollib/stack.py:1791 pysollib/stack.py:1793 pysollib/stack.py:1829
 msgid "Redeal"
 msgstr ""
 
-#: pysollib/stack.py:1792
+#: pysollib/stack.py:1793
 msgid "Stop"
 msgstr ""
 
-#: pysollib/stack.py:1853
+#: pysollib/stack.py:1854
 msgid "Variable redeals."
 msgstr ""
 
-#: pysollib/stack.py:1854
+#: pysollib/stack.py:1855
 msgid "Unlimited redeals."
 msgstr ""
 
-#: pysollib/stack.py:1857
+#: pysollib/stack.py:1858
 msgid "%d readeal"
 msgid_plural "%d redeals"
 msgstr[0] ""
 msgstr[1] ""
 
-#: pysollib/stack.py:1859
+#: pysollib/stack.py:1860
 msgid "Talon."
 msgstr ""
 
-#: pysollib/stack.py:2124 pysollib/stack.py:2767
+#: pysollib/stack.py:2125 pysollib/stack.py:2776
 msgid "Reserve. No building."
 msgstr ""
 
-#: pysollib/stack.py:2161
+#: pysollib/stack.py:2162
 msgid "Foundation."
 msgstr ""
 
-#: pysollib/stack.py:2199
+#: pysollib/stack.py:2200
 msgid "Foundation. Build up by suit."
 msgstr ""
 
-#: pysollib/stack.py:2200
+#: pysollib/stack.py:2201
 msgid "Foundation. Build down by suit."
 msgstr ""
 
-#: pysollib/stack.py:2201 pysollib/stack.py:2212 pysollib/stack.py:2234
-#: pysollib/stack.py:2255
+#: pysollib/stack.py:2202 pysollib/stack.py:2213 pysollib/stack.py:2235
+#: pysollib/stack.py:2256
 msgid "Foundation. Build by same rank."
 msgstr ""
 
-#: pysollib/stack.py:2211
+#: pysollib/stack.py:2212
 msgid "Foundation. Build down regardless of suit."
 msgstr ""
 
-#: pysollib/stack.py:2232
+#: pysollib/stack.py:2233
 msgid "Foundation. Build up by alternate color."
 msgstr ""
 
-#: pysollib/stack.py:2233
+#: pysollib/stack.py:2234
 msgid "Foundation. Build down by alternate color."
 msgstr ""
 
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2255
 msgid "Foundation. Build down by color."
 msgstr ""
 
-#: pysollib/stack.py:2363
+#: pysollib/stack.py:2372
 msgid "Tableau. Build up by alternate color."
 msgstr ""
 
-#: pysollib/stack.py:2364
+#: pysollib/stack.py:2373
 msgid "Tableau. Build down by alternate color."
 msgstr ""
 
-#: pysollib/stack.py:2365 pysollib/stack.py:2375 pysollib/stack.py:2384
-#: pysollib/stack.py:2393 pysollib/stack.py:2403 pysollib/stack.py:2432
-#: pysollib/stack.py:2442
+#: pysollib/stack.py:2374 pysollib/stack.py:2384 pysollib/stack.py:2393
+#: pysollib/stack.py:2402 pysollib/stack.py:2412 pysollib/stack.py:2441
+#: pysollib/stack.py:2451
 msgid "Tableau. Build by same rank."
 msgstr ""
 
-#: pysollib/stack.py:2373
+#: pysollib/stack.py:2382
 msgid "Tableau. Build up by color."
 msgstr ""
 
-#: pysollib/stack.py:2374
+#: pysollib/stack.py:2383
 msgid "Tableau. Build down by color."
 msgstr ""
 
-#: pysollib/stack.py:2382
+#: pysollib/stack.py:2391
 msgid "Tableau. Build up by suit."
 msgstr ""
 
-#: pysollib/stack.py:2383
+#: pysollib/stack.py:2392
 msgid "Tableau. Build down by suit."
 msgstr ""
 
-#: pysollib/stack.py:2391
+#: pysollib/stack.py:2400
 msgid "Tableau. Build up regardless of suit."
 msgstr ""
 
-#: pysollib/stack.py:2392
+#: pysollib/stack.py:2401
 msgid "Tableau. Build down regardless of suit."
 msgstr ""
 
-#: pysollib/stack.py:2401
+#: pysollib/stack.py:2410
 msgid "Tableau. Build up in any suit but the same."
 msgstr ""
 
-#: pysollib/stack.py:2402
+#: pysollib/stack.py:2411
 msgid "Tableau. Build down in any suit but the same."
 msgstr ""
 
-#: pysollib/stack.py:2430
+#: pysollib/stack.py:2439
 msgid ""
 "Tableau. Build up regardless of suit. Sequences of cards in alternate color "
 "can be moved as a unit."
 msgstr ""
 
-#: pysollib/stack.py:2431
+#: pysollib/stack.py:2440
 msgid ""
 "Tableau. Build down regardless of suit. Sequences of cards in alternate "
 "color can be moved as a unit."
 msgstr ""
 
-#: pysollib/stack.py:2440
+#: pysollib/stack.py:2449
 msgid ""
 "Tableau. Build up regardless of suit. Sequences of cards in the same suit "
 "can be moved as a unit."
 msgstr ""
 
-#: pysollib/stack.py:2441
+#: pysollib/stack.py:2450
 msgid ""
 "Tableau. Build down regardless of suit. Sequences of cards in the same suit "
 "can be moved as a unit."
 msgstr ""
 
-#: pysollib/stack.py:2463
+#: pysollib/stack.py:2472
 msgid ""
 "Tableau. Build up by alternate color, can move any face-up cards regardless "
 "of sequence."
 msgstr ""
 
-#: pysollib/stack.py:2464
+#: pysollib/stack.py:2473
 msgid ""
 "Tableau. Build down by alternate color, can move any face-up cards "
 "regardless of sequence."
 msgstr ""
 
-#: pysollib/stack.py:2465 pysollib/stack.py:2478 pysollib/stack.py:2488
+#: pysollib/stack.py:2474 pysollib/stack.py:2487 pysollib/stack.py:2497
 msgid ""
 "Tableau. Build by same rank, can move any face-up cards regardless of "
 "sequence."
 msgstr ""
 
-#: pysollib/stack.py:2476
+#: pysollib/stack.py:2485
 msgid ""
 "Tableau. Build up by suit, can move any face-up cards regardless of sequence."
 msgstr ""
 
-#: pysollib/stack.py:2477
+#: pysollib/stack.py:2486
 msgid ""
 "Tableau. Build down by suit, can move any face-up cards regardless of "
 "sequence."
 msgstr ""
 
-#: pysollib/stack.py:2486 pysollib/stack.py:2487
+#: pysollib/stack.py:2495 pysollib/stack.py:2496
 msgid ""
 "Tableau. Build up regardless of suit, can move any face-up cards regardless "
 "of sequence."
 msgstr ""
 
-#: pysollib/stack.py:2520
+#: pysollib/stack.py:2529
 msgid "Tableau. Build up or down by color."
 msgstr ""
 
-#: pysollib/stack.py:2531
+#: pysollib/stack.py:2540
 msgid "Tableau. Build up or down by alternate color."
 msgstr ""
 
-#: pysollib/stack.py:2542
+#: pysollib/stack.py:2551
 msgid "Tableau. Build up or down by suit."
 msgstr ""
 
-#: pysollib/stack.py:2553
+#: pysollib/stack.py:2562
 msgid "Tableau. Build up or down regardless of suit."
 msgstr ""
 
-#: pysollib/stack.py:2652
+#: pysollib/stack.py:2661
 msgid "Waste."
 msgstr ""
 
-#: pysollib/stack.py:2768
+#: pysollib/stack.py:2777
 msgid "Free cell."
 msgstr ""
 
diff --git a/po/ru_games.po b/po/ru_games.po
index 7e9a3c84..baf0cbd7 100644
--- a/po/ru_games.po
+++ b/po/ru_games.po
@@ -5,8 +5,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PySol 0.0.1\n"
-"POT-Creation-Date: Sat Sep  1 22:26:18 2007\n"
-"PO-Revision-Date: 2007-09-02 22:22+0400\n"
+"POT-Creation-Date: Wed Sep  5 17:37:12 2007\n"
+"PO-Revision-Date: 2007-09-05 17:43+0400\n"
 "Last-Translator: Скоморох <skomoroh@gmail.com>\n"
 "Language-Team: Russian <ru@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -2434,6 +2434,10 @@ msgstr "Маджонг X-Shape"
 msgid "Mahjongg Yummy"
 msgstr "Маджонг Приятный"
 
+#, fuzzy
+msgid "Maine Coon"
+msgstr "Луна на ущербе"
+
 #, fuzzy
 msgid "Makara"
 msgstr "Мария"
@@ -2444,6 +2448,9 @@ msgstr "Мамочка Сюзи"
 msgid "Mancunian"
 msgstr "Манчестерский"
 
+msgid "Manx"
+msgstr "Бесхвостая кошка"
+
 msgid "Maria"
 msgstr "Мария"
 
@@ -3542,6 +3549,9 @@ msgstr ""
 msgid "Sweet Sixteen"
 msgstr "Приятные шестнадцать"
 
+msgid "Tabby Cat"
+msgstr "Полосатая кошка"
+
 msgid "Taipei"
 msgstr "Тайпей"
 
diff --git a/po/ru_pysol.po b/po/ru_pysol.po
index 8c858a38..56f98333 100644
--- a/po/ru_pysol.po
+++ b/po/ru_pysol.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: Sat Sep  1 22:27:31 2007\n"
+"POT-Creation-Date: Wed Sep  5 17:38:29 2007\n"
 "PO-Revision-Date: 2007-09-01 23:16+0400\n"
 "Last-Translator: Skomoroh <skomoroh@gmail.com>\n"
 "Language-Team: Russian <ru@li.org>\n"
@@ -821,13 +821,13 @@ msgstr ""
 "4:  8  Д  3  7  В  2  6 10  Т  5  9  К"
 
 #: pysollib/games/canfield.py:544 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1568 pysollib/util.py:78 pysollib/wizardutil.py:158
+#: pysollib/stack.py:1569 pysollib/util.py:78 pysollib/wizardutil.py:158
 #: pysollib/wizardutil.py:216
 msgid "King"
 msgstr "Король"
 
 #: pysollib/games/canfield.py:549 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1567 pysollib/util.py:78
+#: pysollib/stack.py:1568 pysollib/util.py:78
 msgid "Queen"
 msgstr "Дама"
 
@@ -853,12 +853,12 @@ msgid "Waste. Build up or down regardless of suit."
 msgstr "Сброс. Складывать по возрастанию или убыванию не считаясь с мастью."
 
 #: pysollib/games/golf.py:117 pysollib/games/golf.py:305
-#: pysollib/stack.py:2321
+#: pysollib/stack.py:2330
 msgid "Tableau. No building."
 msgstr "Игровой стол. Без выкладывания."
 
 #: pysollib/games/golf.py:390 pysollib/games/pileon.py:255
-#: pysollib/stack.py:2210
+#: pysollib/stack.py:2211
 msgid "Foundation. Build up regardless of suit."
 msgstr "Базовая ячейка. Складывать по возрастанию не считаясь с мастью."
 
@@ -874,11 +874,11 @@ msgstr ""
 "Игровой стол. Складывать по убыванию в соответствии с цветом. Можно "
 "перемещать серии карт одинаковой масти."
 
-#: pysollib/games/klondike.py:449
+#: pysollib/games/klondike.py:450
 msgid "Reserve. Only Kings are acceptable."
 msgstr "Резерв. Только для королей."
 
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1781
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1782
 msgid "Round %d"
 msgstr "Раунд %d"
 
@@ -993,7 +993,7 @@ msgid "Deal %d"
 msgstr "Сдача %d"
 
 #: pysollib/games/numerica.py:263 pysollib/games/royalcotillion.py:912
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2254
 msgid "Foundation. Build up by color."
 msgstr "Базовая ячейка. Складывать по возрастанию в соответствии с цветом."
 
@@ -1072,7 +1072,7 @@ msgstr "Жезлы"
 #: pysollib/games/special/tarock.py:223
 #: pysollib/games/ultra/dashavatara.py:351
 #: pysollib/games/ultra/hexadeck.py:273 pysollib/games/ultra/mughal.py:254
-#: pysollib/stack.py:1569 pysollib/util.py:77 pysollib/wizardutil.py:157
+#: pysollib/stack.py:1570 pysollib/util.py:77 pysollib/wizardutil.py:157
 #: pysollib/wizardutil.py:161 pysollib/wizardutil.py:215
 msgid "Ace"
 msgstr "Туз"
@@ -1425,14 +1425,14 @@ msgid "About "
 msgstr "О программе "
 
 #: pysollib/help.py:63
+#, fuzzy
 msgid ""
 "PySol Fan Club edition\n"
 "%s%s\n"
 "\n"
-"Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003\n"
-"Markus F.X.J. Oberhumer\n"
+"Copyright (C) 1998 - 2003 Markus F.X.J. Oberhumer.\n"
 "Copyright (C) 2003 Mt. Hood Playing Card Co.\n"
-"Copyright (C) 2005 Skomoroh\n"
+"Copyright (C) 2005 - 2007 Skomoroh.\n"
 "All Rights Reserved.\n"
 "\n"
 "PySol is free software distributed under the terms\n"
@@ -1454,11 +1454,11 @@ msgstr ""
 "Для получения дополнительной информации\n"
 "об этом приложении посетите сайт"
 
-#: pysollib/help.py:93
+#: pysollib/help.py:92
 msgid "Credits"
 msgstr "Благодарности"
 
-#: pysollib/help.py:94
+#: pysollib/help.py:93
 msgid ""
 " credits go to:\n"
 "\n"
@@ -1473,15 +1473,15 @@ msgid ""
 "for making this program possible"
 msgstr ""
 
-#: pysollib/help.py:129
+#: pysollib/help.py:128
 msgid " HTML Problem"
 msgstr " проблема с HTML"
 
-#: pysollib/help.py:130
+#: pysollib/help.py:129
 msgid "Cannot find help document\n"
 msgstr "Не найден файл помощи\n"
 
-#: pysollib/help.py:143
+#: pysollib/help.py:142
 msgid " Help"
 msgstr " Помощь"
 
@@ -1858,144 +1858,144 @@ msgstr "США"
 msgid "Top 10"
 msgstr "Top 10"
 
-#: pysollib/stack.py:1563
+#: pysollib/stack.py:1564
 msgid "Base card - %s."
 msgstr "Базовая карта - %s."
 
-#: pysollib/stack.py:1564
+#: pysollib/stack.py:1565
 msgid "Empty row cannot be filled."
 msgstr "Пустой ряд не заполняется."
 
-#: pysollib/stack.py:1565
+#: pysollib/stack.py:1566
 msgid "any card"
 msgstr "любая карта"
 
-#: pysollib/stack.py:1566 pysollib/util.py:78
+#: pysollib/stack.py:1567 pysollib/util.py:78
 msgid "Jack"
 msgstr "Валет"
 
-#: pysollib/stack.py:1576
+#: pysollib/stack.py:1577
 msgid "No cards"
 msgstr "Нет карт"
 
-#: pysollib/stack.py:1577
+#: pysollib/stack.py:1578
 msgid "%d card"
 msgid_plural "%d cards"
 msgstr[0] "%d карта"
 msgstr[1] "%d карты"
 msgstr[2] "%d карт"
 
-#: pysollib/stack.py:1790 pysollib/stack.py:1792 pysollib/stack.py:1828
+#: pysollib/stack.py:1791 pysollib/stack.py:1793 pysollib/stack.py:1829
 msgid "Redeal"
 msgstr "Сдать"
 
-#: pysollib/stack.py:1792
+#: pysollib/stack.py:1793
 msgid "Stop"
 msgstr "Стоп"
 
-#: pysollib/stack.py:1853
+#: pysollib/stack.py:1854
 msgid "Variable redeals."
 msgstr "Переменное количество пересдач."
 
-#: pysollib/stack.py:1854
+#: pysollib/stack.py:1855
 msgid "Unlimited redeals."
 msgstr "Неограниченное количество пересдач."
 
-#: pysollib/stack.py:1857
+#: pysollib/stack.py:1858
 msgid "%d readeal"
 msgid_plural "%d redeals"
 msgstr[0] "%d пересдача"
 msgstr[1] "%d пересдачи"
 msgstr[2] "%d пересдач"
 
-#: pysollib/stack.py:1859
+#: pysollib/stack.py:1860
 msgid "Talon."
 msgstr "Колода."
 
-#: pysollib/stack.py:2124 pysollib/stack.py:2767
+#: pysollib/stack.py:2125 pysollib/stack.py:2776
 msgid "Reserve. No building."
 msgstr "Резерв. Без выкладывания."
 
-#: pysollib/stack.py:2161
+#: pysollib/stack.py:2162
 msgid "Foundation."
 msgstr "Базовая ячейка"
 
-#: pysollib/stack.py:2199
+#: pysollib/stack.py:2200
 msgid "Foundation. Build up by suit."
 msgstr "Базовая ячейка. Складывать по возрастанию в соответствии с мастью."
 
-#: pysollib/stack.py:2200
+#: pysollib/stack.py:2201
 msgid "Foundation. Build down by suit."
 msgstr "Базовая ячейка. Складывать по убыванию в соответствии с мастью."
 
-#: pysollib/stack.py:2201 pysollib/stack.py:2212 pysollib/stack.py:2234
-#: pysollib/stack.py:2255
+#: pysollib/stack.py:2202 pysollib/stack.py:2213 pysollib/stack.py:2235
+#: pysollib/stack.py:2256
 msgid "Foundation. Build by same rank."
 msgstr "Базовая ячейка. Складывать в соответствии с достоинством."
 
-#: pysollib/stack.py:2211
+#: pysollib/stack.py:2212
 msgid "Foundation. Build down regardless of suit."
 msgstr "Базовая ячейка. Складывать по убыванию не считаясь с мастью."
 
-#: pysollib/stack.py:2232
+#: pysollib/stack.py:2233
 msgid "Foundation. Build up by alternate color."
 msgstr "Базовая ячейка. Складывать по возрастанию чередуя цвет."
 
-#: pysollib/stack.py:2233
+#: pysollib/stack.py:2234
 msgid "Foundation. Build down by alternate color."
 msgstr "Базовая ячейка. Складывать по убыванию чередуя цвет."
 
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2255
 msgid "Foundation. Build down by color."
 msgstr "Базовая ячейка. Складывать по убыванию в соответствии с цветом."
 
-#: pysollib/stack.py:2363
+#: pysollib/stack.py:2372
 msgid "Tableau. Build up by alternate color."
 msgstr "Игровой стол. Складывать по возрастанию чередуя цвет."
 
-#: pysollib/stack.py:2364
+#: pysollib/stack.py:2373
 msgid "Tableau. Build down by alternate color."
 msgstr "Игровой стол. Складывать по убыванию чередуя цвет."
 
-#: pysollib/stack.py:2365 pysollib/stack.py:2375 pysollib/stack.py:2384
-#: pysollib/stack.py:2393 pysollib/stack.py:2403 pysollib/stack.py:2432
-#: pysollib/stack.py:2442
+#: pysollib/stack.py:2374 pysollib/stack.py:2384 pysollib/stack.py:2393
+#: pysollib/stack.py:2402 pysollib/stack.py:2412 pysollib/stack.py:2441
+#: pysollib/stack.py:2451
 msgid "Tableau. Build by same rank."
 msgstr "Игровой стол. Складывать в соответствии с достоинством."
 
-#: pysollib/stack.py:2373
+#: pysollib/stack.py:2382
 msgid "Tableau. Build up by color."
 msgstr "Игровой стол. Складывать по возрастанию в соответствии с цветом."
 
-#: pysollib/stack.py:2374
+#: pysollib/stack.py:2383
 msgid "Tableau. Build down by color."
 msgstr "Игровой стол. Складывать по убыванию в соответствии с цветом."
 
-#: pysollib/stack.py:2382
+#: pysollib/stack.py:2391
 msgid "Tableau. Build up by suit."
 msgstr "Игровой стол. Складывать по возрастанию в соответствии с мастью."
 
-#: pysollib/stack.py:2383
+#: pysollib/stack.py:2392
 msgid "Tableau. Build down by suit."
 msgstr "Игровой стол. Складывать по убыванию в соответствии с мастью."
 
-#: pysollib/stack.py:2391
+#: pysollib/stack.py:2400
 msgid "Tableau. Build up regardless of suit."
 msgstr "Игровой стол. Складывать по возрастанию не считаясь с мастью."
 
-#: pysollib/stack.py:2392
+#: pysollib/stack.py:2401
 msgid "Tableau. Build down regardless of suit."
 msgstr "Игровой стол. Складывать по убыванию не считаясь с мастью."
 
-#: pysollib/stack.py:2401
+#: pysollib/stack.py:2410
 msgid "Tableau. Build up in any suit but the same."
 msgstr "Игровой стол. Складывать по возрастанию в любую масть кроме такой же."
 
-#: pysollib/stack.py:2402
+#: pysollib/stack.py:2411
 msgid "Tableau. Build down in any suit but the same."
 msgstr "Игровой стол. Складывать по убыванию в любую масть кроме такой же."
 
-#: pysollib/stack.py:2430
+#: pysollib/stack.py:2439
 msgid ""
 "Tableau. Build up regardless of suit. Sequences of cards in alternate color "
 "can be moved as a unit."
@@ -2003,7 +2003,7 @@ msgstr ""
 "Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
 "перемещать серии карт чередующихся цветом."
 
-#: pysollib/stack.py:2431
+#: pysollib/stack.py:2440
 msgid ""
 "Tableau. Build down regardless of suit. Sequences of cards in alternate "
 "color can be moved as a unit."
@@ -2011,7 +2011,7 @@ msgstr ""
 "Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
 "серии карт чередующихся цветом."
 
-#: pysollib/stack.py:2440
+#: pysollib/stack.py:2449
 msgid ""
 "Tableau. Build up regardless of suit. Sequences of cards in the same suit "
 "can be moved as a unit."
@@ -2019,7 +2019,7 @@ msgstr ""
 "Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
 "перемещать серии карт одинаковой масти."
 
-#: pysollib/stack.py:2441
+#: pysollib/stack.py:2450
 msgid ""
 "Tableau. Build down regardless of suit. Sequences of cards in the same suit "
 "can be moved as a unit."
@@ -2027,7 +2027,7 @@ msgstr ""
 "Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
 "серии карт одинаковой масти."
 
-#: pysollib/stack.py:2463
+#: pysollib/stack.py:2472
 msgid ""
 "Tableau. Build up by alternate color, can move any face-up cards regardless "
 "of sequence."
@@ -2035,7 +2035,7 @@ msgstr ""
 "Игровой стол. Складывать по возрастанию чередуя цвет, можно перемещать любую "
 "серию открытых карт."
 
-#: pysollib/stack.py:2464
+#: pysollib/stack.py:2473
 msgid ""
 "Tableau. Build down by alternate color, can move any face-up cards "
 "regardless of sequence."
@@ -2043,7 +2043,7 @@ msgstr ""
 "Игровой стол. Складывать по убыванию чередуя цвет, можно перемещать любую "
 "серию открытых карт."
 
-#: pysollib/stack.py:2465 pysollib/stack.py:2478 pysollib/stack.py:2488
+#: pysollib/stack.py:2474 pysollib/stack.py:2487 pysollib/stack.py:2497
 msgid ""
 "Tableau. Build by same rank, can move any face-up cards regardless of "
 "sequence."
@@ -2051,14 +2051,14 @@ msgstr ""
 "Игровой стол. Складывать в соответствии с достоинством, можно перемещать "
 "любую серию открытых карт."
 
-#: pysollib/stack.py:2476
+#: pysollib/stack.py:2485
 msgid ""
 "Tableau. Build up by suit, can move any face-up cards regardless of sequence."
 msgstr ""
 "Игровой стол. Складывать по возрастанию в соответствии с мастью, можно "
 "перемещать любую серию открытых карт."
 
-#: pysollib/stack.py:2477
+#: pysollib/stack.py:2486
 msgid ""
 "Tableau. Build down by suit, can move any face-up cards regardless of "
 "sequence."
@@ -2066,7 +2066,7 @@ msgstr ""
 "Игровой стол. Складывать по убыванию в соответствии с мастью, можно "
 "перемещать любую серию открытых карт."
 
-#: pysollib/stack.py:2486 pysollib/stack.py:2487
+#: pysollib/stack.py:2495 pysollib/stack.py:2496
 msgid ""
 "Tableau. Build up regardless of suit, can move any face-up cards regardless "
 "of sequence."
@@ -2074,30 +2074,30 @@ msgstr ""
 "Игровой стол. Складывать по возрастанию не считаясь с мастью, можно "
 "перемещать любую серию открытых карт."
 
-#: pysollib/stack.py:2520
+#: pysollib/stack.py:2529
 msgid "Tableau. Build up or down by color."
 msgstr ""
 "Игровой стол. Складывать по возрастанию или убыванию в соответствии с цветом."
 
-#: pysollib/stack.py:2531
+#: pysollib/stack.py:2540
 msgid "Tableau. Build up or down by alternate color."
 msgstr "Игровой стол. Складывать по возрастанию или убыванию чередуя цвет."
 
-#: pysollib/stack.py:2542
+#: pysollib/stack.py:2551
 msgid "Tableau. Build up or down by suit."
 msgstr ""
 "Игровой стол. Складывать по возрастанию или убыванию в соответствии с мастью."
 
-#: pysollib/stack.py:2553
+#: pysollib/stack.py:2562
 msgid "Tableau. Build up or down regardless of suit."
 msgstr ""
 "Игровой стол. Складывать по возрастанию или убыванию не считаясь с мастью."
 
-#: pysollib/stack.py:2652
+#: pysollib/stack.py:2661
 msgid "Waste."
 msgstr "Сброс."
 
-#: pysollib/stack.py:2768
+#: pysollib/stack.py:2777
 msgid "Free cell."
 msgstr "Свободная ячейка."
 
diff --git a/pysollib/games/acesup.py b/pysollib/games/acesup.py
index 0a08974d..d7aecc7f 100644
--- a/pysollib/games/acesup.py
+++ b/pysollib/games/acesup.py
@@ -328,6 +328,82 @@ class FiringSquad(AcesUp):
         AcesUp.createGame(self, reserve=True)
 
 
+# /***********************************************************************
+# // Tabby Cat
+# // Manx
+# // Maine Coon
+# ************************************************************************/
+
+class TabbyCatStack(RK_RowStack):
+    def acceptsCards(self, from_stack, cards):
+        if not RK_RowStack.acceptsCards( self, from_stack, cards):
+            return False
+        # Only allow a sequence if pile is empty
+        if len( self.cards) > 0:
+            return False
+        return True
+
+    getBottomImage = Stack._getReserveBottomImage
+
+
+class TabbyCat(Game):
+    Talon_Class = DealRowTalonStack
+    Foundation_Class = Spider_RK_Foundation
+    RowStack_Class = StackWrapper(RK_RowStack, mod=13)
+    ReserveStack_Class = StackWrapper(TabbyCatStack, mod=13)
+
+    #
+    # game layout
+    #
+
+    def createGame(self, rows=4, playcards=20):
+        # create layout
+        l, s = Layout(self), self.s
+        decks = self.gameinfo.decks
+
+        # set window
+        self.setSize(l.XM + (decks+rows+3.5)*l.XS,
+                     l.YM + max(4*l.YS, l.YS+playcards*l.YOFFSET))
+
+        # create stacks
+        x = l.XM
+        for i in range(decks):
+            y = l.YM
+            for j in range(4):
+                s.foundations.append(self.Foundation_Class(x, y, self))
+                y += l.YS
+            x += l.XS
+
+        x, y, = l.XM + (decks+0.5)*l.XS, l.YM
+        for i in range(rows):
+            stack = self.RowStack_Class(x, y, self)
+            s.rows.append(stack)
+            stack.canDropCards = stack.spiderCanDropCards
+            x += l.XS
+        x += l.XS/2
+        s.reserves.append(self.ReserveStack_Class(x, y, self))
+        x += 1.5*l.XS
+        s.talon = self.Talon_Class(x, y, self)
+        l.createText(s.talon, "s")
+
+        # define stack-groups
+        l.defaultStackGroups()
+
+    def startGame(self):
+        self.startDealSample()
+        self.s.talon.dealRow()
+
+    shallHighlightMatch = Game._shallHighlightMatch_RKW
+
+
+class Manx(TabbyCat):
+    ReserveStack_Class = ReserveStack
+
+
+class MaineCoon(TabbyCat):
+    def createGame(self):
+        TabbyCat.createGame(self, playcards=26)
+
 
 # register the game
 registerGame(GameInfo(903, AcesUp, "Aces Up",                   # was: 52
@@ -348,3 +424,9 @@ registerGame(GameInfo(583, FiringSquad, "Firing Squad",
                       GI.GT_1DECK_TYPE, 1, 0, GI.SL_BALANCED))
 registerGame(GameInfo(684, Deck, "Deck",
                       GI.GT_1DECK_TYPE, 1, 0, GI.SL_LUCK))
+registerGame(GameInfo(756, TabbyCat, "Tabby Cat",
+                      GI.GT_1DECK_TYPE, 1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(757, Manx, "Manx",
+                      GI.GT_1DECK_TYPE, 1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(758, MaineCoon, "Maine Coon",
+                      GI.GT_2DECK_TYPE, 2, 0, GI.SL_MOSTLY_SKILL))
diff --git a/pysollib/games/klondike.py b/pysollib/games/klondike.py
index 3e08df5e..659711e2 100644
--- a/pysollib/games/klondike.py
+++ b/pysollib/games/klondike.py
@@ -428,7 +428,8 @@ class EightByEight(EightTimesEight):
     RowStack_Class = EightByEight_RowStack
 
     def createGame(self):
-        l = Klondike.createGame(self, rows=8, max_rounds=3, round_text=True)
+        l = Klondike.createGame(self, rows=8, playcards=20,
+                                max_rounds=3, round_text=True)
         l.createRoundText(self.s.talon, 'ne', dx=l.XS)
 
     shallHighlightMatch = Game._shallHighlightMatch_RK
diff --git a/pysollib/games/unionsquare.py b/pysollib/games/unionsquare.py
index 71737e3b..4fc3ad23 100644
--- a/pysollib/games/unionsquare.py
+++ b/pysollib/games/unionsquare.py
@@ -195,6 +195,7 @@ class Boomerang_Foundation(AbstractFoundationStack):
 class Boomerang(UnionSquare):
     Foundation_Class = StackWrapper(Boomerang_Foundation,
                                     base_rank=6, max_cards=16)
+    RowStack_Class = StackWrapper(UnionSquare_RowStack, base_rank=NO_RANK)
 
     def createGame(self):
         UnionSquare.createGame(self, rows=12)
diff --git a/pysollib/init.py b/pysollib/init.py
index 334b7f2a..f0afb55d 100644
--- a/pysollib/init.py
+++ b/pysollib/init.py
@@ -70,7 +70,7 @@ def init():
             os.environ['LANG'] = l[0]
         except:
             pass
-    ##locale.setlocale(locale.LC_ALL, '')
+    locale.setlocale(locale.LC_ALL, '')
 
     ## install gettext
     ##locale_dir = 'locale'
diff --git a/pysollib/options.py b/pysollib/options.py
index 9b15409e..72204ffd 100644
--- a/pysollib/options.py
+++ b/pysollib/options.py
@@ -62,7 +62,7 @@ animations = integer(0, 5)
 redeal_animation = boolean
 win_animation = boolean
 flip_animation = boolean
-squeeze_stacks = boolean
+compact_stacks = boolean
 shadow = boolean
 shade = boolean
 shrink_face_down = boolean
@@ -190,7 +190,7 @@ class Options:
         ('redeal_animation', 'bool'),
         ('win_animation', 'bool'),
         ('flip_animation', 'bool'),
-        ('squeeze_stacks', 'bool'),
+        ('compact_stacks', 'bool'),
         ('shadow', 'bool'),
         ('shade', 'bool'),
         ('shrink_face_down', 'bool'),
@@ -260,7 +260,7 @@ class Options:
         self.redeal_animation = True
         self.win_animation = True
         self.flip_animation = True
-        self.squeeze_stacks = True
+        self.compact_stacks = True
         self.shadow = True
         self.shade = True
         self.shrink_face_down = True
diff --git a/pysollib/stack.py b/pysollib/stack.py
index 9b85a0f1..1766ef44 100644
--- a/pysollib/stack.py
+++ b/pysollib/stack.py
@@ -62,6 +62,7 @@ __all__ = ['cardsFaceUp',
            'SC_FoundationStack',
            'Spider_SS_Foundation',
            'Spider_AC_Foundation',
+           'Spider_RK_Foundation',
            #'SequenceStack_StackMethods',
            'BasicRowStack',
            'SequenceRowStack',
@@ -862,7 +863,7 @@ class Stack:
         self.texts.ncards.config(text=t)
 
     def updatePositions(self):
-        # squeeze the stack if a cards is off-screen
+        # compact the stack when a cards goes off screen
         if self.reallocateCards():
             for c in self.cards:
                 self._position(c)
@@ -870,7 +871,7 @@ class Stack:
     def reallocateCards(self):
         # change CARD_YOFFSET if a cards is off-screen
         # returned False if CARD_YOFFSET is not changed, otherwise True
-        if not self.game.app.opt.squeeze_stacks:
+        if not self.game.app.opt.compact_stacks:
             return False
         if TOOLKIT != 'tk':
             return False
@@ -896,7 +897,7 @@ class Stack:
         game_height = self.game.height + 2*self.canvas.ymargin
         height = max(visible_height, game_height)
         if stack_height > height:
-            # squeeze stack
+            # compact stack
             n = num_face_down / self.shrink_face_down + num_face_up
             dy = float(height - self.y - cardh) / n
             if dy < yoffset:
@@ -2277,6 +2278,14 @@ class Spider_AC_Foundation(Spider_SS_Foundation):
         return isAlternateColorSequence(cards, self.cap.mod, self.cap.dir)
 
 
+class Spider_RK_Foundation(Spider_SS_Foundation):
+    def acceptsCards(self, from_stack, cards):
+        if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
+            return False
+        # now check the cards
+        return isRankSequence(cards, self.cap.mod, self.cap.dir)
+
+
 
 # /***********************************************************************
 # // Abstract classes for row stacks.
diff --git a/pysollib/wizardutil.py b/pysollib/wizardutil.py
index c36585e2..3eee3bf6 100644
--- a/pysollib/wizardutil.py
+++ b/pysollib/wizardutil.py
@@ -105,14 +105,14 @@ LayoutType = WizSetting(
     var_name = 'layout',
     )
 TalonType = WizSetting(
-    values_map = ((n_('Opening deal'),          InitialDealTalonStack),
+    values_map = ((n_('Deal all cards at the beginning'), InitialDealTalonStack),
                   (n_('Deal to waste'),         WasteTalonStack),
                   (n_('Deal to tableau'),       DealRowRedealTalonStack),
                   (n_('Deal to reserves'),      DealReserveRedealTalonStack),
                   (n_('Spider'),                SpiderTalonStack),
                   (n_('Grounds for a Divorce'), GroundsForADivorceTalonStack),
                   ),
-    default = n_('Opening deal'),
+    default = n_('Deal all cards at the beginning'),
     label = _('Type:'),
     var_name = 'talon',
     )