diff --git a/book/twic-9g.bin b/book/twic-9g.bin
# file too large to diff: book/twic-9g.bin
diff --git a/chessIO.cabal b/chessIO.cabal
--- a/chessIO.cabal
+++ b/chessIO.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.1.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           chessIO
-version:        0.9.3.1
+version:        0.9.4.0
 synopsis:       Basic chess library
 description:    A simple and fast library for generating legal chess moves. Also includes a module for communication with external processes that speak the UCI (Universal Chess Interface) protocol, a PGN parser/pretty printer, and Polyglot opening book support. On top of that, provides a console frontend program (cboard) that can be used to interactively play against UCI engines.
 category:       Game
diff --git a/src/Game/Chess/Internal/QuadBitboard.hs b/src/Game/Chess/Internal/QuadBitboard.hs
--- a/src/Game/Chess/Internal/QuadBitboard.hs
+++ b/src/Game/Chess/Internal/QuadBitboard.hs
@@ -72,14 +72,13 @@
 
 instance NFData QuadBitboard
 
-occupied, pnr, white, pawns, knights, bishops, rooks, queens, kings :: QuadBitboard -> Word64
+occupied, white, pawns, knights, bishops, rooks, queens, kings :: QuadBitboard -> Word64
 occupied = liftA2 (.|.) pbq $ liftA2 (.|.) nbk rqk
-pnr      = liftA2  xor  pbq $ liftA2  xor  nbk rqk
 white    = liftA2  xor  occupied black
-pawns    = liftA2 (.&.) pnr pbq
-knights  = liftA2 (.&.) pnr nbk
+pawns    = liftA2 (.&.) pbq $ liftA2 (.&.) (complement . nbk) (complement . rqk)
+knights  = liftA2 (.&.) (complement . pbq) $ liftA2 (.&.) nbk (complement . rqk)
 bishops  = liftA2 (.&.) pbq nbk
-rooks    = liftA2 (.&.) pnr rqk
+rooks    = liftA2 (.&.) (complement . pbq) $ liftA2 (.&.) (complement . nbk) rqk
 queens   = liftA2 (.&.) pbq rqk
 kings    = liftA2 (.&.) nbk rqk
 
@@ -99,7 +98,6 @@
 bQueens  = liftA2 (.&.) queens black
 bKings   = liftA2 (.&.) kings black
 
-{-# INLINE pnr #-}
 {-# INLINE occupied #-}
 {-# INLINE white #-}
 {-# INLINE pawns #-}
diff --git a/src/Game/Chess/PGN.hs b/src/Game/Chess/PGN.hs
--- a/src/Game/Chess/PGN.hs
+++ b/src/Game/Chess/PGN.hs
@@ -11,6 +11,7 @@
 {-# LANGUAGE TemplateHaskell            #-}
 {-# LANGUAGE TupleSections              #-}
 {-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE TypeOperators              #-}
 {-# LANGUAGE ViewPatterns               #-}
 {-|
 Module      : Game.Chess.PGN
diff --git a/src/Game/Chess/SAN.hs b/src/Game/Chess/SAN.hs
--- a/src/Game/Chess/SAN.hs
+++ b/src/Game/Chess/SAN.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE PolyKinds           #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TupleSections       #-}
+{-# LANGUAGE TypeOperators       #-}
 {-# LANGUAGE ViewPatterns        #-}
 {-|
 Module      : Game.Chess.SAN
