diff --git a/Crypto/Types/PubKey/DH.hs b/Crypto/Types/PubKey/DH.hs
--- a/Crypto/Types/PubKey/DH.hs
+++ b/Crypto/Types/PubKey/DH.hs
@@ -7,23 +7,23 @@
 -- Portability : Excellent
 --
 module Crypto.Types.PubKey.DH
-	( Params
-	, PublicNumber(..)
-	, PrivateNumber(..)
-	, SharedKey(..)
-	) where
+    ( Params
+    , PublicNumber(..)
+    , PrivateNumber(..)
+    , SharedKey(..)
+    ) where
 
 -- | Represent Diffie Hellman parameters namely P (prime), and G (generator).
 type Params = (Integer,Integer)
 
 -- | Represent Diffie Hellman public number Y.
 newtype PublicNumber = PublicNumber Integer
-	deriving (Show,Read,Eq,Enum,Real,Num,Ord)
+    deriving (Show,Read,Eq,Enum,Real,Num,Ord)
 
 -- | Represent Diffie Hellman private number X.
 newtype PrivateNumber = PrivateNumber Integer
-	deriving (Show,Read,Eq,Enum,Real,Num,Ord)
+    deriving (Show,Read,Eq,Enum,Real,Num,Ord)
 
 -- | Represent Diffie Hellman shared secret.
 newtype SharedKey = SharedKey Integer
-	deriving (Show,Read,Eq,Enum,Real,Num,Ord)
+    deriving (Show,Read,Eq,Enum,Real,Num,Ord)
diff --git a/Crypto/Types/PubKey/DSA.hs b/Crypto/Types/PubKey/DSA.hs
--- a/Crypto/Types/PubKey/DSA.hs
+++ b/Crypto/Types/PubKey/DSA.hs
@@ -7,11 +7,11 @@
 -- Portability : Excellent
 --
 module Crypto.Types.PubKey.DSA
-	( Params
-	, Signature
-	, PublicKey(..)
-	, PrivateKey(..)
-	) where
+    ( Params
+    , Signature
+    , PublicKey(..)
+    , PrivateKey(..)
+    ) where
 
 import Data.Data
 
@@ -23,15 +23,15 @@
 
 -- | Represent a DSA public key.
 data PublicKey = PublicKey
-	{ public_params :: Params   -- ^ DSA parameters
-	, public_y      :: Integer  -- ^ DSA public Y
-	} deriving (Show,Read,Eq,Data,Typeable)
+    { public_params :: Params   -- ^ DSA parameters
+    , public_y      :: Integer  -- ^ DSA public Y
+    } deriving (Show,Read,Eq,Data,Typeable)
 
 -- | Represent a DSA private key.
 --
 -- Only x need to be secret.
 -- the DSA parameters are publicly shared with the other side.
 data PrivateKey = PrivateKey
-	{ private_params :: Params   -- ^ DSA parameters
-	, private_x      :: Integer  -- ^ DSA private X
-	} deriving (Show,Read,Eq,Data,Typeable)
+    { private_params :: Params   -- ^ DSA parameters
+    , private_x      :: Integer  -- ^ DSA private X
+    } deriving (Show,Read,Eq,Data,Typeable)
diff --git a/Crypto/Types/PubKey/RSA.hs b/Crypto/Types/PubKey/RSA.hs
--- a/Crypto/Types/PubKey/RSA.hs
+++ b/Crypto/Types/PubKey/RSA.hs
@@ -7,22 +7,24 @@
 -- Portability : Excellent
 --
 module Crypto.Types.PubKey.RSA
-	( PublicKey(..)
-	, PrivateKey(..)
-	) where
+    ( PublicKey(..)
+    , PrivateKey(..)
+    , private_size
+    , private_n
+    ) where
 
 import Data.Data
 
 -- | Represent a RSA public key
 data PublicKey = PublicKey
-	{ public_size :: Int      -- ^ size of key in bytes
-	, public_n    :: Integer  -- ^ public p*q
-	, public_e    :: Integer  -- ^ public exponant e
-	} deriving (Show,Read,Eq,Data,Typeable)
+    { public_size :: Int      -- ^ size of key in bytes
+    , public_n    :: Integer  -- ^ public p*q
+    , public_e    :: Integer  -- ^ public exponant e
+    } deriving (Show,Read,Eq,Data,Typeable)
 
 -- | Represent a RSA private key.
 -- 
--- Only the sz, n and d fields are mandatory to fill.
+-- Only the pub, d fields are mandatory to fill.
 --
 -- p, q, dP, dQ, qinv are by-product during RSA generation,
 -- but are useful to record here to speed up massively
@@ -31,12 +33,15 @@
 -- implementations can leave optional fields to 0.
 --
 data PrivateKey = PrivateKey
-	{ private_size :: Int     -- ^ size of key in bytes
-	, private_n    :: Integer -- ^ private p*q
-	, private_d    :: Integer -- ^ private exponant d
-	, private_p    :: Integer -- ^ p prime number
-	, private_q    :: Integer -- ^ q prime number
-	, private_dP   :: Integer -- ^ d mod (p-1)
-	, private_dQ   :: Integer -- ^ d mod (q-1)
-	, private_qinv :: Integer -- ^ q^(-1) mod p
-	} deriving (Show,Read,Eq,Data,Typeable)
+    { private_pub  :: PublicKey -- ^ public part of a private key (size, n and e)
+    , private_d    :: Integer   -- ^ private exponant d
+    , private_p    :: Integer   -- ^ p prime number
+    , private_q    :: Integer   -- ^ q prime number
+    , private_dP   :: Integer   -- ^ d mod (p-1)
+    , private_dQ   :: Integer   -- ^ d mod (q-1)
+    , private_qinv :: Integer   -- ^ q^(-1) mod p
+    } deriving (Show,Read,Eq,Data,Typeable)
+
+private_size = public_size . private_pub
+private_n    = public_n . private_pub
+private_e    = public_e . private_pub
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2011 Vincent Hanquez <vincent@snarc.org>
+Copyright (c) 2010-2012 Vincent Hanquez <vincent@snarc.org>
 
 All rights reserved.
 
diff --git a/crypto-pubkey-types.cabal b/crypto-pubkey-types.cabal
--- a/crypto-pubkey-types.cabal
+++ b/crypto-pubkey-types.cabal
@@ -1,5 +1,5 @@
 Name:                crypto-pubkey-types
-Version:             0.1.1
+Version:             0.2.0
 Description:         Generic cryptography public keys algorithm types
 License:             BSD3
 License-file:        LICENSE
@@ -16,8 +16,7 @@
   Exposed-modules:   Crypto.Types.PubKey.RSA
                      Crypto.Types.PubKey.DSA
                      Crypto.Types.PubKey.DH
-  Build-depends:     base >= 4 && < 5,
-                     crypto-api >= 0.5
+  Build-depends:     base >= 4 && < 5
 
 source-repository head
   type:     git
