         case .Rook:
             switch move.start {
             case (.A, .One):
-                leftWhiteRookHasMoved = true
+                whiteLeftRookHasMoved = true
             case (.H, .One):
-                rightWhiteRookHasMoved = true
+                whiteRightRookHasMoved = true
             case (.A, .Eight):
-                leftBlackRookHasMoved = true
+                blackLeftRookHasMoved = true
             case (.H, .Eight):
-                rightBlackRookHasMoved = true
+                blackRightRookHasMoved = true
             default:
                 break
             }

    public private(set) var whiteKingHasMoved: Bool = false

    /// The left white rook has moved from A1.
    public private(set) var leftWhiteRookHasMoved: Bool = false

    /// The right white rook has moved from H1.
    public private(set) var rightWhiteRookHasMoved: Bool = false

    /// The black king has moved from E8.
    public private(set) var blackKingHasMoved: Bool = false

    /// The left black rook has moved from A8.
    public private(set) var leftBlackRookHasMoved: Bool = false

    /// The right black rook has moved from H8.
    public private(set) var rightBlackRookHasMoved: Bool = false

    /// The game's mode.
    public var mode: Mode

                // Check if the rook for the appropriate color has moved
                switch move.end {
                case (.C, .One):
                    guard !whiteLeftRookHasMoved else {
                        return .Error(.RookMoved(.White, .Left))
                    }
                case (.G, .One):
                    guard !whiteRightRookHasMoved else {
                        return .Error(.RookMoved(.White, .Right))
                    }
                case (.C, .Eight):
                    guard !blackLeftRookHasMoved else {
                        return .Error(.RookMoved(.Black, .Left))
                    }
                case (.G, .Eight):
                    guard !blackRightRookHasMoved else {
                        return .Error(.RookMoved(.Black, .Right))
                    }
                default:
