Lots of reworking. Completed support for game history, including Turn class. Changed Game API around quite a bit.
     9 /* Begin PBXBuildFile section */
 
    10 		1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
 
    11 		1D60589B0D05DD56006BFB54 /* main-iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main-iPhone.m */; };
 
    12 		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 
    13 		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
 
    14 		2740502B0DEF36DF0006A9EE /* Pop.aiff in Resources */ = {isa = PBXBuildFile; fileRef = 274050290DEF36DF0006A9EE /* Pop.aiff */; };
 
    15 		2740502C0DEF36DF0006A9EE /* Tink.aiff in Resources */ = {isa = PBXBuildFile; fileRef = 2740502A0DEF36DF0006A9EE /* Tink.aiff */; };
 
    16 		279F4B590D85C51700B32DBF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279F4B580D85C51700B32DBF /* AudioToolbox.framework */; };
 
    17 		279F4B5B0D85C51700B32DBF /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 279F4B5A0D85C51700B32DBF /* QuartzCore.framework */; };
 
    18 		279F4B620D85C63000B32DBF /* GGBTextLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F4B610D85C63000B32DBF /* GGBTextLayer.m */; };
 
    19 		279F4B6A0D85CBFC00B32DBF /* iPhoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F4B690D85CBFC00B32DBF /* iPhoneAppDelegate.m */; };
 
    20 		279F4B740D85CDE900B32DBF /* ToolbarAdvanced.icns in Resources */ = {isa = PBXBuildFile; fileRef = 279F4B720D85CDE900B32DBF /* ToolbarAdvanced.icns */; };
 
    21 		279F4C1D0D85D0AF00B32DBF /* X.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 279F4C1C0D85D0AF00B32DBF /* X.tiff */; };
 
    22 		279F4C1F0D85D0CB00B32DBF /* O.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 279F4C1E0D85D0CB00B32DBF /* O.tiff */; };
 
    23 		279F4C740D85D43800B32DBF /* Background.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4C730D85D43800B32DBF /* Background.png */; };
 
    24 		279F4E0A0D860B8800B32DBF /* Green Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4E050D860B8800B32DBF /* Green Ball.png */; };
 
    25 		279F4E0B0D860B8800B32DBF /* Red Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4E060D860B8800B32DBF /* Red Ball.png */; };
 
    26 		279F4E0C0D860B8800B32DBF /* White Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4E070D860B8800B32DBF /* White Ball.png */; };
 
    27 		279F4E0E0D860B8800B32DBF /* Yellow Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4E090D860B8800B32DBF /* Yellow Ball.png */; };
 
    28 		279F4F1B0D86448100B32DBF /* Wood.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 279F4F1A0D86448100B32DBF /* Wood.jpg */; };
 
    29 		27C99B0F0D820868005AFD4F /* BoardUIView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AE40D820868005AFD4F /* BoardUIView.m */; };
 
    30 		27C99B100D820868005AFD4F /* Bit.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AE60D820868005AFD4F /* Bit.m */; };
 
    31 		27C99B110D820868005AFD4F /* BitHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AE80D820868005AFD4F /* BitHolder.m */; };
 
    32 		27C99B120D820868005AFD4F /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AEA0D820868005AFD4F /* Stack.m */; };
 
    33 		27C99B130D820868005AFD4F /* Card.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AED0D820868005AFD4F /* Card.m */; };
 
    34 		27C99B140D820868005AFD4F /* Deck.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AEF0D820868005AFD4F /* Deck.m */; };
 
    35 		27C99B150D820868005AFD4F /* PlayingCard.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AF10D820868005AFD4F /* PlayingCard.m */; };
 
    36 		27C99B160D820868005AFD4F /* Piece.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AF40D820868005AFD4F /* Piece.m */; };
 
    37 		27C99B170D820868005AFD4F /* DiscPiece.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AF60D820868005AFD4F /* DiscPiece.m */; };
 
    38 		27C99B180D820868005AFD4F /* Grid.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AF80D820868005AFD4F /* Grid.m */; };
 
    39 		27C99B190D820868005AFD4F /* HexGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AFA0D820868005AFD4F /* HexGrid.m */; };
 
    40 		27C99B1A0D820868005AFD4F /* Dispenser.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AFC0D820868005AFD4F /* Dispenser.m */; };
 
    41 		27C99B1B0D820868005AFD4F /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99AFF0D820868005AFD4F /* Game.m */; };
 
    42 		27C99B1C0D820868005AFD4F /* TicTacToeGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B010D820868005AFD4F /* TicTacToeGame.m */; };
 
    43 		27C99B1D0D820868005AFD4F /* CheckersGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B030D820868005AFD4F /* CheckersGame.m */; };
 
    44 		27C99B1E0D820868005AFD4F /* HexchequerGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B050D820868005AFD4F /* HexchequerGame.m */; };
 
    45 		27C99B1F0D820868005AFD4F /* GoGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B070D820868005AFD4F /* GoGame.m */; };
 
    46 		27C99B200D820868005AFD4F /* KlondikeGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B090D820868005AFD4F /* KlondikeGame.m */; };
 
    47 		27C99B210D820868005AFD4F /* QuartzUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B0B0D820868005AFD4F /* QuartzUtils.m */; };
 
    48 		27C99B220D820868005AFD4F /* GGBUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B0D0D820868005AFD4F /* GGBUtils.m */; };
 
    49 		27C99B510D82106E005AFD4F /* GGBLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C99B500D82106E005AFD4F /* GGBLayer.m */; };
 
    50 		27DBB52C0DEE059700616D85 /* Blue.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DBB5270DEE059700616D85 /* Blue.png */; };
 
    51 		27DBB52D0DEE059800616D85 /* Gold.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DBB5280DEE059700616D85 /* Gold.png */; };
 
    52 		27DBB52E0DEE059800616D85 /* Green.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DBB5290DEE059700616D85 /* Green.png */; };
 
    53 		27DBB52F0DEE059900616D85 /* Red.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DBB52A0DEE059700616D85 /* Red.png */; };
 
    54 		27DBB5300DEE059900616D85 /* Violet.png in Resources */ = {isa = PBXBuildFile; fileRef = 27DBB52B0DEE059700616D85 /* Violet.png */; };
 
    55 /* End PBXBuildFile section */
 
    57 /* Begin PBXFileReference section */
 
    58 		1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 
    59 		1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 
    60 		1D6058910D05DD3D006BFB54 /* GeekGameBoard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GeekGameBoard.app; sourceTree = BUILT_PRODUCTS_DIR; };
 
    61 		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 
    62 		274050290DEF36DF0006A9EE /* Pop.aiff */ = {isa = PBXFileReference; lastKnownFileType = audio.aiff; name = Pop.aiff; path = /System/Library/Sounds/Pop.aiff; sourceTree = "<absolute>"; };
 
    63 		2740502A0DEF36DF0006A9EE /* Tink.aiff */ = {isa = PBXFileReference; lastKnownFileType = audio.aiff; name = Tink.aiff; path = /System/Library/Sounds/Tink.aiff; sourceTree = "<absolute>"; };
 
    64 		279F4B580D85C51700B32DBF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 
    65 		279F4B5A0D85C51700B32DBF /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 
    66 		279F4B600D85C63000B32DBF /* GGBTextLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBTextLayer.h; sourceTree = "<group>"; };
 
    67 		279F4B610D85C63000B32DBF /* GGBTextLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBTextLayer.m; sourceTree = "<group>"; };
 
    68 		279F4B680D85CBFC00B32DBF /* iPhoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iPhoneAppDelegate.h; path = Source/iPhoneAppDelegate.h; sourceTree = "<group>"; };
 
    69 		279F4B690D85CBFC00B32DBF /* iPhoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iPhoneAppDelegate.m; path = Source/iPhoneAppDelegate.m; sourceTree = "<group>"; };
 
    70 		279F4B720D85CDE900B32DBF /* ToolbarAdvanced.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = ToolbarAdvanced.icns; path = /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ToolbarAdvanced.icns; sourceTree = "<absolute>"; };
 
    71 		279F4C1C0D85D0AF00B32DBF /* X.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = X.tiff; sourceTree = "<group>"; };
 
    72 		279F4C1E0D85D0CB00B32DBF /* O.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = O.tiff; sourceTree = "<group>"; };
 
    73 		279F4C730D85D43800B32DBF /* Background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Background.png; sourceTree = "<group>"; };
 
    74 		279F4E050D860B8800B32DBF /* Green Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Green Ball.png"; sourceTree = "<group>"; };
 
    75 		279F4E060D860B8800B32DBF /* Red Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Red Ball.png"; sourceTree = "<group>"; };
 
    76 		279F4E070D860B8800B32DBF /* White Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "White Ball.png"; sourceTree = "<group>"; };
 
    77 		279F4E090D860B8800B32DBF /* Yellow Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Yellow Ball.png"; sourceTree = "<group>"; };
 
    78 		279F4F1A0D86448100B32DBF /* Wood.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = Wood.jpg; sourceTree = "<group>"; };
 
    79 		27C99AE30D820868005AFD4F /* BoardUIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoardUIView.h; sourceTree = "<group>"; };
 
    80 		27C99AE40D820868005AFD4F /* BoardUIView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BoardUIView.m; sourceTree = "<group>"; };
 
    81 		27C99AE50D820868005AFD4F /* Bit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bit.h; sourceTree = "<group>"; };
 
    82 		27C99AE60D820868005AFD4F /* Bit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Bit.m; sourceTree = "<group>"; };
 
    83 		27C99AE70D820868005AFD4F /* BitHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitHolder.h; sourceTree = "<group>"; };
 
    84 		27C99AE80D820868005AFD4F /* BitHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BitHolder.m; sourceTree = "<group>"; };
 
    85 		27C99AE90D820868005AFD4F /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = "<group>"; };
 
    86 		27C99AEA0D820868005AFD4F /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = "<group>"; };
 
    87 		27C99AEC0D820868005AFD4F /* Card.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Card.h; sourceTree = "<group>"; };
 
    88 		27C99AED0D820868005AFD4F /* Card.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Card.m; sourceTree = "<group>"; };
 
    89 		27C99AEE0D820868005AFD4F /* Deck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deck.h; sourceTree = "<group>"; };
 
    90 		27C99AEF0D820868005AFD4F /* Deck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Deck.m; sourceTree = "<group>"; };
 
    91 		27C99AF00D820868005AFD4F /* PlayingCard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayingCard.h; sourceTree = "<group>"; };
 
    92 		27C99AF10D820868005AFD4F /* PlayingCard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayingCard.m; sourceTree = "<group>"; };
 
    93 		27C99AF30D820868005AFD4F /* Piece.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Piece.h; sourceTree = "<group>"; };
 
    94 		27C99AF40D820868005AFD4F /* Piece.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Piece.m; sourceTree = "<group>"; };
 
    95 		27C99AF50D820868005AFD4F /* DiscPiece.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiscPiece.h; sourceTree = "<group>"; };
 
    96 		27C99AF60D820868005AFD4F /* DiscPiece.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiscPiece.m; sourceTree = "<group>"; };
 
    97 		27C99AF70D820868005AFD4F /* Grid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Grid.h; sourceTree = "<group>"; };
 
    98 		27C99AF80D820868005AFD4F /* Grid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Grid.m; sourceTree = "<group>"; };
 
    99 		27C99AF90D820868005AFD4F /* HexGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexGrid.h; sourceTree = "<group>"; };
 
   100 		27C99AFA0D820868005AFD4F /* HexGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HexGrid.m; sourceTree = "<group>"; };
 
   101 		27C99AFB0D820868005AFD4F /* Dispenser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dispenser.h; sourceTree = "<group>"; };
 
   102 		27C99AFC0D820868005AFD4F /* Dispenser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Dispenser.m; sourceTree = "<group>"; };
 
   103 		27C99AFE0D820868005AFD4F /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = "<group>"; };
 
   104 		27C99AFF0D820868005AFD4F /* Game.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Game.m; sourceTree = "<group>"; };
 
   105 		27C99B000D820868005AFD4F /* TicTacToeGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TicTacToeGame.h; sourceTree = "<group>"; };
 
   106 		27C99B010D820868005AFD4F /* TicTacToeGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TicTacToeGame.m; sourceTree = "<group>"; };
 
   107 		27C99B020D820868005AFD4F /* CheckersGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckersGame.h; sourceTree = "<group>"; };
 
   108 		27C99B030D820868005AFD4F /* CheckersGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CheckersGame.m; sourceTree = "<group>"; };
 
   109 		27C99B040D820868005AFD4F /* HexchequerGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexchequerGame.h; sourceTree = "<group>"; };
 
   110 		27C99B050D820868005AFD4F /* HexchequerGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HexchequerGame.m; sourceTree = "<group>"; };
 
   111 		27C99B060D820868005AFD4F /* GoGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoGame.h; sourceTree = "<group>"; };
 
   112 		27C99B070D820868005AFD4F /* GoGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoGame.m; sourceTree = "<group>"; };
 
   113 		27C99B080D820868005AFD4F /* KlondikeGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KlondikeGame.h; sourceTree = "<group>"; };
 
   114 		27C99B090D820868005AFD4F /* KlondikeGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KlondikeGame.m; sourceTree = "<group>"; };
 
   115 		27C99B0A0D820868005AFD4F /* QuartzUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuartzUtils.h; sourceTree = "<group>"; };
 
   116 		27C99B0B0D820868005AFD4F /* QuartzUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuartzUtils.m; sourceTree = "<group>"; };
 
   117 		27C99B0C0D820868005AFD4F /* GGBUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBUtils.h; sourceTree = "<group>"; };
 
   118 		27C99B0D0D820868005AFD4F /* GGBUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBUtils.m; sourceTree = "<group>"; };
 
   119 		27C99B4F0D82106E005AFD4F /* GGBLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBLayer.h; sourceTree = "<group>"; };
 
   120 		27C99B500D82106E005AFD4F /* GGBLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBLayer.m; sourceTree = "<group>"; };
 
   121 		27DBB5270DEE059700616D85 /* Blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Blue.png; sourceTree = "<group>"; };
 
   122 		27DBB5280DEE059700616D85 /* Gold.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Gold.png; sourceTree = "<group>"; };
 
   123 		27DBB5290DEE059700616D85 /* Green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Green.png; sourceTree = "<group>"; };
 
   124 		27DBB52A0DEE059700616D85 /* Red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Red.png; sourceTree = "<group>"; };
 
   125 		27DBB52B0DEE059700616D85 /* Violet.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Violet.png; sourceTree = "<group>"; };
 
   126 		29B97316FDCFA39411CA2CEA /* main-iPhone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "main-iPhone.m"; path = "Source/main-iPhone.m"; sourceTree = "<group>"; };
 
   127 		32CA4F630368D1EE00C91783 /* GGB-iPhone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "GGB-iPhone_Prefix.pch"; path = "Source/GGB-iPhone_Prefix.pch"; sourceTree = "<group>"; };
 
   128 		8D1107310486CEB800E47090 /* Info-iPhone.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-iPhone.plist"; sourceTree = "<group>"; };
 
   129 /* End PBXFileReference section */
 
   131 /* Begin PBXFrameworksBuildPhase section */
 
   132 		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
 
   133 			isa = PBXFrameworksBuildPhase;
 
   134 			buildActionMask = 2147483647;
 
   136 				1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
 
   137 				1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
 
   138 				1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */,
 
   139 				279F4B590D85C51700B32DBF /* AudioToolbox.framework in Frameworks */,
 
   140 				279F4B5B0D85C51700B32DBF /* QuartzCore.framework in Frameworks */,
 
   142 			runOnlyForDeploymentPostprocessing = 0;
 
   144 /* End PBXFrameworksBuildPhase section */
 
   146 /* Begin PBXGroup section */
 
   147 		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
 
   150 				1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */,
 
   151 				1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
 
   152 				1D30AB110D05D00D00671497 /* Foundation.framework */,
 
   154 			name = "Linked Frameworks";
 
   155 			sourceTree = "<group>";
 
   157 		1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
 
   161 			name = "Other Frameworks";
 
   162 			sourceTree = "<group>";
 
   164 		19C28FACFE9D520D11CA2CBB /* Products */ = {
 
   167 				1D6058910D05DD3D006BFB54 /* GeekGameBoard.app */,
 
   170 			sourceTree = "<group>";
 
   172 		27C99AE00D820868005AFD4F /* Source */ = {
 
   175 				27C99AE30D820868005AFD4F /* BoardUIView.h */,
 
   176 				27C99AE40D820868005AFD4F /* BoardUIView.m */,
 
   177 				27C99AE50D820868005AFD4F /* Bit.h */,
 
   178 				27C99AE60D820868005AFD4F /* Bit.m */,
 
   179 				27C99AE70D820868005AFD4F /* BitHolder.h */,
 
   180 				27C99AE80D820868005AFD4F /* BitHolder.m */,
 
   181 				27C99AE90D820868005AFD4F /* Stack.h */,
 
   182 				27C99AEA0D820868005AFD4F /* Stack.m */,
 
   183 				27C99AF20D820868005AFD4F /* Boards and Pieces */,
 
   184 				27C99AEB0D820868005AFD4F /* Cards */,
 
   185 				27C99AFD0D820868005AFD4F /* Games */,
 
   186 				27C99B4F0D82106E005AFD4F /* GGBLayer.h */,
 
   187 				27C99B500D82106E005AFD4F /* GGBLayer.m */,
 
   188 				279F4B600D85C63000B32DBF /* GGBTextLayer.h */,
 
   189 				279F4B610D85C63000B32DBF /* GGBTextLayer.m */,
 
   190 				27C99B0A0D820868005AFD4F /* QuartzUtils.h */,
 
   191 				27C99B0B0D820868005AFD4F /* QuartzUtils.m */,
 
   192 				27C99B0C0D820868005AFD4F /* GGBUtils.h */,
 
   193 				27C99B0D0D820868005AFD4F /* GGBUtils.m */,
 
   196 			sourceTree = "<group>";
 
   198 		27C99AEB0D820868005AFD4F /* Cards */ = {
 
   201 				27C99AEC0D820868005AFD4F /* Card.h */,
 
   202 				27C99AED0D820868005AFD4F /* Card.m */,
 
   203 				27C99AEE0D820868005AFD4F /* Deck.h */,
 
   204 				27C99AEF0D820868005AFD4F /* Deck.m */,
 
   205 				27C99AF00D820868005AFD4F /* PlayingCard.h */,
 
   206 				27C99AF10D820868005AFD4F /* PlayingCard.m */,
 
   209 			sourceTree = "<group>";
 
   211 		27C99AF20D820868005AFD4F /* Boards and Pieces */ = {
 
   214 				27C99AF30D820868005AFD4F /* Piece.h */,
 
   215 				27C99AF40D820868005AFD4F /* Piece.m */,
 
   216 				27C99AF50D820868005AFD4F /* DiscPiece.h */,
 
   217 				27C99AF60D820868005AFD4F /* DiscPiece.m */,
 
   218 				27C99AF70D820868005AFD4F /* Grid.h */,
 
   219 				27C99AF80D820868005AFD4F /* Grid.m */,
 
   220 				27C99AF90D820868005AFD4F /* HexGrid.h */,
 
   221 				27C99AFA0D820868005AFD4F /* HexGrid.m */,
 
   222 				27C99AFB0D820868005AFD4F /* Dispenser.h */,
 
   223 				27C99AFC0D820868005AFD4F /* Dispenser.m */,
 
   225 			name = "Boards and Pieces";
 
   226 			sourceTree = "<group>";
 
   228 		27C99AFD0D820868005AFD4F /* Games */ = {
 
   231 				27C99AFE0D820868005AFD4F /* Game.h */,
 
   232 				27C99AFF0D820868005AFD4F /* Game.m */,
 
   233 				27C99B000D820868005AFD4F /* TicTacToeGame.h */,
 
   234 				27C99B010D820868005AFD4F /* TicTacToeGame.m */,
 
   235 				27C99B020D820868005AFD4F /* CheckersGame.h */,
 
   236 				27C99B030D820868005AFD4F /* CheckersGame.m */,
 
   237 				27C99B040D820868005AFD4F /* HexchequerGame.h */,
 
   238 				27C99B050D820868005AFD4F /* HexchequerGame.m */,
 
   239 				27C99B060D820868005AFD4F /* GoGame.h */,
 
   240 				27C99B070D820868005AFD4F /* GoGame.m */,
 
   241 				27C99B080D820868005AFD4F /* KlondikeGame.h */,
 
   242 				27C99B090D820868005AFD4F /* KlondikeGame.m */,
 
   245 			sourceTree = "<group>";
 
   247 		27DBB5260DEE059700616D85 /* Gingko */ = {
 
   250 				27DBB5270DEE059700616D85 /* Blue.png */,
 
   251 				27DBB5280DEE059700616D85 /* Gold.png */,
 
   252 				27DBB5290DEE059700616D85 /* Green.png */,
 
   253 				27DBB52A0DEE059700616D85 /* Red.png */,
 
   254 				27DBB52B0DEE059700616D85 /* Violet.png */,
 
   257 			sourceTree = "<group>";
 
   259 		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
 
   262 				27C99AE00D820868005AFD4F /* Source */,
 
   263 				29B97315FDCFA39411CA2CEA /* Other Sources */,
 
   264 				29B97317FDCFA39411CA2CEA /* Resources */,
 
   265 				29B97323FDCFA39411CA2CEA /* Frameworks */,
 
   266 				19C28FACFE9D520D11CA2CBB /* Products */,
 
   267 				279F4B580D85C51700B32DBF /* AudioToolbox.framework */,
 
   268 				279F4B5A0D85C51700B32DBF /* QuartzCore.framework */,
 
   270 			name = CustomTemplate;
 
   271 			sourceTree = "<group>";
 
   273 		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
 
   276 				279F4B680D85CBFC00B32DBF /* iPhoneAppDelegate.h */,
 
   277 				279F4B690D85CBFC00B32DBF /* iPhoneAppDelegate.m */,
 
   278 				32CA4F630368D1EE00C91783 /* GGB-iPhone_Prefix.pch */,
 
   279 				29B97316FDCFA39411CA2CEA /* main-iPhone.m */,
 
   281 			name = "Other Sources";
 
   282 			sourceTree = "<group>";
 
   284 		29B97317FDCFA39411CA2CEA /* Resources */ = {
 
   287 				274050290DEF36DF0006A9EE /* Pop.aiff */,
 
   288 				2740502A0DEF36DF0006A9EE /* Tink.aiff */,
 
   289 				279F4E050D860B8800B32DBF /* Green Ball.png */,
 
   290 				279F4E060D860B8800B32DBF /* Red Ball.png */,
 
   291 				279F4E070D860B8800B32DBF /* White Ball.png */,
 
   292 				279F4E090D860B8800B32DBF /* Yellow Ball.png */,
 
   293 				279F4C1C0D85D0AF00B32DBF /* X.tiff */,
 
   294 				279F4C1E0D85D0CB00B32DBF /* O.tiff */,
 
   295 				279F4F1A0D86448100B32DBF /* Wood.jpg */,
 
   296 				27DBB5260DEE059700616D85 /* Gingko */,
 
   297 				279F4C730D85D43800B32DBF /* Background.png */,
 
   298 				279F4B720D85CDE900B32DBF /* ToolbarAdvanced.icns */,
 
   299 				8D1107310486CEB800E47090 /* Info-iPhone.plist */,
 
   302 			sourceTree = "<group>";
 
   304 		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
 
   307 				1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
 
   308 				1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
 
   311 			sourceTree = "<group>";
 
   313 /* End PBXGroup section */
 
   315 /* Begin PBXNativeTarget section */
 
   316 		1D6058900D05DD3D006BFB54 /* GGB-iPhone */ = {
 
   317 			isa = PBXNativeTarget;
 
   318 			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "GGB-iPhone" */;
 
   320 				1D60588D0D05DD3D006BFB54 /* Resources */,
 
   321 				1D60588E0D05DD3D006BFB54 /* Sources */,
 
   322 				1D60588F0D05DD3D006BFB54 /* Frameworks */,
 
   329 			productName = "GGB-iPhone";
 
   330 			productReference = 1D6058910D05DD3D006BFB54 /* GeekGameBoard.app */;
 
   331 			productType = "com.apple.product-type.application";
 
   333 /* End PBXNativeTarget section */
 
   335 /* Begin PBXProject section */
 
   336 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 
   338 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GeekGameBoard-iPhone" */;
 
   339 			compatibilityVersion = "Xcode 3.1";
 
   340 			hasScannedForEncodings = 1;
 
   341 			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
 
   345 				1D6058900D05DD3D006BFB54 /* GGB-iPhone */,
 
   348 /* End PBXProject section */
 
   350 /* Begin PBXResourcesBuildPhase section */
 
   351 		1D60588D0D05DD3D006BFB54 /* Resources */ = {
 
   352 			isa = PBXResourcesBuildPhase;
 
   353 			buildActionMask = 2147483647;
 
   355 				279F4B740D85CDE900B32DBF /* ToolbarAdvanced.icns in Resources */,
 
   356 				279F4C1D0D85D0AF00B32DBF /* X.tiff in Resources */,
 
   357 				279F4C1F0D85D0CB00B32DBF /* O.tiff in Resources */,
 
   358 				279F4C740D85D43800B32DBF /* Background.png in Resources */,
 
   359 				279F4E0A0D860B8800B32DBF /* Green Ball.png in Resources */,
 
   360 				279F4E0B0D860B8800B32DBF /* Red Ball.png in Resources */,
 
   361 				279F4E0C0D860B8800B32DBF /* White Ball.png in Resources */,
 
   362 				279F4E0E0D860B8800B32DBF /* Yellow Ball.png in Resources */,
 
   363 				279F4F1B0D86448100B32DBF /* Wood.jpg in Resources */,
 
   364 				27DBB52C0DEE059700616D85 /* Blue.png in Resources */,
 
   365 				27DBB52D0DEE059800616D85 /* Gold.png in Resources */,
 
   366 				27DBB52E0DEE059800616D85 /* Green.png in Resources */,
 
   367 				27DBB52F0DEE059900616D85 /* Red.png in Resources */,
 
   368 				27DBB5300DEE059900616D85 /* Violet.png in Resources */,
 
   369 				2740502B0DEF36DF0006A9EE /* Pop.aiff in Resources */,
 
   370 				2740502C0DEF36DF0006A9EE /* Tink.aiff in Resources */,
 
   372 			runOnlyForDeploymentPostprocessing = 0;
 
   374 /* End PBXResourcesBuildPhase section */
 
   376 /* Begin PBXSourcesBuildPhase section */
 
   377 		1D60588E0D05DD3D006BFB54 /* Sources */ = {
 
   378 			isa = PBXSourcesBuildPhase;
 
   379 			buildActionMask = 2147483647;
 
   381 				1D60589B0D05DD56006BFB54 /* main-iPhone.m in Sources */,
 
   382 				27C99B0F0D820868005AFD4F /* BoardUIView.m in Sources */,
 
   383 				27C99B100D820868005AFD4F /* Bit.m in Sources */,
 
   384 				27C99B110D820868005AFD4F /* BitHolder.m in Sources */,
 
   385 				27C99B120D820868005AFD4F /* Stack.m in Sources */,
 
   386 				27C99B130D820868005AFD4F /* Card.m in Sources */,
 
   387 				27C99B140D820868005AFD4F /* Deck.m in Sources */,
 
   388 				27C99B150D820868005AFD4F /* PlayingCard.m in Sources */,
 
   389 				27C99B160D820868005AFD4F /* Piece.m in Sources */,
 
   390 				27C99B170D820868005AFD4F /* DiscPiece.m in Sources */,
 
   391 				27C99B180D820868005AFD4F /* Grid.m in Sources */,
 
   392 				27C99B190D820868005AFD4F /* HexGrid.m in Sources */,
 
   393 				27C99B1A0D820868005AFD4F /* Dispenser.m in Sources */,
 
   394 				27C99B1B0D820868005AFD4F /* Game.m in Sources */,
 
   395 				27C99B1C0D820868005AFD4F /* TicTacToeGame.m in Sources */,
 
   396 				27C99B1D0D820868005AFD4F /* CheckersGame.m in Sources */,
 
   397 				27C99B1E0D820868005AFD4F /* HexchequerGame.m in Sources */,
 
   398 				27C99B1F0D820868005AFD4F /* GoGame.m in Sources */,
 
   399 				27C99B200D820868005AFD4F /* KlondikeGame.m in Sources */,
 
   400 				27C99B210D820868005AFD4F /* QuartzUtils.m in Sources */,
 
   401 				27C99B220D820868005AFD4F /* GGBUtils.m in Sources */,
 
   402 				27C99B510D82106E005AFD4F /* GGBLayer.m in Sources */,
 
   403 				279F4B620D85C63000B32DBF /* GGBTextLayer.m in Sources */,
 
   404 				279F4B6A0D85CBFC00B32DBF /* iPhoneAppDelegate.m in Sources */,
 
   406 			runOnlyForDeploymentPostprocessing = 0;
 
   408 /* End PBXSourcesBuildPhase section */
 
   410 /* Begin XCBuildConfiguration section */
 
   411 		1D6058940D05DD3E006BFB54 /* Debug */ = {
 
   412 			isa = XCBuildConfiguration;
 
   414 				COPY_PHASE_STRIP = NO;
 
   415 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 
   416 				GCC_DYNAMIC_NO_PIC = NO;
 
   417 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 
   418 				GCC_OPTIMIZATION_LEVEL = 0;
 
   419 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 
   420 				GCC_PREFIX_HEADER = "Source/GGB-iPhone_Prefix.pch";
 
   421 				INFOPLIST_FILE = "Resources/Info-iPhone.plist";
 
   423 				PRODUCT_NAME = GeekGameBoard;
 
   427 		1D6058950D05DD3E006BFB54 /* Release */ = {
 
   428 			isa = XCBuildConfiguration;
 
   430 				COPY_PHASE_STRIP = YES;
 
   431 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 
   432 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 
   433 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 
   434 				GCC_PREFIX_HEADER = "Source/GGB-iPhone_Prefix.pch";
 
   435 				INFOPLIST_FILE = "Resources/Info-iPhone.plist";
 
   437 				PRODUCT_NAME = GeekGameBoard;
 
   438 				WRAPPER_EXTENSION = app;
 
   442 		C01FCF4F08A954540054247B /* Debug */ = {
 
   443 			isa = XCBuildConfiguration;
 
   445 				ALWAYS_SEARCH_USER_PATHS = NO;
 
   446 				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 
   447 				CODE_SIGN_IDENTITY = "Laurence ANDERSEN";
 
   448 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Laurence ANDERSEN";
 
   449 				GCC_C_LANGUAGE_STANDARD = gnu99;
 
   450 				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
 
   451 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 
   452 				GCC_WARN_UNUSED_VARIABLE = YES;
 
   453 				ONLY_ACTIVE_ARCH = YES;
 
   455 				SDKROOT = iphoneos2.0;
 
   456 				WARNING_CFLAGS = "-Wall";
 
   460 		C01FCF5008A954540054247B /* Release */ = {
 
   461 			isa = XCBuildConfiguration;
 
   463 				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
 
   464 				CODE_SIGN_IDENTITY = "Laurence ANDERSEN";
 
   465 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Laurence ANDERSEN";
 
   466 				GCC_C_LANGUAGE_STANDARD = gnu99;
 
   467 				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
 
   468 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 
   470 				SDKROOT = iphoneos2.0;
 
   471 				WARNING_CFLAGS = "-Wall";
 
   475 /* End XCBuildConfiguration section */
 
   477 /* Begin XCConfigurationList section */
 
   478 		1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "GGB-iPhone" */ = {
 
   479 			isa = XCConfigurationList;
 
   480 			buildConfigurations = (
 
   481 				1D6058940D05DD3E006BFB54 /* Debug */,
 
   482 				1D6058950D05DD3E006BFB54 /* Release */,
 
   484 			defaultConfigurationIsVisible = 0;
 
   485 			defaultConfigurationName = Release;
 
   487 		C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GeekGameBoard-iPhone" */ = {
 
   488 			isa = XCConfigurationList;
 
   489 			buildConfigurations = (
 
   490 				C01FCF4F08A954540054247B /* Debug */,
 
   491 				C01FCF5008A954540054247B /* Release */,
 
   493 			defaultConfigurationIsVisible = 0;
 
   494 			defaultConfigurationName = Release;
 
   496 /* End XCConfigurationList section */
 
   498 	rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;