diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
 # Changelog
 
+## 0.3.0.0 -- 2026-03-23
+
+* BREAKING: for all newtypes with a record field name like `run*`, change the
+  name to `ptr`. See PR's
+  [#114](https://github.com/haskell-cryptography/botan/pull/114) and
+  [#117](https://github.com/haskell-cryptography/botan/pull/117). For example.
+  `runBotanBlockCipher` is changed to `ptr`.
+* BREAKING: re-enable `FieldSelectors` for the `ConstPtr` module. See PR
+  [#117](https://github.com/haskell-cryptography/botan/pull/117).
+
 ## 0.2.0.0 -- 2025-12-30
 
 * BREAKING: remove experimental FFI code related to `x509`. See PR
diff --git a/botan-bindings.cabal b/botan-bindings.cabal
--- a/botan-bindings.cabal
+++ b/botan-bindings.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: botan-bindings
-version: 0.2.0.0
+version: 0.3.0.0
 synopsis: Raw Botan bindings
 description:
   Welcome to botan-bindings
@@ -39,7 +39,7 @@
   type: git
   location: https://github.com/haskell-cryptography/botan
   subdir: botan-bindings
-  tag: botan-bindings-0.2.0.0
+  tag: botan-bindings-0.3.0.0
 
 flag pkg-config
   default: True
diff --git a/src/Botan/Bindings/BlockCipher.hs b/src/Botan/Bindings/BlockCipher.hs
--- a/src/Botan/Bindings/BlockCipher.hs
+++ b/src/Botan/Bindings/BlockCipher.hs
@@ -75,7 +75,7 @@
 
 -- | Botan BlockCipher object
 newtype {-# CTYPE "botan/ffi.h" "botan_block_cipher_t" #-} BotanBlockCipher
-    = MkBotanBlockCipher { runBotanBlockCipher :: Ptr BotanBlockCipherStruct }
+    = MkBotanBlockCipher { ptr :: Ptr BotanBlockCipherStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a block cipher object
diff --git a/src/Botan/Bindings/Cipher.hsc b/src/Botan/Bindings/Cipher.hsc
--- a/src/Botan/Bindings/Cipher.hsc
+++ b/src/Botan/Bindings/Cipher.hsc
@@ -78,7 +78,7 @@
 
 -- | Botan Cipher object
 newtype {-# CTYPE "botan/ffi.h" "botan_cipher_t" #-} BotanCipher
-    = MkBotanCipher { runBotanCipher :: Ptr BotanCipherStruct }
+    = MkBotanCipher { ptr :: Ptr BotanCipherStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy the cipher object
diff --git a/src/Botan/Bindings/ConstPtr.hs b/src/Botan/Bindings/ConstPtr.hs
--- a/src/Botan/Bindings/ConstPtr.hs
+++ b/src/Botan/Bindings/ConstPtr.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP            #-}
+{-# LANGUAGE FieldSelectors #-}
 
 module Botan.Bindings.ConstPtr (
     ConstPtr(..)
diff --git a/src/Botan/Bindings/FPE.hsc b/src/Botan/Bindings/FPE.hsc
--- a/src/Botan/Bindings/FPE.hsc
+++ b/src/Botan/Bindings/FPE.hsc
@@ -61,7 +61,7 @@
 
 -- | Botan FPE object
 newtype {-# CTYPE "botan/ffi.h" "botan_fpe_t" #-} BotanFPE
-    = MkBotanFPE { runBotanFPE :: Ptr BotanFPEStruct }
+    = MkBotanFPE { ptr :: Ptr BotanFPEStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy the FPE object
diff --git a/src/Botan/Bindings/HOTP.hs b/src/Botan/Bindings/HOTP.hs
--- a/src/Botan/Bindings/HOTP.hs
+++ b/src/Botan/Bindings/HOTP.hs
@@ -59,7 +59,7 @@
 
 -- | Botan HOTP object
 newtype {-# CTYPE "botan/ffi.h" "botan_hotp_t" #-} BotanHOTP
-    = MkBotanHOTP { runBotanHOTP :: Ptr BotanHOTPStruct }
+    = MkBotanHOTP { ptr :: Ptr BotanHOTPStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a HOTP instance
diff --git a/src/Botan/Bindings/Hash.hs b/src/Botan/Bindings/Hash.hs
--- a/src/Botan/Bindings/Hash.hs
+++ b/src/Botan/Bindings/Hash.hs
@@ -84,7 +84,7 @@
 
 -- | Botan Hash object
 newtype {-# CTYPE "botan/ffi.h" "botan_hash_t" #-} BotanHash
-    = MkBotanHash { runBotanHash :: Ptr BotanHashStruct }
+    = MkBotanHash { ptr :: Ptr BotanHashStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the hash object
diff --git a/src/Botan/Bindings/MAC.hs b/src/Botan/Bindings/MAC.hs
--- a/src/Botan/Bindings/MAC.hs
+++ b/src/Botan/Bindings/MAC.hs
@@ -74,7 +74,7 @@
 
 -- | Botan MAC object
 newtype {-# CTYPE "botan/ffi.h" "botan_mac_t" #-} BotanMAC
-    = MkBotanMAC { runBotanMAC :: Ptr BotanMACStruct }
+    = MkBotanMAC { ptr :: Ptr BotanMACStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the MAC object
diff --git a/src/Botan/Bindings/MPI.hs b/src/Botan/Bindings/MPI.hs
--- a/src/Botan/Bindings/MPI.hs
+++ b/src/Botan/Bindings/MPI.hs
@@ -68,7 +68,7 @@
 
 -- | Botan MP object
 newtype {-# CTYPE "botan/ffi.h" "botan_mp_t" #-} BotanMP
-    = MkBotanMP { runBotanMP :: Ptr BotanMPStruct }
+    = MkBotanMP { ptr :: Ptr BotanMPStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy (deallocate) an MPI
diff --git a/src/Botan/Bindings/PubKey.hsc b/src/Botan/Bindings/PubKey.hsc
--- a/src/Botan/Bindings/PubKey.hsc
+++ b/src/Botan/Bindings/PubKey.hsc
@@ -159,7 +159,7 @@
 
 -- | Botan PrivKey object
 newtype {-# CTYPE "botan/ffi.h" "botan_privkey_t" #-} BotanPrivKey
-    = MkBotanPrivKey { runBotanPrivKey :: Ptr BotanPrivKeyStruct }
+    = MkBotanPrivKey { ptr :: Ptr BotanPrivKeyStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the PrivKey object
@@ -547,7 +547,7 @@
 
 -- | Botan PubKey object
 newtype {-# CTYPE "botan/ffi.h" "botan_pubkey_t" #-} BotanPubKey
-    = MkBotanPubKey { runBotanPubKey :: Ptr BotanPubKeyStruct }
+    = MkBotanPubKey { ptr :: Ptr BotanPubKeyStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the PubKey object
diff --git a/src/Botan/Bindings/PubKey/Decrypt.hsc b/src/Botan/Bindings/PubKey/Decrypt.hsc
--- a/src/Botan/Bindings/PubKey/Decrypt.hsc
+++ b/src/Botan/Bindings/PubKey/Decrypt.hsc
@@ -36,7 +36,7 @@
 
 -- | Botan decrypt object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_decrypt_t" #-} BotanPKOpDecrypt
-    = MkBotanPKOpDecrypt { runBotanPKOpDecrypt :: Ptr BotanPKOpDecryptStruct }
+    = MkBotanPKOpDecrypt { ptr :: Ptr BotanPKOpDecryptStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a decrypt object
diff --git a/src/Botan/Bindings/PubKey/Encrypt.hsc b/src/Botan/Bindings/PubKey/Encrypt.hsc
--- a/src/Botan/Bindings/PubKey/Encrypt.hsc
+++ b/src/Botan/Bindings/PubKey/Encrypt.hsc
@@ -37,7 +37,7 @@
 
 -- | Botan encrypt object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_encrypt_t" #-} BotanPKOpEncrypt
-    = MkBotanPKOpEncrypt { runBotanPKOpEncrypt :: Ptr BotanPKOpEncryptStruct }
+    = MkBotanPKOpEncrypt { ptr :: Ptr BotanPKOpEncryptStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a encrypt object
diff --git a/src/Botan/Bindings/PubKey/KeyAgreement.hsc b/src/Botan/Bindings/PubKey/KeyAgreement.hsc
--- a/src/Botan/Bindings/PubKey/KeyAgreement.hsc
+++ b/src/Botan/Bindings/PubKey/KeyAgreement.hsc
@@ -41,7 +41,7 @@
 
 -- | Botan key agreement object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_ka_t" #-} BotanPKOpKeyAgreement
-    = MkBotanPKOpKeyAgreement { runBotanPKOpKeyAgreement :: Ptr BotanPKOpKeyAgreementStruct }
+    = MkBotanPKOpKeyAgreement { ptr :: Ptr BotanPKOpKeyAgreementStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a key agreement object
diff --git a/src/Botan/Bindings/PubKey/KeyEncapsulation.hs b/src/Botan/Bindings/PubKey/KeyEncapsulation.hs
--- a/src/Botan/Bindings/PubKey/KeyEncapsulation.hs
+++ b/src/Botan/Bindings/PubKey/KeyEncapsulation.hs
@@ -41,7 +41,7 @@
 
 -- | Botan KEM encrypt object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_kem_encrypt_t" #-} BotanPKOpKEMEncrypt
-    = MkBotanPKOpKEMEncrypt { runBotanPKOpKEMEncrypt :: Ptr BotanPKOpKEMEncryptStruct }
+    = MkBotanPKOpKEMEncrypt { ptr :: Ptr BotanPKOpKEMEncryptStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a KEM encrypt object
@@ -87,7 +87,7 @@
 
 -- | Botan KEM decrypt object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_kem_decrypt_t" #-} BotanPKOpKEMDecrypt
-    = MkBotanPKOpKEMDecrypt { runBotanPKOpKEMDecrypt :: Ptr BotanPKOpKEMDecryptStruct }
+    = MkBotanPKOpKEMDecrypt { ptr :: Ptr BotanPKOpKEMDecryptStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a KEM decrypt object
diff --git a/src/Botan/Bindings/PubKey/Sign.hsc b/src/Botan/Bindings/PubKey/Sign.hsc
--- a/src/Botan/Bindings/PubKey/Sign.hsc
+++ b/src/Botan/Bindings/PubKey/Sign.hsc
@@ -39,7 +39,7 @@
 
 -- | Botan sign object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_sign_t" #-} BotanPKOpSign
-    = MkBotanPKOpSign { runBotanPKOpSign :: Ptr BotanPKOpSignStruct }
+    = MkBotanPKOpSign { ptr :: Ptr BotanPKOpSignStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a sign object
diff --git a/src/Botan/Bindings/PubKey/Verify.hsc b/src/Botan/Bindings/PubKey/Verify.hsc
--- a/src/Botan/Bindings/PubKey/Verify.hsc
+++ b/src/Botan/Bindings/PubKey/Verify.hsc
@@ -36,7 +36,7 @@
 
 -- | Botan verify object
 newtype {-# CTYPE "botan/ffi.h" "botan_pk_op_verify_t" #-} BotanPKOpVerify
-    = MkBotanPKOpVerify { runBotanPKOpVerify :: Ptr BotanPKOpVerifyStruct }
+    = MkBotanPKOpVerify { ptr :: Ptr BotanPKOpVerifyStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a verify object
diff --git a/src/Botan/Bindings/RNG.hs b/src/Botan/Bindings/RNG.hs
--- a/src/Botan/Bindings/RNG.hs
+++ b/src/Botan/Bindings/RNG.hs
@@ -48,7 +48,7 @@
 
 -- | Botan RNG object
 newtype {-# CTYPE "botan/ffi.h" "botan_rng_t" #-} BotanRNG
-    = MkBotanRNG { runBotanRNG :: Ptr BotanRNGStruct }
+    = MkBotanRNG { ptr :: Ptr BotanRNGStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the random number generator object
diff --git a/src/Botan/Bindings/SRP6.hs b/src/Botan/Bindings/SRP6.hs
--- a/src/Botan/Bindings/SRP6.hs
+++ b/src/Botan/Bindings/SRP6.hs
@@ -40,7 +40,7 @@
 
 -- | SRP-6 server session object
 newtype {-# CTYPE "botan/ffi.h" "botan_srp6_server_session_t" #-} BotanSRP6ServerSession
-  = MkBotanSRP6ServerSession { runBotanSRP6ServerSession :: Ptr BotanSRP6ServerSessionStruct }
+  = MkBotanSRP6ServerSession { ptr :: Ptr BotanSRP6ServerSessionStruct }
       deriving newtype (Eq, Ord, Storable)
 
 -- | Frees all resources of the SRP-6 server session object
diff --git a/src/Botan/Bindings/TOTP.hs b/src/Botan/Bindings/TOTP.hs
--- a/src/Botan/Bindings/TOTP.hs
+++ b/src/Botan/Bindings/TOTP.hs
@@ -64,7 +64,7 @@
 
 -- | Botan TOTP object
 newtype {-# CTYPE "botan/ffi.h" "botan_totp_t" #-} BotanTOTP
-    = MkBotanTOTP { runBotanTOTP :: Ptr BotanTOTPStruct }
+    = MkBotanTOTP { ptr :: Ptr BotanTOTPStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a TOTP instance
diff --git a/src/Botan/Bindings/X509.hsc b/src/Botan/Bindings/X509.hsc
--- a/src/Botan/Bindings/X509.hsc
+++ b/src/Botan/Bindings/X509.hsc
@@ -82,7 +82,7 @@
 
 -- | Botan X509Cert object
 newtype {-# CTYPE "botan/ffi.h" "botan_x509_cert_t" #-} BotanX509Cert
-    = MkBotanX509Cert { runBotanX509Cert :: Ptr BotanX509CertStruct }
+    = MkBotanX509Cert { ptr :: Ptr BotanX509CertStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a X509Cert instance
@@ -295,7 +295,7 @@
 
 -- | Botan X509CRL object
 newtype {-# CTYPE "botan/ffi.h" "botan_x509_crl_t" #-} BotanX509CRL
-    = MkBotanX509CRL { runBotanX509CRL :: Ptr BotanX509CRLStruct }
+    = MkBotanX509CRL { ptr :: Ptr BotanX509CRLStruct }
         deriving newtype (Eq, Ord, Storable)
 
 -- | Destroy a X509CRL instance
