code: func (b *Board) MarshalBinary() (data []byte, err error) {
  	bbs := []bitboard{b.bbWhiteKing, b.bbWhiteQueen, b.bbWhiteRook, b.bbWhiteBishop, b.bbWhiteKnight, b.bbWhitePawn,
  		b.bbBlackKing, b.bbBlackQueen, b.bbBlackRook, b.bbBlackBishop, b.bbBlackKnight, b.bbBlackPawn}
  	buf := new(bytes.Buffer)
  	err = binary.Write(buf, binary.BigEndian, bbs)
  	return buf.Bytes(), err
  }
docs: // MarshalBinary implements the encoding.BinaryMarshaler interface and returns
  // the bitboard representations as a array of bytes.  Bitboads are encoded
  // in the following order: WhiteKing, WhiteQueen, WhiteRook, WhiteBishop, WhiteKnight
  // WhitePawn, BlackKing, BlackQueen, BlackRook, BlackBishop, BlackKnight, BlackPawn