diff --git a/Crypto/PubKey/DH.hs b/Crypto/PubKey/DH.hs
--- a/Crypto/PubKey/DH.hs
+++ b/Crypto/PubKey/DH.hs
@@ -14,6 +14,7 @@
     , SharedKey
     , generateParams
     , generatePrivate
+    , calculatePublic
     , generatePublic
     , getShared
     ) where
@@ -22,7 +23,7 @@
 import Crypto.Number.Prime (generateSafePrime)
 import Crypto.Number.Generate (generateMax)
 import Crypto.Types.PubKey.DH
-import Crypto.Random.API
+import Crypto.Random
 import Control.Arrow (first)
 
 -- | generate params from a specific generator (2 or 5 are common values)
@@ -36,10 +37,18 @@
 generatePrivate :: CPRG g => g -> Params -> (PrivateNumber, g)
 generatePrivate rng (Params p _) = first PrivateNumber $ generateMax rng p
 
--- | generate a public number that is for the other party benefits.
+-- | calculate the public number from the parameters and the private key
 -- this number is usually called Y in DH text.
+calculatePublic :: Params -> PrivateNumber -> PublicNumber
+calculatePublic (Params p g) (PrivateNumber x) = PublicNumber $ expSafe g x p
+
+-- | calculate the public number from the parameters and the private key
+-- this number is usually called Y in DH text.
+--
+-- DEPRECATED use calculatePublic
 generatePublic :: Params -> PrivateNumber -> PublicNumber
-generatePublic (Params p g) (PrivateNumber x) = PublicNumber $ expSafe g x p
+generatePublic = calculatePublic
+-- commented until 0.3 {-# DEPRECATED generatePublic "use calculatePublic" #-}
 
 -- | generate a shared key using our private number and the other party public number
 getShared :: Params -> PrivateNumber -> PublicNumber -> SharedKey
diff --git a/Crypto/PubKey/DSA.hs b/Crypto/PubKey/DSA.hs
--- a/Crypto/PubKey/DSA.hs
+++ b/Crypto/PubKey/DSA.hs
@@ -12,6 +12,9 @@
     , Signature(..)
     , PublicKey(..)
     , PrivateKey(..)
+    -- * generation
+    , generatePrivate
+    , calculatePublic
     -- * signature primitive
     , sign
     , signWith
@@ -19,7 +22,7 @@
     , verify
     ) where
 
-import Crypto.Random.API
+import Crypto.Random
 import Data.Maybe
 import Data.ByteString (ByteString)
 import Crypto.Number.ModArithmetic (expFast, expSafe, inverse)
@@ -27,6 +30,15 @@
 import Crypto.Number.Generate
 import Crypto.Types.PubKey.DSA
 import Crypto.PubKey.HashDescr
+
+-- | generate a private number with no specific property
+-- this number is usually called X in DSA text.
+generatePrivate :: CPRG g => g -> Params -> (PrivateNumber, g)
+generatePrivate rng (Params _ _ q) = generateMax rng q
+
+-- | Calculate the public number from the parameters and the private key
+calculatePublic :: Params -> PrivateNumber -> PublicNumber
+calculatePublic (Params p g _) x = expSafe g x p
 
 -- | sign message using the private key and an explicit k number.
 signWith :: Integer         -- ^ k random number
diff --git a/Crypto/PubKey/ECC/ECDSA.hs b/Crypto/PubKey/ECC/ECDSA.hs
--- a/Crypto/PubKey/ECC/ECDSA.hs
+++ b/Crypto/PubKey/ECC/ECDSA.hs
@@ -8,7 +8,7 @@
     ) where
 
 import Control.Monad
-import Crypto.Random.API
+import Crypto.Random
 import Data.Bits (shiftR)
 import Data.ByteString (ByteString)
 import Crypto.Number.ModArithmetic (inverse)
diff --git a/Crypto/PubKey/RSA.hs b/Crypto/PubKey/RSA.hs
--- a/Crypto/PubKey/RSA.hs
+++ b/Crypto/PubKey/RSA.hs
@@ -16,7 +16,7 @@
     , generateBlinder
     ) where
 
-import Crypto.Random.API
+import Crypto.Random
 import Crypto.Types.PubKey.RSA
 import Crypto.Number.ModArithmetic (inverse, inverseCoprimes)
 import Crypto.Number.Generate (generateMax)
diff --git a/Crypto/PubKey/RSA/OAEP.hs b/Crypto/PubKey/RSA/OAEP.hs
--- a/Crypto/PubKey/RSA/OAEP.hs
+++ b/Crypto/PubKey/RSA/OAEP.hs
@@ -21,7 +21,7 @@
     , decryptSafer
     ) where
 
-import Crypto.Random.API
+import Crypto.Random
 import Crypto.Types.PubKey.RSA
 import Crypto.PubKey.HashDescr
 import Crypto.PubKey.MaskGenFunction
diff --git a/Crypto/PubKey/RSA/PKCS15.hs b/Crypto/PubKey/RSA/PKCS15.hs
--- a/Crypto/PubKey/RSA/PKCS15.hs
+++ b/Crypto/PubKey/RSA/PKCS15.hs
@@ -22,7 +22,7 @@
     , verify
     ) where
 
-import Crypto.Random.API
+import Crypto.Random
 import Crypto.PubKey.Internal (and')
 import Crypto.Types.PubKey.RSA
 import Data.ByteString (ByteString)
diff --git a/Crypto/PubKey/RSA/PSS.hs b/Crypto/PubKey/RSA/PSS.hs
--- a/Crypto/PubKey/RSA/PSS.hs
+++ b/Crypto/PubKey/RSA/PSS.hs
@@ -16,7 +16,7 @@
     , verify
     ) where
 
-import Crypto.Random.API
+import Crypto.Random
 import Crypto.Types.PubKey.RSA
 import Data.ByteString (ByteString)
 import Data.Byteable
diff --git a/crypto-pubkey.cabal b/crypto-pubkey.cabal
--- a/crypto-pubkey.cabal
+++ b/crypto-pubkey.cabal
@@ -1,5 +1,5 @@
 Name:                crypto-pubkey
-Version:             0.2.3
+Version:             0.2.4
 Description:
     Public Key cryptography
     .
