diff --git a/pysollib/game.py b/pysollib/game.py
index ca114020..0d7dec48 100644
--- a/pysollib/game.py
+++ b/pysollib/game.py
@@ -1006,7 +1006,7 @@ class Game:
 
     def areYouSure(self, title=None, text=None, confirm=-1, default=0):
         if self.preview:
-            return 1
+            return True
         if confirm < 0:
             confirm = self.app.opt.confirm
         if confirm:
@@ -1017,8 +1017,8 @@ class Game:
                                  bitmap="question",
                                  strings=(_("&OK"), _("&Cancel")))
             if d.status != 0 or d.button != 0:
-                return 0
-        return 1
+                return False
+        return True
 
     def notYetImplemented(self):
         # don't used
@@ -1166,15 +1166,18 @@ class Game:
             shrink_dy = 0
         elif dest_x == 0:
             # move to top/bottom waste
-            return False
-            ascent_dx, ascent_dy = 0, 0
-##             min_size = h/10
-##             shrink_dx = 0
-##             shrink_dy = (h-min_size) / (frames-1)
-            min_size = w/10
-            shrink_dx = (w-min_size) / (frames-1)
-            shrink_dy = 0
-
+            if 0:
+                ascent_dx, ascent_dy = 0, h/10.0/frames
+                min_size = w/10
+                shrink_dx = (w-min_size) / (frames-1)
+                shrink_dy = 0
+            elif 0:
+                ascent_dx, ascent_dy = 0, 0
+                min_size = h/10
+                shrink_dx = 0
+                shrink_dy = (h-min_size) / (frames-1)
+            else:
+                return False
         else:
             # dest_x != 0 and dest_y != 0
             return False
@@ -1564,7 +1567,7 @@ class Game:
 
     # can we save outself ?
     def canSaveGame(self):
-        return 1
+        return True
     # can we load this game ?
     def canLoadGame(self, version_tuple, game_version):
         return self.GAME_VERSION == game_version
@@ -1574,7 +1577,7 @@ class Game:
 
     # can we undo/redo ?
     def canUndo(self):
-        return 1
+        return True
     def canRedo(self):
         return self.canUndo()
 
@@ -2012,7 +2015,7 @@ Congratulations, you did it !
     #
 
     def shallHighlightMatch(self, stack1, card1, stack2, card2):
-        return 0
+        return False
 
     def _shallHighlightMatch_AC(self, stack1, card1, stack2, card2):
         # by alternate color
@@ -2108,10 +2111,10 @@ Congratulations, you did it !
         # Update the balance unless this is a loaded game or
         # a manually selected game number.
         if self.gstats.loaded:
-            return 0
+            return False
         if self.random.origin == self.random.ORIGIN_SELECTED:
-            return 0
-        return 1
+            return False
+        return True
 
     def getGameBalance(self):
         return 0
diff --git a/pysollib/games/acesup.py b/pysollib/games/acesup.py
index a7b859c2..7d5601bb 100644
--- a/pysollib/games/acesup.py
+++ b/pysollib/games/acesup.py
@@ -52,20 +52,20 @@ from montecarlo import MonteCarlo_RowStack
 class AcesUp_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         c = cards[0]
         for s in self.game.s.rows:
             if s is not from_stack and s.cards and s.cards[-1].suit == c.suit:
                 if s.cards[-1].rank > c.rank or s.cards[-1].rank == ACE:
                     # found a higher rank or an Ace on the row stacks
                     return c.rank != ACE
-        return 0
+        return False
 
 
 class AcesUp_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         return len(self.cards) == 0
 
     clickHandler = BasicRowStack.doubleclickHandler
@@ -121,11 +121,11 @@ class AcesUp(Game):
 
     def isGameWon(self):
         if len(self.s.foundations[0].cards) != 48:
-            return 0
+            return False
         for s in self.s.rows:
             if len(s.cards) != 1 or s.cards[0].rank != ACE:
-                return 0
-        return 1
+                return False
+        return True
 
     def getAutoStacks(self, event=None):
         if event is None:
@@ -168,7 +168,7 @@ class PerpetualMotion_Talon(DealRowTalonStack):
     def canDealCards(self):
         ## FIXME: this is to avoid loops in the demo
         if self.game.demo and self.game.moves.index >= 500:
-            return 0
+            return False
         return not self.game.isGameWon()
 
     def dealCards(self, sound=0):
@@ -195,7 +195,7 @@ class PerpetualMotion_Talon(DealRowTalonStack):
 class PerpetualMotion_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         return isRankSequence(cards, dir=0)
 
 
diff --git a/pysollib/games/auldlangsyne.py b/pysollib/games/auldlangsyne.py
index 56dc23cd..8ce23eb6 100644
--- a/pysollib/games/auldlangsyne.py
+++ b/pysollib/games/auldlangsyne.py
@@ -124,7 +124,7 @@ class AuldLangSyne(TamOShanter):
 class Strategy_Foundation(SS_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # we only accept cards if there are no cards in the talon
         return len(self.game.s.talon.cards) == 0
 
@@ -132,13 +132,13 @@ class Strategy_Foundation(SS_FoundationStack):
 class Strategy_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Talon
         return from_stack is self.game.s.talon and len(cards) == 1
 
     def canMoveCards(self, cards):
         if self.game.s.talon.cards:
-            return 0
+            return False
         return BasicRowStack.canMoveCards(self, cards)
 
     def clickHandler(self, event):
@@ -233,7 +233,7 @@ class StrategyPlus(Strategy):
 class Interregnum_Foundation(RK_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not RK_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if len(self.cards) == 12:
             # the final card must come from the reserve above the foundation
             return from_stack.id == self.id - 8
@@ -379,7 +379,7 @@ class Primrose(Interregnum):
 class Colorado_RowStack(OpenStack):
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Waste
         return from_stack is self.game.s.waste and len(cards) == 1
 
@@ -555,7 +555,7 @@ class DoubleAcquaintance(AuldLangSyne):
 class Formic_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         return ((self.cards[-1].rank+1) % 13 == cards[0].rank or
                 (self.cards[-1].rank-1) % 13 == cards[0].rank)
@@ -610,7 +610,8 @@ class Formic(TamOShanter):
 registerGame(GameInfo(172, TamOShanter, "Tam O'Shanter",
                       GI.GT_NUMERICA, 1, 0, GI.SL_LUCK))
 registerGame(GameInfo(95, AuldLangSyne, "Auld Lang Syne",
-                      GI.GT_NUMERICA, 1, 0, GI.SL_LUCK))
+                      GI.GT_NUMERICA, 1, 0, GI.SL_LUCK,
+                      altnames=("Patience",) ))
 registerGame(GameInfo(173, Strategy, "Strategy",
                       GI.GT_NUMERICA, 1, 0, GI.SL_SKILL))
 registerGame(GameInfo(123, Interregnum, "Interregnum",
diff --git a/pysollib/games/bakersdozen.py b/pysollib/games/bakersdozen.py
index 6a51593d..9f8de53a 100644
--- a/pysollib/games/bakersdozen.py
+++ b/pysollib/games/bakersdozen.py
@@ -92,7 +92,7 @@ class CastlesInSpain(Game):
 class Martha_RowStack(AC_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not AC_RowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # when empty, only accept a single card
         return self.cards or len(cards) == 1
 
diff --git a/pysollib/games/beleagueredcastle.py b/pysollib/games/beleagueredcastle.py
index 92096693..878cd48b 100644
--- a/pysollib/games/beleagueredcastle.py
+++ b/pysollib/games/beleagueredcastle.py
@@ -390,13 +390,13 @@ class Chessboard_Foundation(SS_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not self.cards:
             if len(cards) != 1 or not cards[0].face_up:
-                return 0
+                return False
             if cards[0].suit != self.cap.base_suit:
-                return 0
+                return False
             for s in self.game.s.foundations:
                 if s.cards:
                     return cards[0].rank == s.cards[0].rank
-            return 1
+            return True
         return SS_FoundationStack.acceptsCards(self, from_stack, cards)
 
 
diff --git a/pysollib/games/bisley.py b/pysollib/games/bisley.py
index 09fbaa2f..8a0b75f2 100644
--- a/pysollib/games/bisley.py
+++ b/pysollib/games/bisley.py
@@ -353,6 +353,63 @@ class BoardPatience(Game):
         p.dump(self.base_card.id)
 
 
+# /***********************************************************************
+# // Cringle
+# ************************************************************************/
+
+class Cringle(Game):
+
+    def createGame(self):
+        # create layout
+        l, s = Layout(self), self.s
+
+        # set window
+        self.setSize(l.XM + 8.5*l.XS, l.YM + 3*l.YS + 14*l.XOFFSET)
+
+        # create stacks
+        x, y, = l.XM, l.YM
+        for i in range(4):
+            s.foundations.append(SS_FoundationStack(x, y, self, suit=i))
+            x += l.XS
+        x += l.XS/2
+        for i in range(4):
+            s.foundations.append(SS_FoundationStack(x, y, self, suit=i,
+                                                    base_rank=KING, dir=-1))
+            x += l.XS
+
+        x, y = l.XM, l.YM+l.YS
+        for j in range(4):
+            s.rows.append(AC_RowStack(x, y, self))
+            x += l.XS
+        x += l.XS/2
+        for j in range(4):
+            s.rows.append(AC_RowStack(x, y, self, dir=1))
+            x += l.XS
+
+        x, y = self.width-l.XS, self.height-l.YS
+        s.talon = WasteTalonStack(x, y, self, max_rounds=1)
+        l.createText(s.talon, 'n')
+        x -= l.XS
+        s.waste = WasteStack(x, y, self)
+        l.createText(s.waste, 'n')
+
+        # define stack-groups
+        l.defaultStackGroups()
+
+
+    def startGame(self):
+        for i in range(4):
+            self.s.talon.dealRow(frames=0)
+        self.startDealSample()
+        self.s.talon.dealRow()
+        self.s.talon.dealCards()
+
+    shallHighlightMatch = Game._shallHighlightMatch_AC
+
+
+
+
+
 # register the game
 registerGame(GameInfo(290, Bisley, "Bisley",
                       GI.GT_1DECK_TYPE | GI.GT_OPEN, 1, 0, GI.SL_MOSTLY_SKILL))
@@ -368,4 +425,6 @@ registerGame(GameInfo(686, HospitalPatience, "Hospital Patience",
                       GI.GT_1DECK_TYPE, 1, -1, GI.SL_MOSTLY_LUCK))
 registerGame(GameInfo(692, BoardPatience, "Board Patience",
                       GI.GT_1DECK_TYPE | GI.GT_OPEN, 1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(747, Cringle, "Cringle",
+                      GI.GT_2DECK_TYPE | GI.GT_ORIGINAL, 2, 0, GI.SL_BALANCED))
 
diff --git a/pysollib/games/braid.py b/pysollib/games/braid.py
index 5d1378da..5eeb6495 100644
--- a/pysollib/games/braid.py
+++ b/pysollib/games/braid.py
@@ -63,9 +63,9 @@ class Braid_Foundation(AbstractFoundationStack):
 
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if not self.cards:
-            return 1
+            return True
         stack_dir = self.game.getFoundationDir()
         if stack_dir == 0:
             card_dir = self.getRankDir(cards=(self.cards[-1], cards[0]))
@@ -106,7 +106,7 @@ class Braid_RowStack(ReserveStack):
 class Braid_ReserveStack(ReserveStack):
     def acceptsCards(self, from_stack, cards):
         if from_stack is self.game.s.braid or from_stack in self.game.s.rows:
-            return 0
+            return False
         return ReserveStack.acceptsCards(self, from_stack, cards)
 
     def getBottomImage(self):
diff --git a/pysollib/games/calculation.py b/pysollib/games/calculation.py
index d2645211..28ed0308 100644
--- a/pysollib/games/calculation.py
+++ b/pysollib/games/calculation.py
@@ -93,7 +93,7 @@ class Calculation_Foundation(BetsyRoss_Foundation):
 class Calculation_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Waste pile
         return from_stack is self.game.s.waste and len(cards) == 1
 
diff --git a/pysollib/games/camelot.py b/pysollib/games/camelot.py
index 16852daf..0e52d2d1 100644
--- a/pysollib/games/camelot.py
+++ b/pysollib/games/camelot.py
@@ -582,7 +582,7 @@ class GrandmammasPatience(Game):
 class DoubleLine_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Waste pile
         return from_stack is self.game.s.waste
 
diff --git a/pysollib/games/canfield.py b/pysollib/games/canfield.py
index ef1ef0e9..d77d427e 100644
--- a/pysollib/games/canfield.py
+++ b/pysollib/games/canfield.py
@@ -67,7 +67,7 @@ class Canfield_AC_RowStack(AC_RowStack):
     def basicAcceptsCards(self, from_stack, cards):
         if from_stack in self.game.s.rows:
             if len(cards) != 1 and len(cards) != len(from_stack.cards):
-                return 0
+                return False
         return AC_RowStack.basicAcceptsCards(self, from_stack, cards)
 
 
@@ -75,7 +75,7 @@ class Canfield_SS_RowStack(SS_RowStack):
     def basicAcceptsCards(self, from_stack, cards):
         if from_stack in self.game.s.rows:
             if len(cards) != 1 and len(cards) != len(from_stack.cards):
-                return 0
+                return False
         return SS_RowStack.basicAcceptsCards(self, from_stack, cards)
 
 
@@ -83,7 +83,7 @@ class Canfield_RK_RowStack(RK_RowStack):
     def basicAcceptsCards(self, from_stack, cards):
         if from_stack in self.game.s.rows:
             if len(cards) != 1 and len(cards) != len(from_stack.cards):
-                return 0
+                return False
         return RK_RowStack.basicAcceptsCards(self, from_stack, cards)
 
 
diff --git a/pysollib/games/doublets.py b/pysollib/games/doublets.py
index a9f2084a..21734152 100644
--- a/pysollib/games/doublets.py
+++ b/pysollib/games/doublets.py
@@ -50,12 +50,12 @@ from pysollib.pysoltk import MfxCanvasText
 class Doublets_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.cards:
             # check the rank
             if (2 * self.cards[-1].rank + 1) % self.cap.mod != cards[0].rank:
-                return 0
-        return 1
+                return False
+        return True
 
 
 class Doublets(Game):
@@ -119,7 +119,7 @@ class Doublets(Game):
 
     def isGameWon(self):
         if self.s.talon.cards or self.s.waste.cards:
-            return 0
+            return False
         return len(self.s.foundations[0].cards) == 48
 
     def fillStack(self, stack):
diff --git a/pysollib/games/eiffeltower.py b/pysollib/games/eiffeltower.py
index 068b7cb1..1586a996 100644
--- a/pysollib/games/eiffeltower.py
+++ b/pysollib/games/eiffeltower.py
@@ -53,7 +53,7 @@ class EiffelTower_RowStack(OpenStack):
 
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         return self.cards[-1].rank + cards[0].rank == 12
 
 
diff --git a/pysollib/games/fan.py b/pysollib/games/fan.py
index 994e2c93..f825fb95 100644
--- a/pysollib/games/fan.py
+++ b/pysollib/games/fan.py
@@ -290,12 +290,12 @@ class ThreeShufflesAndADraw_RowStack(SS_RowStack):
 class ThreeShufflesAndADraw_ReserveStack(ReserveStack):
     def acceptsCards(self, from_stack, cards):
         if not ReserveStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if not from_stack in self.game.s.rows:
-            return 0
+            return False
         if self.game.draw_done or not from_stack._canDrawCard():
-            return 0
-        return 1
+            return False
+        return True
 
     def updateModel(self, undo, flags):
         assert undo == self.game.draw_done
@@ -418,7 +418,7 @@ class Intelligence_ReserveStack(ReserveStack, DealRow_StackMethods):
     dealToStacks = DealRow_StackMethods.dealToStacksOrFoundations
 
     def canFlipCard(self):
-        return 0
+        return False
 
 
 class Intelligence(Fan):
diff --git a/pysollib/games/golf.py b/pysollib/games/golf.py
index ffd1ab16..5929d1b8 100644
--- a/pysollib/games/golf.py
+++ b/pysollib/games/golf.py
@@ -86,7 +86,7 @@ class Golf_Hint(AbstractHint):
 class Golf_Talon(WasteTalonStack):
     def canDealCards(self):
         if not WasteTalonStack.canDealCards(self):
-            return 0
+            return False
         return not self.game.isGameWon()
 
 
@@ -97,13 +97,13 @@ class Golf_Waste(WasteStack):
 
     def acceptsCards(self, from_stack, cards):
         if not WasteStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check cards
         r1, r2 = self.cards[-1].rank, cards[0].rank
         if self.game.getStrictness() == 1:
             # nothing on a King
             if r1 == KING:
-                return 0
+                return False
         return (r1 + 1) % self.cap.mod == r2 or (r2 + 1) % self.cap.mod == r1
 
     def getHelp(self):
@@ -174,8 +174,8 @@ class Golf(Game):
     def isGameWon(self):
         for r in self.s.rows:
             if r.cards:
-                return 0
-        return 1
+                return False
+        return True
 
     shallHighlightMatch = Game._shallHighlightMatch_RK
 
@@ -201,7 +201,7 @@ class DeadKingGolf(Golf):
 
     def shallHighlightMatch(self, stack1, card1, stack2, card2):
         if card1.rank == KING:
-            return 0
+            return False
         return Golf.shallHighlightMatch(self, stack1, card1, stack2, card2)
 
 
@@ -226,8 +226,8 @@ class Elevator_RowStack(Golf_RowStack):
             n = n + 1
             for j in range(i, i+n):
                 if r[j].cards:
-                    return 1
-        return 0
+                    return True
+        return False
 
 
 class Elevator(RelaxedGolf):
@@ -288,12 +288,12 @@ class Escalator(Elevator):
 class BlackHole_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         if self.cards:
             r1, r2 = self.cards[-1].rank, cards[0].rank
             return (r1 + 1) % self.cap.mod == r2 or (r2 + 1) % self.cap.mod == r1
-        return 1
+        return True
     def getHelp(self):
         return _('Foundation. Build up or down regardless of suit.')
 
@@ -380,12 +380,12 @@ class BlackHole(Game):
 class FourLeafClovers_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         if self.cards:
             r1, r2 = self.cards[-1].rank, cards[0].rank
             return (r1 + 1) % self.cap.mod == r2
-        return 1
+        return True
     def getHelp(self):
         return _('Foundation. Build up regardless of suit.')
 
@@ -1003,6 +1003,62 @@ class NapoleonLeavesMoscow(NapoleonTakesMoscow):
         self.s.talon.dealCards()
 
 
+# /***********************************************************************
+# // Flake
+# // Flake (2 decks)
+# ************************************************************************/
+
+from pileon import FourByFour_Hint
+
+class Flake(Game):
+    Hint_Class = FourByFour_Hint #CautiousDefaultHint
+
+    def createGame(self, rows=6, playcards=18):
+        # create layout
+        l, s = Layout(self), self.s
+
+        # set window
+        self.setSize(l.XM + rows*l.XS, l.YM + 2*l.YS + playcards*l.XOFFSET)
+
+        # create stacks
+        x, y, = l.XM, l.YM+l.YS
+        for i in range(rows):
+            s.rows.append(UD_RK_RowStack(x, y, self, mod=13))
+            x += l.XS
+
+        x, y = l.XM + (rows-1)*l.XS/2, l.YM
+        stack = BlackHole_Foundation(x, y, self, max_move=0, suit=ANY_SUIT,
+                                     base_rank=ANY_RANK, dir=0, mod=13,
+                                     max_cards=52*self.gameinfo.decks)
+        s.foundations.append(stack)
+        l.createText(stack, 'ne')
+
+        x, y = l.XM, self.height-l.YS
+        s.talon = InitialDealTalonStack(x, y, self)
+
+        # define stack-groups
+        l.defaultStackGroups()
+
+    def startGame(self):
+        for i in range(7):
+            self.s.talon.dealRow(frames=0)
+        self.startDealSample()
+        self.s.talon.dealRow()
+        self.s.talon.dealRowAvail()
+
+    shallHighlightMatch = Game._shallHighlightMatch_RKW
+
+
+class Flake2Decks(Flake):
+    def createGame(self):
+        Flake.createGame(self, rows=8, playcards=22)
+    def startGame(self):
+        for i in range(12):
+            self.s.talon.dealRow(frames=0)
+        self.startDealSample()
+        self.s.talon.dealRow()
+
+
 # register the game
 registerGame(GameInfo(36, Golf, "Golf",
                       GI.GT_GOLF, 1, 0, GI.SL_BALANCED))
@@ -1044,4 +1100,10 @@ registerGame(GameInfo(733, NapoleonTakesMoscow, "Napoleon Takes Moscow",
                       GI.GT_2DECK_TYPE, 2, 2, GI.SL_BALANCED))
 registerGame(GameInfo(734, NapoleonLeavesMoscow, "Napoleon Leaves Moscow",
                       GI.GT_2DECK_TYPE, 2, 2, GI.SL_BALANCED))
+registerGame(GameInfo(749, Flake, "Flake",
+                      GI.GT_GOLF | GI.GT_OPEN | GI.GT_ORIGINAL,
+                      1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(750, Flake2Decks, "Flake (2 decks)",
+                      GI.GT_GOLF | GI.GT_OPEN | GI.GT_ORIGINAL,
+                      2, 0, GI.SL_MOSTLY_SKILL))
 
diff --git a/pysollib/games/gypsy.py b/pysollib/games/gypsy.py
index c91aba11..bc80925b 100644
--- a/pysollib/games/gypsy.py
+++ b/pysollib/games/gypsy.py
@@ -93,7 +93,7 @@ class Gypsy(Game):
 class Giant_Foundation(SS_FoundationStack):
     def canMoveCards(self, cards):
         if not SS_FoundationStack.canMoveCards(self, cards):
-            return 0
+            return False
         # can only move cards if the Talon is empty
         return len(self.game.s.talon.cards) == 0
 
@@ -166,21 +166,21 @@ class DieKoenigsbergerin(Gypsy):
 class DieRussische_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.cards:
             # check the rank - an ACE equals a Six
             rank = self.cards[-1].rank
             if rank == ACE:
                 rank = 5
             if (rank + self.cap.dir) % self.cap.mod != cards[0].rank:
-                return 0
-        return 1
+                return False
+        return True
 
 
 class DieRussische_RowStack(AC_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not AC_RowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # when empty, only accept a single card
         return self.cards or len(cards) == 1
 
@@ -215,7 +215,7 @@ class DieRussische(Gypsy):
 class MissMilligan_ReserveStack(AC_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not AC_RowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # Note that this reserve stack accepts sequences if both
         # the reserve stack and the Talon are empty.
         return len(self.cards) == 0 and len(self.game.s.talon.cards) == 0
diff --git a/pysollib/games/klondike.py b/pysollib/games/klondike.py
index 39aa1221..c934b4d0 100644
--- a/pysollib/games/klondike.py
+++ b/pysollib/games/klondike.py
@@ -438,7 +438,7 @@ class EightByEight(EightTimesEight):
 class Batsford_ReserveStack(ReserveStack):
     def acceptsCards(self, from_stack, cards):
         if not ReserveStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # must be a King
         return cards[0].rank == KING
     def getHelp(self):
@@ -602,7 +602,7 @@ class Jane_Talon(OpenTalonStack):
     doubleclickHandler = OpenStack.doubleclickHandler
 
     def canFlipCard(self):
-        return 0
+        return False
 
     def canDealCards(self):
         return len(self.cards) >= 2
diff --git a/pysollib/games/larasgame.py b/pysollib/games/larasgame.py
index ebb5e0b0..aafbdda8 100644
--- a/pysollib/games/larasgame.py
+++ b/pysollib/games/larasgame.py
@@ -151,7 +151,7 @@ class LarasGame_Talon(WasteTalonStack):
 
     def canDealCards(self):
         if self.game.demo and self.game.moves.index >= 400:
-            return 0
+            return False
         return (self.cards or (self.round < self.max_rounds and not self.game.isGameWon()))
 
     def updateText(self):
@@ -181,7 +181,7 @@ class LarasGame_Reserve(OpenStack):
 
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         return from_stack in self.game.s.rows
 
     def getBottomImage(self):
diff --git a/pysollib/games/matriarchy.py b/pysollib/games/matriarchy.py
index f2caaeb0..a18da085 100644
--- a/pysollib/games/matriarchy.py
+++ b/pysollib/games/matriarchy.py
@@ -80,7 +80,7 @@ class Matriarchy_Talon(WasteTalonStack):
         if self._updateMaxRounds():
             self.updateText()
         if not self.cards and not self.game.s.waste.cards:
-            return 0
+            return False
         ncards = self.DEAL[self.round-1]
         assert ncards > 0
         return len(self.cards) >= ncards or self.round < self.max_rounds
@@ -222,7 +222,7 @@ class Matriarchy(Game):
 
     def shallHighlightMatch(self, stack1, card1, stack2, card2):
         if card1.rank + card2.rank == QUEEN + KING:
-            return 0
+            return False
         return (card1.suit == card2.suit and
                 ((card1.rank + 1) % 13 == card2.rank or (card2.rank + 1) % 13 == card1.rank))
 
diff --git a/pysollib/games/montana.py b/pysollib/games/montana.py
index 20d3ed86..865b759c 100644
--- a/pysollib/games/montana.py
+++ b/pysollib/games/montana.py
@@ -144,7 +144,7 @@ class Montana_Talon(TalonStack):
 class Montana_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.id % self.game.RSTEP == 0:
             return cards[0].rank == self.game.RBASE
         left = self.game.s.rows[self.id - 1]
@@ -212,13 +212,13 @@ class Montana(Game):
         rows = self.s.rows
         for i in range(0, self.RLEN, self.RSTEP):
             if not rows[i].cards:
-                return 0
+                return False
             suit = rows[i].cards[-1].suit
             for j in range(self.RSTEP - 1):
                 r = rows[i + j]
                 if not r.cards or r.cards[-1].rank != self.RBASE + j or r.cards[-1].suit != suit:
-                    return 0
-        return 1
+                    return False
+        return True
 
     def getHighlightPilesStacks(self):
         return ()
@@ -307,33 +307,33 @@ class RedMoon(BlueMoon):
 class Galary_Hint(Montana_Hint):
     def shallMovePile(self, from_stack, to_stack, pile, rpile):
         if from_stack is to_stack or not to_stack.acceptsCards(from_stack, pile):
-            return 0
+            return False
         # now check for loops
         rr = self.ClonedStack(from_stack, stackcards=rpile)
         if rr.acceptsCards(to_stack, pile):
             # the pile we are going to move could be moved back -
             # this is dangerous as we can create endless loops...
-            return 0
-        return 1
+            return False
+        return True
 
 
 class Galary_RowStack(Montana_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.id % self.game.RSTEP == 0:
             return cards[0].rank == self.game.RBASE
         r = self.game.s.rows
         left = r[self.id - 1]
         if left.cards and left.cards[-1].suit == cards[0].suit \
                and left.cards[-1].rank + 1 == cards[0].rank:
-            return 1
+            return True
         if self.id < len(r)-1:
             right = r[self.id + 1]
             if right.cards and right.cards[-1].suit == cards[0].suit \
                    and right.cards[-1].rank - 1 == cards[0].rank:
-                return 1
-        return 0
+                return True
+        return False
 
 
 class Galary(RedMoon):
@@ -357,7 +357,7 @@ class Moonlight(Montana):
 class Jungle_RowStack(Montana_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.id % self.game.RSTEP == 0:
             return cards[0].rank == self.game.RBASE
         left = self.game.s.rows[self.id - 1]
@@ -376,7 +376,7 @@ class Jungle(BlueMoon):
 class SpacesAndAces_RowStack(Montana_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.id % self.game.RSTEP == 0:
             return cards[0].rank == self.game.RBASE
         left = self.game.s.rows[self.id - 1]
diff --git a/pysollib/games/montecarlo.py b/pysollib/games/montecarlo.py
index 2399c32f..e57e9440 100644
--- a/pysollib/games/montecarlo.py
+++ b/pysollib/games/montecarlo.py
@@ -53,7 +53,7 @@ class MonteCarlo_Hint(DefaultHint):
 
 # /***********************************************************************
 # // Monte Carlo
-# // Monaco
+# // Monte Carlo (2 decks)
 # ************************************************************************/
 
 class MonteCarlo_Talon(TalonStack):
@@ -63,7 +63,7 @@ class MonteCarlo_Talon(TalonStack):
             if not r.cards:
                 free = 1
             elif free:
-                return 1
+                return True
         return free and len(self.cards)
 
     def dealCards(self, sound=0):
@@ -76,10 +76,10 @@ class MonteCarlo_Talon(TalonStack):
 class MonteCarlo_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         if self.cards[-1].rank != cards[0].rank:
-            return 0
+            return False
         # now look if the stacks are neighbours
         return self.game.isNeighbour(from_stack, self)
 
@@ -165,7 +165,7 @@ class MonteCarlo(Game):
 
     def isNeighbour(self, stack1, stack2):
         if not (0 <= stack1.id <= 24 and 0 <= stack2.id <= 24):
-            return 0
+            return False
         column = stack2.id % 5
         diff = stack1.id - stack2.id
         if column == 0:
@@ -181,7 +181,7 @@ class MonteCarlo(Game):
         for r in self.s.rows:
             assert len(r.cards) <= 1
             if not r.cards:
-                free = free + 1
+                free += 1
             elif free > 0:
                 to_stack = self.allstacks[r.id - free]
                 self.moveMove(1, r, to_stack, frames=4, shadow=0)
@@ -192,12 +192,12 @@ class MonteCarlo(Game):
                         break
                     self.flipMove(self.s.talon)
                     self.moveMove(1, self.s.talon, r)
-                    n = n + 1
+                    n += 1
         self.stopSamples()
-        return n
+        return n + free
 
 
-class Monaco(MonteCarlo):
+class MonteCarlo2Decks(MonteCarlo):
     pass
 
 
@@ -216,7 +216,7 @@ class Weddings_Talon(MonteCarlo_Talon):
                 while k >= 5 and not self.game.allstacks[k - 5].cards:
                     k = k - 5
                 if k != r.id:
-                    return 1
+                    return True
         return free and len(self.cards)
 
 
@@ -311,7 +311,7 @@ class SimplePairs(MonteCarlo):
 class Neighbour_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # We accept any King. Pairs will get delivered by _dropPairMove.
         return cards[0].rank == KING
 
@@ -319,10 +319,10 @@ class Neighbour_Foundation(AbstractFoundationStack):
 class Neighbour_RowStack(MonteCarlo_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         if self.cards[-1].rank + cards[0].rank != 11:
-            return 0
+            return False
         # now look if the stacks are neighbours
         return self.game.isNeighbour(from_stack, self)
 
@@ -376,7 +376,7 @@ class Neighbour(MonteCarlo):
 class Fourteen_RowStack(MonteCarlo_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         return self.cards[-1].rank + cards[0].rank == 12
 
@@ -440,7 +440,7 @@ class Fourteen(Game):
 class Nestor_RowStack(MonteCarlo_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check the rank
         return self.cards[-1].rank == cards[0].rank
 
@@ -644,7 +644,7 @@ class DerLetzteMonarch_Foundation(SS_FoundationStack):
             return SS_FoundationStack.acceptsCards(self, from_stack, from_stack.cards)
         #
         if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # We only accept cards from a Reserve. Other cards will get
         # delivered by _handlePairMove.
         return from_stack in self.game.s.reserves
@@ -656,10 +656,10 @@ class DerLetzteMonarch_RowStack(ReserveStack):
 
     def acceptsCards(self, from_stack, cards):
         if not ReserveStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # must be neighbours
         if not self.game.isNeighbour(from_stack, self):
-            return 0
+            return False
         # must be able to move our card to the foundations or reserves
         return self._getDropStack() is not None
 
@@ -767,7 +767,7 @@ class DerLetzteMonarch(Game):
 
     def isNeighbour(self, stack1, stack2):
         if not (0 <= stack1.id <= 51 and 0 <= stack2.id <= 51):
-            return 0
+            return False
         column = stack2.id % 13
         diff = stack1.id - stack2.id
         if column == 0:
@@ -892,7 +892,7 @@ class RightAndLeft(Game):
 registerGame(GameInfo(89, MonteCarlo, "Monte Carlo",
                       GI.GT_PAIRING_TYPE, 1, 0, GI.SL_MOSTLY_LUCK,
                       altnames=("Quilt",) ))
-registerGame(GameInfo(216, Monaco, "Monaco",
+registerGame(GameInfo(216, MonteCarlo2Decks, "Monte Carlo (2 decks)",
                       GI.GT_PAIRING_TYPE, 2, 0, GI.SL_MOSTLY_LUCK))
 registerGame(GameInfo(212, Weddings, "Weddings",
                       GI.GT_PAIRING_TYPE, 1, 0, GI.SL_MOSTLY_LUCK))
diff --git a/pysollib/games/napoleon.py b/pysollib/games/napoleon.py
index 795c1a46..f3da971e 100644
--- a/pysollib/games/napoleon.py
+++ b/pysollib/games/napoleon.py
@@ -67,19 +67,19 @@ class Napoleon_SingleFreeCell(ReserveStack):
     def acceptsCards(self, from_stack, cards):
 ##        if from_stack.id >= 8:
 ##            # from_stack must be a Napoleon_RowStack
-##            return 0
+##            return False
         return ReserveStack.acceptsCards(self, from_stack, cards)
 
     def canMoveCards(self, cards):
         if self.game.s.rows[8].cards and self.game.s.rows[9].cards:
-            return 0
+            return False
         return ReserveStack.canMoveCards(self, cards)
 
 
 class Napoleon_FreeCell(ReserveStack):
     def canMoveCards(self, cards):
         if self.game.s.rows[self.id-2].cards:
-            return 0
+            return False
         return ReserveStack.canMoveCards(self, cards)
 
 
diff --git a/pysollib/games/numerica.py b/pysollib/games/numerica.py
index 819b8146..e1c7dfbc 100644
--- a/pysollib/games/numerica.py
+++ b/pysollib/games/numerica.py
@@ -81,7 +81,7 @@ class Numerica_Hint(DefaultHint):
 class Numerica_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Waste pile
         return from_stack is self.game.s.waste and len(cards) == 1
 
@@ -265,7 +265,7 @@ class PussInTheCorner_Foundation(SS_FoundationStack):
 class PussInTheCorner_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from the Talon
         return from_stack is self.game.s.talon and len(cards) == 1
     def getBottomImage(self):
@@ -476,7 +476,7 @@ class Gnat(Game):
 class Gloaming_RowStack(Numerica_RowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts any one card from reserves
         return from_stack in self.game.s.reserves
 
diff --git a/pysollib/games/osmosis.py b/pysollib/games/osmosis.py
index 8744b37d..be30d1b9 100644
--- a/pysollib/games/osmosis.py
+++ b/pysollib/games/osmosis.py
@@ -49,7 +49,7 @@ from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint
 class Osmosis_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # search foundation with max number of cards
         assert len(cards) == 1
         max_s, max_cards = None, -1
@@ -59,9 +59,9 @@ class Osmosis_Foundation(AbstractFoundationStack):
         # if we have less cards, then rank must match the card in this foundation
         if len(self.cards) < max_cards:
             if cards[0].rank != max_s.cards[len(self.cards)].rank:
-                return 0
+                return False
         #
-        return  1
+        return True
 
     def getHelp(self):
         return _('Foundation. Build in suit regardless of rank.')
diff --git a/pysollib/games/pasdedeux.py b/pysollib/games/pasdedeux.py
index 58efb2a0..7d908c9c 100644
--- a/pysollib/games/pasdedeux.py
+++ b/pysollib/games/pasdedeux.py
@@ -99,21 +99,21 @@ class PasDeDeux_Hint(AbstractHint):
 
 class PasDeDeux_Waste(WasteStack):
     def canFlipCard(self):
-        return 0
+        return False
 
 
 class PasDeDeux_RowStack(ReserveStack):
     def canMoveCards(self, cards):
         if not ReserveStack.canMoveCards(self, cards):
-            return 0
+            return False
         if not self.game.s.waste.cards:
-            return 0
+            return False
         c = self.game.s.waste.cards[-1]
         return c.face_up and cards[0].suit == c.suit and cards[0].rank == c.rank
 
     def acceptsCards(self, from_stack, cards):
         if not ReserveStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # must be neighbours
         return self.game.isNeighbour(from_stack, self)
 
@@ -204,11 +204,11 @@ class PasDeDeux(Game):
     def isGameWon(self):
         for r in self.s.rows:
             if len(r.cards) != 1:
-                return 0
+                return False
             c = r.cards[-1]
             if c.suit != r.id / 13 or c.rank != r.id % 13:
-                return 0
-        return 1
+                return False
+        return True
 
     #
     # game extras
diff --git a/pysollib/games/picturegallery.py b/pysollib/games/picturegallery.py
index 81227b28..8257e04e 100644
--- a/pysollib/games/picturegallery.py
+++ b/pysollib/games/picturegallery.py
@@ -160,11 +160,11 @@ class PictureGallery_TableauStack(SS_RowStack):
 
     def acceptsCards(self, from_stack, cards):
         if not SS_RowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check that the base card is correct
         if self.cards and self.cards[0].rank != self.cap.base_rank:
-            return 0
-        return 1
+            return False
+        return True
 
     def getBottomImage(self):
         return self.game.app.images.getLetter(self.cap.base_rank)
@@ -173,11 +173,11 @@ class PictureGallery_TableauStack(SS_RowStack):
 class PictureGallery_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # check
         if self.cards or self.game.s.talon.cards:
-            return 0
-        return 1
+            return False
+        return True
 
     def getBottomImage(self):
         return self.game.app.images.getTalonBottom()
@@ -263,11 +263,11 @@ class PictureGallery(Game):
 
     def isGameWon(self):
         if len(self.s.foundations[0].cards) != 8:
-            return 0
+            return False
         for stack in self.s.tableaux:
             if len(stack.cards) != 4:
-                return 0
-        return 1
+                return False
+        return True
 
     def fillStack(self, stack):
         if self.s.talon.cards:
@@ -276,7 +276,7 @@ class PictureGallery(Game):
 
     def shallHighlightMatch(self, stack1, card1, stack2, card2):
         if card1.rank == ACE or card2.rank == ACE:
-            return 0
+            return False
         return (card1.suit == card2.suit and
                 (card1.rank + 3 == card2.rank or card2.rank + 3 == card1.rank))
 
@@ -364,7 +364,7 @@ class GreatWheel(PictureGallery):
 
     def shallHighlightMatch(self, stack1, card1, stack2, card2):
         if card1.rank == ACE or card2.rank == ACE:
-            return 0
+            return False
         return (card1.suit == card2.suit and
                 (card1.rank + 2 == card2.rank or card2.rank + 2 == card1.rank))
 
diff --git a/pysollib/games/pyramid.py b/pysollib/games/pyramid.py
index 52738de8..5ab14c8a 100644
--- a/pysollib/games/pyramid.py
+++ b/pysollib/games/pyramid.py
@@ -62,9 +62,9 @@ class Pyramid_Hint(DefaultHint):
 class Pyramid_StackMethods:
     def acceptsCards(self, from_stack, cards):
         if self.basicIsBlocked():
-            return 0
+            return False
         if from_stack is self or not self.cards or len(cards) != 1:
-            return 0
+            return False
         c = self.cards[-1]
         return c.face_up and cards[0].face_up and cards[0].rank + c.rank == 11
 
@@ -105,7 +105,7 @@ class Pyramid_StackMethods:
 class Pyramid_Foundation(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # We accept any King. Pairs will get delivered by _dropPairMove.
         return cards[0].rank == KING
 
@@ -119,7 +119,7 @@ class Pyramid_Talon(Pyramid_StackMethods, FaceUpWasteTalonStack):
 
     def canDealCards(self):
         if not FaceUpWasteTalonStack.canDealCards(self):
-            return 0
+            return False
         return not self.game.isGameWon()
 
     def canDropCards(self, stacks):
@@ -428,7 +428,7 @@ class Elevens_RowStack(Giza_Reserve):
 
     def acceptsCards(self, from_stack, cards):
         #if self.basicIsBlocked():
-        #    return 0
+        #    return False
         if from_stack is self or not self.cards or len(cards) != 1:
             return False
         c = self.cards[-1]
@@ -932,9 +932,9 @@ class Apophis(Pharaohs):
 class Cheops_StackMethods(Pyramid_StackMethods):
     def acceptsCards(self, from_stack, cards):
         if self.basicIsBlocked():
-            return 0
+            return False
         if from_stack is self or not self.cards or len(cards) != 1:
-            return 0
+            return False
         c = self.cards[-1]
         return (c.face_up and cards[0].face_up and
                 abs(cards[0].rank-c.rank) in (0,1))
@@ -970,7 +970,7 @@ class Cheops(Pyramid):
 class Exit_RowStack(Elevens_RowStack):
     def acceptsCards(self, from_stack, cards):
         #if self.basicIsBlocked():
-        #    return 0
+        #    return False
         if from_stack is self or not self.cards or len(cards) != 1:
             return False
         c1 = self.cards[-1]
diff --git a/pysollib/games/royalcotillion.py b/pysollib/games/royalcotillion.py
index 39e8d0b9..38278957 100644
--- a/pysollib/games/royalcotillion.py
+++ b/pysollib/games/royalcotillion.py
@@ -1174,6 +1174,124 @@ class TheRedAndTheBlack(Game):
     shallHighlightMatch = Game._shallHighlightMatch_AC
 
 
+# /***********************************************************************
+# // Twilight Zone
+# ************************************************************************/
+
+class TwilightZone_Foundation(AC_FoundationStack):
+    def acceptsCards(self, from_stack, cards):
+        if not AC_FoundationStack.acceptsCards(self, from_stack, cards):
+            return False
+        if from_stack is self.game.s.waste or \
+               from_stack in self.game.s.reserves:
+            return False
+        return True
+
+
+class TwilightZone_Talon(OpenTalonStack, WasteTalonStack):
+    rightclickHandler = OpenStack.rightclickHandler
+    doubleclickHandler = OpenStack.doubleclickHandler
+
+    def prepareStack(self):
+        OpenTalonStack.prepareStack(self)
+        self.waste = self.game.s.waste
+
+    canDealCards = WasteTalonStack.canDealCards
+    dealCards = WasteTalonStack.dealCards
+
+
+class TwilightZone_RowStack(AC_RowStack):
+    def acceptsCards(self, from_stack, cards):
+        if not AC_RowStack.acceptsCards(self, from_stack, cards):
+            return False
+        if from_stack is self.game.s.waste:
+            return False
+        return True
+
+
+class TwilightZone_Waste(WasteStack):
+    def acceptsCards(self, from_stack, cards):
+        if not WasteStack.acceptsCards(self, from_stack, cards):
+            return False
+        return from_stack is self.game.s.talon
+
+
+class TwilightZone(Game):
+    Hint_Class = CautiousDefaultHint
+
+    def createGame(self):
+
+        # create layout
+        l, s = Layout(self), self.s
+
+        # set window
+        self.setSize(l.XM+7*l.XS, l.YM+5*l.YS)
+
+        # create stacks
+        y = l.YM
+        for i in range(2):
+            x = l.XM+3*l.XS
+            for j in range(4):
+                s.foundations.append(TwilightZone_Foundation(x, y, self,
+                                                             suit=j))
+                x += l.XS
+            y += l.YS
+
+        x, y = l.XM+3*l.XS, l.YM+2*l.YS
+        for i in range(4):
+            stack = TwilightZone_RowStack(x, y, self, max_move=1)
+            stack.CARD_YOFFSET = 0
+            s.rows.append(stack)
+            x += l.XS
+
+        x, y = l.XM+3*l.XS, l.YM+4*l.YS
+        for i in range(4):
+            s.reserves.append(OpenStack(x, y, self))
+            x += l.XS
+
+
+        x, y = l.XM, l.YM
+        s.talon = TwilightZone_Talon(x, y, self, max_move=1, max_rounds=2)
+        l.createText(s.talon, 's')
+        x += l.XS
+        s.waste = TwilightZone_Waste(x, y, self, max_accept=1)
+        l.createText(s.waste, 's')
+
+
+        # define stack-groups
+        l.defaultStackGroups()
+        self.sg.dropstacks.append(s.talon)
+        self.sg.openstacks.append(s.waste)
+
+
+    def startGame(self):
+        self.startDealSample()
+        self.s.talon.dealRow()
+        self.s.talon.dealRow(rows=self.s.reserves)
+        self.s.talon.fillStack()
+
+    def fillStack(self, stack):
+        if not stack.cards:
+            old_state = self.enterState(self.S_FILL)
+            if stack in self.s.rows:
+                i = list(self.s.rows).index(stack)
+                from_stack = self.s.reserves[i]
+                if from_stack.cards:
+                    from_stack.moveMove(1, stack)
+            elif stack in self.s.reserves:
+                from_stack = self.s.waste
+                if not from_stack.cards:
+                    from_stack = self.s.talon
+                if from_stack.cards:
+                    from_stack.moveMove(1, stack)
+            self.leaveState(old_state)
+
+    def _autoDeal(self, sound=1):
+        return 0
+
+    shallHighlightMatch = Game._shallHighlightMatch_AC
+
+
 
 # register the game
 registerGame(GameInfo(54, RoyalCotillion, "Royal Cotillion",
@@ -1216,4 +1334,6 @@ registerGame(GameInfo(693, Colonel, "Colonel",
                       GI.GT_2DECK_TYPE, 2, 0, GI.SL_MOSTLY_SKILL))
 registerGame(GameInfo(695, TheRedAndTheBlack, "The Red and the Black",
                       GI.GT_2DECK_TYPE, 2, 0, GI.SL_BALANCED))
+registerGame(GameInfo(748, TwilightZone, "Twilight Zone",
+                      GI.GT_2DECK_TYPE, 2, 1, GI.SL_BALANCED))
 
diff --git a/pysollib/games/siebenbisas.py b/pysollib/games/siebenbisas.py
index 9b4320be..eea36462 100644
--- a/pysollib/games/siebenbisas.py
+++ b/pysollib/games/siebenbisas.py
@@ -79,31 +79,31 @@ class SiebenBisAs_Hint(CautiousDefaultHint):
 class SiebenBisAs_Foundation(SS_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts only a card from a rowstack with an empty
         # left neighbour
         if not from_stack in self.game.s.rows:
-            return 0
+            return False
         if from_stack.id % 10 == 0:
-            return 0
+            return False
         return len(self.game.s.rows[from_stack.id - 1].cards) == 0
 
 
 class SiebenBisAs_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.id % 10 != 0:
             # left neighbour
             s = self.game.s.rows[self.id - 1]
             if s.cards and s.cards[-1].suit == cards[0].suit and (s.cards[-1].rank + 1) % 13 == cards[0].rank:
-                return 1
+                return True
         if self.id % 10 != 10 - 1:
             # right neighbour
             s = self.game.s.rows[self.id + 1]
             if s.cards and s.cards[-1].suit == cards[0].suit and (s.cards[-1].rank - 1) % 13 == cards[0].rank:
-                return 1
-        return 0
+                return True
+        return False
 
     # bottom to get events for an empty stack
     ###prepareBottom = Stack.prepareInvisibleBottom
@@ -164,33 +164,33 @@ class SiebenBisAs(Game):
 class Maze_Hint(SiebenBisAs_Hint):
     def shallMovePile(self, from_stack, to_stack, pile, rpile):
         if from_stack is to_stack or not to_stack.acceptsCards(from_stack, pile):
-            return 0
+            return False
         # now check for loops
         rr = self.ClonedStack(from_stack, stackcards=rpile)
         if rr.acceptsCards(to_stack, pile):
             # the pile we are going to move could be moved back -
             # this is dangerous as we can create endless loops...
-            return 0
-        return 1
+            return False
+        return True
 
 
 class Maze_RowStack(BasicRowStack):
     def acceptsCards(self, from_stack, cards):
         if not BasicRowStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # left neighbour
         s = self.game.s.rows[(self.id - 1) % 54]
         if s.cards:
             if s.cards[-1].suit == cards[0].suit and s.cards[-1].rank + 1 == cards[0].rank:
-                return 1
+                return True
             if s.cards[-1].rank == QUEEN and cards[0].rank == ACE:
-                return 1
+                return True
         # right neighbour
         s = self.game.s.rows[(self.id + 1) % 54]
         if s.cards:
             if s.cards[-1].suit == cards[0].suit and s.cards[-1].rank - 1 == cards[0].rank:
-                return 1
-        return 0
+                return True
+        return False
 
     # bottom to get events for an empty stack
     prepareBottom = Stack.prepareInvisibleBottom
@@ -250,7 +250,7 @@ class Maze(Game):
     def isGameWon(self):
         rows = filter(lambda s: s.cards, self.s.rows)
         if len(rows) != 48:
-            return 0            # no cards dealt yet
+            return False            # no cards dealt yet
         i = 0
         if 1:
             # allow wrap around: search first Ace
@@ -263,13 +263,13 @@ class Maze(Game):
             r2 = rows[j+11]
             if (r2.id - r1.id) % 54 != 11:
                 # found a space within the sequence
-                return 0
+                return False
             if r1.cards[-1].rank != ACE or r2.cards[-1].rank != QUEEN:
-                return 0
+                return False
             pile = getPileFromStacks(rows[j:j+12])
             if not pile or not isSameSuitSequence(pile, dir=1):
-                return 0
-        return 1
+                return False
+        return True
 
 
 # register the game
diff --git a/pysollib/games/spider.py b/pysollib/games/spider.py
index 876e3c2f..f0c9d821 100644
--- a/pysollib/games/spider.py
+++ b/pysollib/games/spider.py
@@ -59,22 +59,22 @@ class Spider_Hint(SpiderType_Hint):
 
     def shallMovePile(self, r, t, pile, rpile):
         if not SpiderType_Hint.shallMovePile(self, r, t, pile, rpile):
-            return 0
+            return False
         rr = self.ClonedStack(r, stackcards=rpile)
         if rr.acceptsCards(t, pile):
             # the pile we are going to move from r to t
             # could be moved back from t ro r - this is
             # dangerous for as we can create loops...
             if len(t.cards) == 0:
-                return 1
+                return True
             if pile[0].suit == t.cards[-1].suit:
                 # The pile will get moved onto the correct suit
                 if len(rpile) == 0 or pile[0].suit != rpile[-1].suit:
-                    return 1
+                    return True
             if self.level <= 1 and len(rpile) == 0:
-                return 1
-            return 0
-        return 1
+                return True
+            return False
+        return True
 
 
 # /***********************************************************************
@@ -150,12 +150,12 @@ class RelaxedSpider(Game):
 class Spider(RelaxedSpider):
     def canDealCards(self):
         if not RelaxedSpider.canDealCards(self):
-            return 0
+            return False
         # no row may be empty
         for r in self.s.rows:
             if not r.cards:
-                return 0
-        return 1
+                return False
+        return True
 
 class Spider1Suit(Spider):
     pass
diff --git a/pysollib/games/terrace.py b/pysollib/games/terrace.py
index 6b1c8aeb..804da312 100644
--- a/pysollib/games/terrace.py
+++ b/pysollib/games/terrace.py
@@ -50,7 +50,7 @@ from pysollib.hint import AbstractHint, DefaultHint, CautiousDefaultHint
 class Terrace_Talon(WasteTalonStack):
     def canDealCards(self):
         if self.game.getState() == 0:
-            return 0
+            return False
         return WasteTalonStack.canDealCards(self)
 
 
@@ -62,9 +62,9 @@ class Terrace_AC_Foundation(AC_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if self.game.getState() == 0:
             if len(cards) != 1 or not cards[0].face_up:
-                return 0
+                return False
             if cards[0].suit != self.cap.base_suit:
-                return 0
+                return False
             return from_stack in self.game.s.rows
         return AC_FoundationStack.acceptsCards(self, from_stack, cards)
 
@@ -77,9 +77,9 @@ class Terrace_SS_Foundation(SS_FoundationStack):
     def acceptsCards(self, from_stack, cards):
         if self.game.getState() == 0:
             if len(cards) != 1 or not cards[0].face_up:
-                return 0
+                return False
             if cards[0].suit != self.cap.base_suit:
-                return 0
+                return False
             return from_stack in self.game.s.rows
         return SS_FoundationStack.acceptsCards(self, from_stack, cards)
 
@@ -91,9 +91,9 @@ class Terrace_RowStack(AC_RowStack):
 
     def acceptsCards(self, from_stack, cards):
         if self.game.getState() == 0:
-            return 0
+            return False
         if from_stack in self.game.s.reserves:
-            return 0
+            return False
         return AC_RowStack.acceptsCards(self, from_stack, cards)
 
     def moveMove(self, ncards, to_stack, frames=-1, shadow=-1):
diff --git a/pysollib/games/threepeaks.py b/pysollib/games/threepeaks.py
index 2d0d9a65..1a4315a6 100644
--- a/pysollib/games/threepeaks.py
+++ b/pysollib/games/threepeaks.py
@@ -88,30 +88,10 @@ class ThreePeaks_RowStack(OpenStack):
             i = i + step[i]
             for j in range(2):
                 if r[i + j].cards:
-                    return 1
-        return 0
+                    return True
+        return False
 
-    def clickHandler(self, event):
-        if self.basicIsBlocked():
-            # remove selection
-            self._stopDrag()
-            return 1
-        game = self.game
-        #print self.cards, game.s.waste.cards
-        card, waste = self.cards[0], game.s.waste.cards[-1]
-        mod, ranks, trumps = [], len(game.gameinfo.ranks), len(game.gameinfo.trumps)
-        mod.append([ranks, trumps][(card.suit == len(game.gameinfo.suits))])
-        mod.append([ranks, trumps][(waste.suit == len(game.gameinfo.suits))])
-        if ((card.rank + 1) % mod[0] == waste.rank
-            or (card.rank - 1) % mod[1] == waste.rank
-            or (waste.rank + 1) % mod[1] == card.rank
-            or (waste.rank - 1) % mod[0] == card.rank):
-            game.sequence = game.sequence + 1
-            self._stopDrag()
-            self.game.playSample("autodrop", priority=20)
-            self.playMoveMove(1, game.s.waste, frames=-1, sound=0)
-            game.updateText()
-        return 1
+    clickHandler = OpenStack.doubleclickHandler
 
 
 # /***********************************************************************
@@ -206,12 +186,12 @@ class ThreePeaks(Game):
     def isGameWon(self):
         for r in self.s.rows:
             if r.cards:
-                return 0
+                return False
         if self.sequence:
             self.hand_score = self.hand_score + len(self.s.talon.cards) * 10
         self.updateText()
         self.sequence = 0
-        return 1
+        return True
 
     def updateText(self):
         if self.preview > 1 or not self.texts.info or not self.SCORING:
@@ -224,7 +204,7 @@ class ThreePeaks(Game):
         if stack1 == self.s.waste or stack2 == self.s.waste:
             return ((card1.rank + 1) % 13 == card2.rank
                     or (card1.rank - 1) % 13 == card2.rank)
-        return 0
+        return False
 
     def getHandScore(self):
         score, i = self.hand_score, 1
@@ -245,7 +225,7 @@ class ThreePeaks(Game):
         return score
 
     def canUndo(self):
-        return 0
+        return False
 
     def _restoreGameHook(self, game):
         self.game_score = game.loadinfo.game_score
@@ -278,7 +258,7 @@ class ThreePeaksNoScore(ThreePeaks):
     SCORING = 0
 
     def canUndo(self):
-        return 1
+        return True
 
 
 
diff --git a/pysollib/games/unionsquare.py b/pysollib/games/unionsquare.py
index 5ba4afb9..10d90541 100644
--- a/pysollib/games/unionsquare.py
+++ b/pysollib/games/unionsquare.py
@@ -66,11 +66,11 @@ class UnionSquare_RowStack(OpenStack):
 
     def acceptsCards(self, from_stack, cards):
         if not OpenStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if not self.cards:
-            return 1
+            return True
         if cards[0].suit != self.cards[0].suit:
-            return 0
+            return False
         if len(self.cards) == 1:
             card_dir = cards[0].rank - self.cards[-1].rank
             return card_dir == 1 or card_dir == -1
diff --git a/pysollib/games/windmill.py b/pysollib/games/windmill.py
index 4342a3aa..43d30a09 100644
--- a/pysollib/games/windmill.py
+++ b/pysollib/games/windmill.py
@@ -59,7 +59,7 @@ class Windmill_Foundation(RK_FoundationStack):
 class Windmill_RowStack(ReserveStack):
     def acceptsCards(self, from_stack, cards):
         if not ReserveStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # this stack accepts one card from the Waste pile
         return from_stack is self.game.s.waste
 
diff --git a/pysollib/stack.py b/pysollib/stack.py
index d7456887..3f6276b2 100644
--- a/pysollib/stack.py
+++ b/pysollib/stack.py
@@ -130,74 +130,74 @@ from settings import DEBUG
 
 # check that all cards are face-up
 def cardsFaceUp(cards):
-    if not cards: return 0
+    if not cards: return False
     for c in cards:
         if not c.face_up:
-            return 0
-    return 1
+            return False
+    return True
 
 # check that all cards are face-down
 def cardsFaceDown(cards):
-    if not cards: return 0
+    if not cards: return False
     for c in cards:
         if c.face_up:
-            return 0
-    return 1
+            return False
+    return True
 
 # check that cards are face-up and build down by rank
 def isRankSequence(cards, mod=8192, dir=-1):
     if not cardsFaceUp(cards):
-        return 0
+        return False
     c1 = cards[0]
     for c2 in cards[1:]:
         if (c1.rank + dir) % mod != c2.rank:
-            return 0
+            return False
         c1 = c2
-    return 1
+    return True
 
 # check that cards are face-up and build down by alternate color
 def isAlternateColorSequence(cards, mod=8192, dir=-1):
     if not cardsFaceUp(cards):
-        return 0
+        return False
     c1 = cards[0]
     for c2 in cards[1:]:
         if (c1.rank + dir) % mod != c2.rank or c1.color == c2.color:
-            return 0
+            return False
         c1 = c2
-    return 1
+    return True
 
 # check that cards are face-up and build down by same color
 def isSameColorSequence(cards, mod=8192, dir=-1):
     if not cardsFaceUp(cards):
-        return 0
+        return False
     c1 = cards[0]
     for c2 in cards[1:]:
         if (c1.rank + dir) % mod != c2.rank or c1.color != c2.color:
-            return 0
+            return False
         c1 = c2
-    return 1
+    return True
 
 # check that cards are face-up and build down by same suit
 def isSameSuitSequence(cards, mod=8192, dir=-1):
     if not cardsFaceUp(cards):
-        return 0
+        return False
     c1 = cards[0]
     for c2 in cards[1:]:
         if (c1.rank + dir) % mod != c2.rank or c1.suit != c2.suit:
-            return 0
+            return False
         c1 = c2
-    return 1
+    return True
 
 # check that cards are face-up and build down by any suit but own
 def isAnySuitButOwnSequence(cards, mod=8192, dir=-1):
     if not cardsFaceUp(cards):
-        return 0
+        return False
     c1 = cards[0]
     for c2 in cards[1:]:
         if (c1.rank + dir) % mod != c2.rank or c1.suit == c2.suit:
-            return 0
+            return False
         c1 = c2
-    return 1
+    return True
 
 def getNumberOfFreeStacks(stacks):
     return len(filter(lambda s: not s.cards, stacks))
@@ -598,28 +598,28 @@ class Stack:
 
     def basicIsBlocked(self):
         # Check if the stack is blocked (e.g. Pyramid or Mahjongg)
-        return 0
+        return False
 
     def basicAcceptsCards(self, from_stack, cards):
         # Check that the limits are ok and that the cards are face up
         if from_stack is self or self.basicIsBlocked():
-            return 0
+            return False
         cap = self.cap
         l = len(cards)
         if l < cap.min_accept or l > cap.max_accept:
-            return 0
+            return False
         l = l + len(self.cards)
         if l > cap.max_cards:       # note: we don't check cap.min_cards here
-            return 0
+            return False
         for c in cards:
             if not c.face_up:
-                return 0
+                return False
             if cap.suit >= 0 and c.suit != cap.suit:
-                return 0
+                return False
             if cap.color >= 0 and c.color != cap.color:
-                return 0
+                return False
             if cap.rank >= 0 and c.rank != cap.rank:
-                return 0
+                return False
         if self.cards:
             # top card of our stack must be face up
             return self.cards[-1].face_up
@@ -627,24 +627,24 @@ class Stack:
             # check required base
             c = cards[0]
             if cap.base_suit >= 0 and c.suit != cap.base_suit:
-                return 0
+                return False
             if cap.base_color >= 0 and c.color != cap.base_color:
-                return 0
+                return False
             if cap.base_rank >= 0 and c.rank != cap.base_rank:
-                return 0
-            return 1
+                return False
+            return True
 
     def basicCanMoveCards(self, cards):
         # Check that the limits are ok and the cards are face up
         if self.basicIsBlocked():
-            return 0
+            return False
         cap = self.cap
         l = len(cards)
         if l < cap.min_move or l > cap.max_move:
-            return 0
+            return False
         l = len(self.cards) - l
         if l < cap.min_cards:       # note: we don't check cap.max_cards here
-            return 0
+            return False
         return cardsFaceUp(cards)
 
 
@@ -654,15 +654,15 @@ class Stack:
 
     def acceptsCards(self, from_stack, cards):
         # Do we accept receiving `cards' from `from_stack' ?
-        return 0
+        return False
 
     def canMoveCards(self, cards):
         # Can we move these cards when assuming they are our top-cards ?
-        return 0
+        return False
 
     def canFlipCard(self):
         # Can we flip our top card ?
-        return 0
+        return False
 
     def canDropCards(self, stacks):
         # Can we drop the top cards onto one of the foundation stacks ?
@@ -1917,7 +1917,7 @@ class OpenStack(Stack):
     def canFlipCard(self):
         # default for OpenStack: we can flip the top card
         if self.basicIsBlocked() or not self.cards:
-            return 0
+            return False
         return not self.cards[-1].face_up
 
     def canDropCards(self, stacks):
@@ -2123,12 +2123,12 @@ class AbstractFoundationStack(OpenStack):
 class SS_FoundationStack(AbstractFoundationStack):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.cards:
             # check the rank
             if (self.cards[-1].rank + self.cap.dir) % self.cap.mod != cards[0].rank:
-                return 0
-        return 1
+                return False
+        return True
 
     def getHelp(self):
         if self.cap.dir > 0:   return _('Foundation. Build up by suit.')
@@ -2156,12 +2156,12 @@ class AC_FoundationStack(SS_FoundationStack):
 
     def acceptsCards(self, from_stack, cards):
         if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.cards:
             # check the color
             if cards[0].color == self.cards[-1].color:
-                return 0
-        return 1
+                return False
+        return True
 
     def getHelp(self):
         if self.cap.dir > 0:   return _('Foundation. Build up by alternate color.')
@@ -2177,12 +2177,12 @@ class SC_FoundationStack(SS_FoundationStack):
 
     def acceptsCards(self, from_stack, cards):
         if not SS_FoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         if self.cards:
             # check the color
             if cards[0].color != self.cards[-1].color:
-                return 0
-        return 1
+                return False
+        return True
 
     def getHelp(self):
         if self.cap.dir > 0:   return _('Foundation. Build up by color.')
@@ -2199,7 +2199,7 @@ class Spider_SS_Foundation(AbstractFoundationStack):
 
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # now check the cards
         return isSameSuitSequence(cards, self.cap.mod, self.cap.dir)
 
@@ -2207,7 +2207,7 @@ class Spider_SS_Foundation(AbstractFoundationStack):
 class Spider_AC_Foundation(Spider_SS_Foundation):
     def acceptsCards(self, from_stack, cards):
         if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
-            return 0
+            return False
         # now check the cards
         return isAlternateColorSequence(cards, self.cap.mod, self.cap.dir)
 
@@ -2231,14 +2231,14 @@ class SequenceStack_StackMethods:
 
     def acceptsCards(self, from_stack, cards):
         if not self.basicAcceptsCards(from_stack, cards):
-            return 0
+            return False
         # cards must be an acceptable sequence
         if not self._isAcceptableSequence(cards):
-            return 0
+            return False
         # [topcard + cards] must be an acceptable sequence
         if self.cards and not self._isAcceptableSequence([self.cards[-1]] + cards):
-            return 0
-        return 1
+            return False
+        return True
 
     def canMoveCards(self, cards):
         return self.basicCanMoveCards(cards) and self._isMoveableSequence(cards)
@@ -2388,11 +2388,11 @@ class Yukon_AC_RowStack(BasicRowStack):
 
     def acceptsCards(self, from_stack, cards):
         if not self.basicAcceptsCards(from_stack, cards):
-            return 0
+            return False
         # [topcard + card[0]] must be acceptable
         if self.cards and not self._isSequence(self.cards[-1], cards[0]):
-            return 0
-        return 1
+            return False
+        return True
 
     def getHelp(self):
         if self.cap.dir > 0:   return _('Tableau. Build up by alternate color, can move any face-up cards regardless of sequence.')
@@ -2490,8 +2490,6 @@ class UD_RK_RowStack(SequenceRowStack):
 
 
 # To simplify playing we also consider the number of free rows.
-# Note that this only is legal if the game.s.rows have a
-# cap.base_rank == ANY_RANK.
 # See also the "SuperMove" section in the FreeCell FAQ.
 class SuperMoveStack_StackMethods:
     def _getMaxMove(self, to_stack_ncards):
@@ -2608,8 +2606,8 @@ class WasteTalonStack(TalonStack):
             num_cards = min(len(self.cards), self.num_deal)
             return len(waste.cards) + num_cards <= waste.cap.max_cards
         elif waste.cards and self.round != self.max_rounds:
-            return 1
-        return 0
+            return True
+        return False
 
     def dealCards(self, sound=0, shuffle=False):
         old_state = self.game.enterState(self.game.S_DEAL)
@@ -2652,7 +2650,7 @@ class FaceUpWasteTalonStack(WasteTalonStack):
 
     def fillStack(self):
         if self.canFlipCard():
-            self.game.flipMove(self)
+            self.game.singleFlipMove(self)
         self.game.fillStack(self)
 
     def dealCards(self, sound=0):
@@ -2671,14 +2669,14 @@ class OpenTalonStack(TalonStack, OpenStack):
         TalonStack.__init__(self, x, y, game, **cap)
 
     def canDealCards(self):
-        return 0
+        return False
 
     def canFlipCard(self):
         return len(self.cards) > 0 and not self.cards[-1].face_up
 
     def fillStack(self):
         if self.canFlipCard():
-            self.game.flipMove(self)
+            self.game.singleFlipMove(self)
         self.game.fillStack(self)
 
     def clickHandler(self, event):
diff --git a/pysollib/tile/selectgame.py b/pysollib/tile/selectgame.py
index 492081fb..0caf34ce 100644
--- a/pysollib/tile/selectgame.py
+++ b/pysollib/tile/selectgame.py
@@ -107,7 +107,7 @@ class SelectGameData(SelectDialogTreeData):
             for name, select_func in data:
                 if name is None or not filter(select_func, self.all_games_gi):
                     continue
-                gg.append(SelectGameNode(None, name, select_func))
+                gg.append(SelectGameNode(None, _(name), select_func))
             g.append(gg)
         select_mahjongg_game = lambda gi: gi.si.game_type == GI.GT_MAHJONGG
         gg = None
diff --git a/pysollib/tile/tkwidget.py b/pysollib/tile/tkwidget.py
index a5ad988b..c50d8bc5 100644
--- a/pysollib/tile/tkwidget.py
+++ b/pysollib/tile/tkwidget.py
@@ -44,7 +44,7 @@ __all__ = ['MfxDialog',
            ]
 
 # imports
-import os, time, locale
+import sys, os, time, locale
 import Tkinter
 import Tile
 import tkFont
@@ -320,7 +320,13 @@ class PysolAboutDialog(MfxMessageDialog):
                          width=kw.width)
         msg.pack(fill='both', expand=True)
 
-        font = tkFont.Font(parent, app.getFont('default'))
+        if sys.version_info >= (2, 4):
+            ##font_name = msg.lookup('TLabel', 'font')
+            font_name = 'TkDefaultFont'
+            font = tkFont.Font(parent, name=font_name, exists=True)
+            font = font.copy()
+        else:
+            font = tkFont.Font(parent, app.getFont('default'))
         font.configure(underline=True)
         url_label = Tile.Label(frame, text=kw.url, font=font,
                                foreground='blue', cursor='hand2')
diff --git a/pysollib/tile/toolbar.py b/pysollib/tile/toolbar.py
index 1fbca7cc..9000afdd 100644
--- a/pysollib/tile/toolbar.py
+++ b/pysollib/tile/toolbar.py
@@ -283,7 +283,7 @@ class PysolToolbar(PysolToolbarActions):
         ##color = '#ffffff'
         ##factor = 0.6
         color = '#dedede'
-        factor = 0.75
+        factor = 0.7
         sh = Image.new(dis_im.mode, dis_im.size, color)
         tmp = Image.blend(dis_im, sh, factor)
         dis_im = Image.composite(tmp, im, im)
diff --git a/pysollib/tk/selectgame.py b/pysollib/tk/selectgame.py
index 625e42c5..799684f0 100644
--- a/pysollib/tk/selectgame.py
+++ b/pysollib/tk/selectgame.py
@@ -107,7 +107,7 @@ class SelectGameData(SelectDialogTreeData):
             for name, select_func in data:
                 if name is None or not filter(select_func, self.all_games_gi):
                     continue
-                gg.append(SelectGameNode(None, name, select_func))
+                gg.append(SelectGameNode(None, _(name), select_func))
             g.append(gg)
         select_mahjongg_game = lambda gi: gi.si.game_type == GI.GT_MAHJONGG
         gg = None