diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,10 +1,13 @@
+v0.11.0.0
+* The BitX API no longer gives trades when returning private orders. BREAKING CHANGE.
+* Due to the above change, a new function -- getAllTrades -- has been added to the private order API.
+* The basic types now come with a large set of default typeclasses, to minimise the need for orphan instances.
+
 v0.10.0.0
-* New optional beneficiary ID field for withdrawal requests.
+* New optional beneficiary ID field for withdrawal requests. BREAKING CHANGE.
 
 v0.9.0.1
 * Compatibility with http-client-0.5.0 and http-client-tls-0.3.0.
-
-v0.9.0.0
 * The BitXAuth type can now be written as a string using the OverloadedStrings extension.
 
 v0.9.0.0
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/tebello-thejane/bitx-haskell.svg?branch=master)](https://travis-ci.org/tebello-thejane/bitx-haskell)
+[![Build Status](https://travis-ci.org/tebello-thejane/bitx.hs.svg?branch=master)](https://travis-ci.org/tebello-thejane/bitx.hs)
 [![Hackage](https://budueba.com/hackage/bitx-bitcoin)](https://hackage.haskell.org/package/bitx-bitcoin)
 [![BSD3](https://img.shields.io/badge/license-BSD3-brightgreen.svg?style=flat)](http://opensource.org/licenses/BSD-3-Clause)
 
diff --git a/bitx-bitcoin.cabal b/bitx-bitcoin.cabal
--- a/bitx-bitcoin.cabal
+++ b/bitx-bitcoin.cabal
@@ -1,5 +1,5 @@
 name:                bitx-bitcoin
-version:             0.10.0.0
+version:             0.11.0.0
 synopsis:            A Haskell library for working with the BitX bitcoin exchange.
 
 description:
@@ -34,7 +34,7 @@
 
 cabal-version:       >=1.10
 
-homepage:            https://github.com/tebello-thejane/bitx-haskell
+homepage:            https://github.com/tebello-thejane/bitx.hs
 
 tested-with:         GHC >=7.8.1 && <=8.0.1
 
@@ -75,7 +75,8 @@
                        http-client-tls,
                        microlens,
                        microlens-th,
-                       http-types
+                       http-types,
+                       deepseq
 
   default-language:    Haskell2010
   hs-source-dirs:      src
@@ -86,7 +87,7 @@
   type:
     git
   location:
-    git://github.com/tebello-thejane/bitx-haskell.git
+    git://github.com/tebello-thejane/bitx.hs.git
 
 --------------------------------------------------------------------------------
 
diff --git a/src/Network/Bitcoin/BitX/Private.hs b/src/Network/Bitcoin/BitX/Private.hs
--- a/src/Network/Bitcoin/BitX/Private.hs
+++ b/src/Network/Bitcoin/BitX/Private.hs
@@ -131,7 +131,8 @@
 
 {- | Create receive address
 
-Allocates a new receive address to your account. There is a limit of 50 receive addresses per user.
+Allocates a new receive address to your account. Address creation is rate limited to 1 per hour,
+allowing for bursts of up to 10 consecutive calls.
 
 @Perm_R_Addresses@ permission is required.
 -}
diff --git a/src/Network/Bitcoin/BitX/Private/Order.hs b/src/Network/Bitcoin/BitX/Private/Order.hs
--- a/src/Network/Bitcoin/BitX/Private/Order.hs
+++ b/src/Network/Bitcoin/BitX/Private/Order.hs
@@ -25,7 +25,8 @@
   postOrder,
   stopOrder,
   getOrder,
-  postMarketOrder
+  postMarketOrder,
+  getAllTrades
   ) where
 
 import Network.Bitcoin.BitX.Internal
@@ -33,6 +34,8 @@
 import qualified Data.Text as Txt
 import Network.Bitcoin.BitX.Response
 import Data.Monoid ((<>))
+import Data.Time (UTCTime)
+import Network.Bitcoin.BitX.Types.Internal (timeToTimestamp)
 
 {- | Returns a list of the most recently placed orders.
 
@@ -80,7 +83,7 @@
 @Perm_R_Orders@ permission is required.
  -}
 
-getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrderWithTrades)
+getOrder :: BitXAuth -> OrderID -> IO (BitXAPIResponse PrivateOrder)
 getOrder auth oid = simpleBitXGetAuth_ auth $ "orders/" <> oid
 
 {- | Create a new market order.
@@ -98,3 +101,17 @@
  -}
 postMarketOrder :: BitXAuth -> MarketOrderRequest -> IO (BitXAPIResponse OrderID)
 postMarketOrder auth moreq = simpleBitXPOSTAuth_ auth moreq "marketorder"
+
+{- | Returns a list of your recent trades for a given pair, sorted by oldest first.
+
+@Perm_R_Orders@ permission is required.
+-}
+getAllTrades :: BitXAuth -> CcyPair -> Maybe UTCTime -> Maybe Integer -> IO (BitXAPIResponse [PrivateTrade])
+getAllTrades auth cpair since limit = simpleBitXGetAuth_ auth url
+    where
+      url = "listtrades?pair=" <> (Txt.pack $ show cpair) <> case (since, limit) of
+            (Nothing, Nothing)  -> ""
+            (Just sn, Nothing)  -> "&since=" <> Txt.pack (show (timeToTimestamp sn))
+            (Nothing, Just lm)  -> "&limit=" <> Txt.pack (show lm)
+            (Just sn, Just lm)  -> "&since=" <> Txt.pack (show (timeToTimestamp sn)) <> "&limit=" <> Txt.pack (show lm)
+
diff --git a/src/Network/Bitcoin/BitX/Public.hs b/src/Network/Bitcoin/BitX/Public.hs
--- a/src/Network/Bitcoin/BitX/Public.hs
+++ b/src/Network/Bitcoin/BitX/Public.hs
@@ -76,5 +76,6 @@
 {- | Returns a list of the most recent trades -}
 
 getTrades :: Maybe UTCTime -> CcyPair -> IO (BitXAPIResponse [Trade])
-getTrades   Nothing    cyp = simpleBitXGet_ $ "trades?pair=" <> pack  (show cyp)
-getTrades (Just since) cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp) <> "since=" <> pack (show (timeToTimestamp since))
+getTrades   Nothing    cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp)
+getTrades (Just since) cyp = simpleBitXGet_ $ "trades?pair=" <> pack (show cyp) <> "&since=" <> pack (show (timeToTimestamp since))
+
diff --git a/src/Network/Bitcoin/BitX/Types.hs b/src/Network/Bitcoin/BitX/Types.hs
--- a/src/Network/Bitcoin/BitX/Types.hs
+++ b/src/Network/Bitcoin/BitX/Types.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE DeriveGeneric, QuasiQuotes, OverloadedStrings, DataKinds,
-    MultiParamTypeClasses, TemplateHaskell, FunctionalDependencies, FlexibleInstances #-}
+    MultiParamTypeClasses, TemplateHaskell, FunctionalDependencies, FlexibleInstances,
+    DeriveDataTypeable, StandaloneDeriving #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -33,7 +34,6 @@
     MarketOrderRequest(..),
     RequestSuccess,
     BitXError(..),
-    PrivateOrderWithTrades(..),
     AccountID,
     Asset(..),
     Balance(..),
@@ -48,6 +48,7 @@
     BitXClientAuth,
     Transaction(..),
     Account(..),
+    PrivateTrade(..),
 
 -- | Convenient constructors for records which serve as input parameters to functions. These are not
 --   completely safe (since you can forget to set a field and the Haskell compiler won't notice),
@@ -100,7 +101,6 @@
     HasState(..),
     HasOrderType(..),
     HasLimitVolume(..),
-    HasTrades(..),
     HasRowIndex(..),
     HasBalance(..),
     HasAvailable(..),
@@ -127,7 +127,8 @@
     HasName(..),
     HasIsBuy(..),
     HasStatus(..),
-    HasBeneficiaryId(..)
+    HasBeneficiaryId(..),
+    HasOrderId(..)
   ) where
 
 import Data.Aeson (FromJSON(..))
@@ -137,6 +138,8 @@
 import Data.Scientific (Scientific)
 import Lens.Micro.TH (makeFields)
 import Data.String (IsString(..))
+import Data.Data (Data, Typeable)
+import Control.DeepSeq (NFData)
 
 type OrderID = Text
 
@@ -144,8 +147,10 @@
 data OrderType =
     ASK -- ^ A request to sell
     | BID -- ^ A request to buy
-    deriving (Show, Generic, Eq)
+    deriving (Show, Generic, Eq, Data, Typeable, Ord)
 
+instance NFData OrderType
+
 -- | The state of a (private) placed request -- either an order or a withdrawal request.
 data RequestStatus =
     PENDING -- ^ Not yet completed. An order will stay in 'PENDING' state even as it is partially
@@ -153,8 +158,10 @@
     | COMPLETE -- ^ Completed.
     | CANCELLED -- ^ Cancelled. Note that an order cannot be in 'CANCELLED' state, since cancelling
     -- an order removes it from the orderbook.
-    deriving (Show, Generic, Eq)
+    deriving (Show, Generic, Eq, Data, Typeable, Ord)
 
+instance NFData RequestStatus
+
 type AccountID = Text
 
 -- | A possible error which the BitX API might return,
@@ -165,8 +172,10 @@
 data BitXError = BitXError {
     bitXErrorError :: Text,
     bitXErrorErrorCode :: Text
-    } deriving (Eq, Show)
+    } deriving (Eq, Generic, Show, Data, Typeable, Ord)
 
+instance NFData BitXError
+
 makeFields ''BitXError
 
 -- | A currency pair
@@ -185,8 +194,10 @@
     | IDRXBT -- ^ Indonesian Rupiah vs. Bitcoin
     | XBTSGD -- ^ Bitcoin vs. Singapore Dollar
     | SGDXBT -- ^ Singapore Dollar vs. Bitcoin
-  deriving (Show, Generic, Eq)
+  deriving (Show, Generic, Eq, Data, Typeable, Ord)
 
+instance NFData CcyPair
+
 -- | The state of a single market, identified by the currency pair.
 -- As usual, the ask\/sell price is the price of the last filled ask order, and the bid\/buy price is
 -- the price of the last filled bid order. Necessarily @bid <= ask.@
@@ -197,8 +208,10 @@
     tickerLastTrade :: Maybe Int,
     tickerRolling24HourVolume :: Scientific,
     tickerPair :: CcyPair
-    } deriving (Eq, Show)
+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Ticker
+
 makeFields ''Ticker
 
 -- | A trade-able asset. Essentially, a currency.
@@ -211,8 +224,10 @@
     | NGN -- ^ Nigerian Naira
     | IDR -- ^ Indonesian Rupiah
     | SGD -- ^ Singapore Dollar
-  deriving (Show, Generic, Eq)
+  deriving (Show, Generic, Eq, Data, Typeable, Ord)
 
+instance NFData Asset
+
 -- | The type of a withdrawal request.
 data WithdrawalType =
     ZAR_EFT -- ^ ZAR by Electronic Funds Transfer
@@ -220,18 +235,24 @@
     | KES_MPESA -- ^ Kenyan Shilling by Vodafone MPESA
     | MYR_IBG -- ^ Malaysian Ringgit by Interbank GIRO (?)
     | IDR_LLG -- ^ Indonesian Rupiah by Lalu Lintas Giro (??)
-    deriving (Show, Generic, Eq)
+    deriving (Show, Generic, Eq, Data, Typeable, Ord)
 
-data QuoteType = BUY | SELL deriving (Show, Generic, Eq)
+instance NFData WithdrawalType
 
+data QuoteType = BUY | SELL deriving (Show, Generic, Eq, Data, Typeable, Ord)
+
+instance NFData QuoteType
+
 type RequestSuccess = Bool
 
 -- | A single placed order in the orderbook
 data Order = Order {
     orderVolume :: Scientific,
     orderPrice :: Int
-    } deriving (Eq, Show)
+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Order
+
 makeFields ''Order
 
 -- | Convenient type alias for a bid order
@@ -246,8 +267,10 @@
     orderbookTimestamp :: UTCTime,
     orderbookBids :: [Bid],
     orderbookAsks :: [Ask]
-    } deriving (Eq, Show)
+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Orderbook
+
 makeFields ''Orderbook
 
 data Trade = Trade {
@@ -255,15 +278,19 @@
     tradeVolume :: Scientific,
     tradePrice :: Int,
     tradeIsBuy :: Bool
-    } deriving (Eq, Show)
+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Trade
+
 makeFields ''Trade
 
 -- | An auth type used by all private API calls, after authorisation.
 data BitXAuth = BitXAuth
         {bitXAuthId :: Text,
-         bitXAuthSecret :: Text} deriving (Eq, Show)
+         bitXAuthSecret :: Text} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData BitXAuth
+
 -- |@mkBitXAuth = BitXAuth "" ""@
 mkBitXAuth :: BitXAuth
 mkBitXAuth = BitXAuth "" ""
@@ -277,7 +304,6 @@
     BitXAuth (pack $ fst cut) (pack $ tail $ snd cut)
     where
       cut = span (/= ':') auth
-
 -- |
 -- >>> :set -XOverloadedStrings
 -- >>> "id:secret" :: BitXAuth
@@ -285,6 +311,7 @@
 -- >>> "id:se:cret" :: BitXAuth
 -- BitXAuth {bitXAuthId = "id", bitXAuthSecret = "se:cret"}
 
+
 -- | A recently placed (private) order, containing a lot more information than is available on the
 -- public order book.
 data PrivateOrder = PrivateOrder
@@ -300,29 +327,11 @@
          privateOrderId :: OrderID,
          privateOrderPair :: CcyPair,
          privateOrderState :: RequestStatus,
-         privateOrderOrderType :: OrderType } deriving (Eq, Show)
-
-makeFields ''PrivateOrder
+         privateOrderOrderType :: OrderType } deriving (Eq, Show, Generic, Data, Typeable)
 
--- | A recently placed (private) order, containing a lot more information than is available on the
--- public order book, together with details of any trades which have (partially) filled it.
-data PrivateOrderWithTrades = PrivateOrderWithTrades
-        {privateOrderWithTradesBase :: Scientific,
-         privateOrderWithTradesCounter :: Scientific,
-         privateOrderWithTradesCreationTimestamp :: UTCTime,
-         privateOrderWithTradesExpirationTimestamp :: UTCTime,
-         privateOrderWithTradesCompletedTimestamp :: UTCTime,
-         privateOrderWithTradesFeeBase :: Scientific,
-         privateOrderWithTradesFeeCounter :: Scientific,
-         privateOrderWithTradesLimitPrice :: Int,
-         privateOrderWithTradesLimitVolume :: Scientific,
-         privateOrderWithTradesId :: OrderID,
-         privateOrderWithTradesPair :: CcyPair,
-         privateOrderWithTradesState :: RequestStatus,
-         privateOrderWithTradesOrderType :: OrderType,
-         privateOrderWithTradesTrades :: [Trade] } deriving (Eq, Show)
+instance NFData PrivateOrder
 
-makeFields ''PrivateOrderWithTrades
+makeFields ''PrivateOrder
 
 -- | A transaction on a private user account.
 data Transaction = Transaction
@@ -333,8 +342,10 @@
          transactionBalanceDelta :: Scientific,
          transactionAvailableDelta :: Scientific,
          transactionCurrency :: Asset,
-         transactionDescription :: Text} deriving (Eq, Show)
+         transactionDescription :: Text} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Transaction
+
 makeFields ''Transaction
 
 -- | A request to place an order.
@@ -342,8 +353,10 @@
         {orderRequestPair :: CcyPair,
          orderRequestOrderType :: OrderType,
          orderRequestVolume :: Scientific,
-         orderRequestPrice :: Int } deriving (Eq, Show)
+         orderRequestPrice :: Int } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData OrderRequest
+
 makeFields ''OrderRequest
 
 -- |@mkOrderRequest = OrderRequest ZARXBT BID 0 0@
@@ -353,8 +366,10 @@
 data MarketOrderRequest = MarketOrderRequest
         {marketOrderRequestPair :: CcyPair,
          marketOrderRequestOrderType :: OrderType,
-         marketOrderRequestVolume :: Scientific } deriving (Eq, Show)
+         marketOrderRequestVolume :: Scientific } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData MarketOrderRequest
+
 makeFields ''MarketOrderRequest
 
 -- |@mkMarketOrderRequest = MarketOrderRequest ZARXBT BID 0@
@@ -367,8 +382,10 @@
          balanceAsset :: Asset,
          balanceBalance :: Scientific,
          balanceReserved :: Scientific,
-         balanceUnconfirmed :: Scientific } deriving (Eq, Show)
+         balanceUnconfirmed :: Scientific } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Balance
+
 makeFields ''Balance
 
 -- | A registered address for an acocunt.
@@ -376,23 +393,29 @@
         {fundingAddressAsset :: Asset,
          fundingAddressAddress :: Text,
          fundingAddressTotalReceived :: Scientific,
-         fundingAddressTotalUnconfirmed :: Scientific} deriving (Eq, Show)
+         fundingAddressTotalUnconfirmed :: Scientific} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData FundingAddress
+
 makeFields ''FundingAddress
 
 -- | The state of a request to withdraw from an account.
 data WithdrawalRequest = WithdrawalRequest
         {withdrawalRequestStatus :: RequestStatus,
-         withdrawalRequestId :: Text } deriving (Eq, Show)
+         withdrawalRequestId :: Text } deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData WithdrawalRequest
+
 makeFields ''WithdrawalRequest
 
 -- | A request to withdraw from an account.
 data NewWithdrawal = NewWithdrawal
         {newWithdrawalWithdrawalType :: WithdrawalType,
          newWithdrawalAmount :: Scientific,
-         newWithdrawalBeneficiaryId :: Maybe Text} deriving (Eq, Show)
+         newWithdrawalBeneficiaryId :: Maybe Text} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData NewWithdrawal
+
 makeFields ''NewWithdrawal
 
 -- |@mkNewWithdrawal = NewWithdrawal ZAR_EFT 0@
@@ -405,8 +428,10 @@
          bitcoinSendRequestCurrency :: Asset,
          bitcoinSendRequestAddress :: Text,
          bitcoinSendRequestDescription :: Maybe Text,
-         bitcoinSendRequestMessage :: Maybe Text} deriving (Eq, Show)
+         bitcoinSendRequestMessage :: Maybe Text} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData BitcoinSendRequest
+
 makeFields ''BitcoinSendRequest
 
 -- |@mkBitcoinSendRequest = BitcoinSendRequest 0 ZAR "" Nothing Nothing@
@@ -417,8 +442,10 @@
 data QuoteRequest = QuoteRequest
         {quoteRequestQuoteType :: QuoteType,
          quoteRequestPair :: CcyPair,
-         quoteRequestBaseAmount :: Scientific} deriving (Eq, Show)
+         quoteRequestBaseAmount :: Scientific} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData QuoteRequest
+
 makeFields ''QuoteRequest
 
 -- |@mkQuoteRequest = QuoteRequest BUY ZARXBT 0@
@@ -435,22 +462,46 @@
          orderQuoteCreatedAt :: UTCTime,
          orderQuoteExpiresAt :: UTCTime,
          orderQuoteDiscarded :: Bool,
-         orderQuoteExercised :: Bool} deriving (Eq, Show)
+         orderQuoteExercised :: Bool} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData OrderQuote
+
 makeFields ''OrderQuote
 
 -- | A registered account.
 data Account = Account
         {accountId :: Text,
          accountName :: Text,
-         accountCurrency :: Asset} deriving (Eq, Show)
+         accountCurrency :: Asset} deriving (Eq, Show, Generic, Data, Typeable, Ord)
 
+instance NFData Account
+
 makeFields ''Account
 
 -- |@mkAccount = Account "" "" ZAR@
 mkAccount :: Account
 mkAccount = Account "" "" ZAR
 
+-- | A private trade, containing a lot more information than is avaiable when inspecting trades
+-- via the public API.
+data PrivateTrade = PrivateTrade {
+    privateTradeBase :: Scientific,
+    privateTradeCounter :: Scientific,
+    privateTradeFeeBase :: Scientific,
+    privateTradeFeeCounter :: Scientific,
+    privateTradeIsBuy :: Bool,
+    privateTradeOrderId :: Text,
+    privateTradePair :: CcyPair,
+    privateTradePrice :: Int,
+    privateTradeTimestamp :: UTCTime,
+    privateTradeOrderType :: OrderType,
+    privateTradeVolume :: Scientific
+    } deriving (Eq, Show, Generic, Data, Typeable, Ord)
+
+instance NFData PrivateTrade
+
+makeFields ''PrivateTrade
+
 instance FromJSON CcyPair
 
 instance FromJSON Asset
@@ -460,3 +511,4 @@
 instance FromJSON WithdrawalType
 
 instance FromJSON QuoteType
+
diff --git a/src/Network/Bitcoin/BitX/Types/Internal.hs b/src/Network/Bitcoin/BitX/Types/Internal.hs
--- a/src/Network/Bitcoin/BitX/Types/Internal.hs
+++ b/src/Network/Bitcoin/BitX/Types/Internal.hs
@@ -365,46 +365,6 @@
     aesToRec RequestSuccess_ {..} =
         requestSuccess'success
 
-------------------------------------- PrivateOrderWithTrades type ----------------------------------
-
-data PrivateOrderWithTrades_ = PrivateOrderWithTrades_
-    { privateOrderWithTrades'base :: QuotedScientific
-    , privateOrderWithTrades'counter :: QuotedScientific
-    , privateOrderWithTrades'creation_timestamp :: TimestampMS
-    , privateOrderWithTrades'expiration_timestamp :: TimestampMS
-    , privateOrderWithTrades'completed_timestamp :: TimestampMS
-    , privateOrderWithTrades'fee_base :: QuotedScientific
-    , privateOrderWithTrades'fee_counter :: QuotedScientific
-    , privateOrderWithTrades'limit_price :: QuotedInt
-    , privateOrderWithTrades'limit_volume :: QuotedScientific
-    , privateOrderWithTrades'order_id :: Types.OrderID
-    , privateOrderWithTrades'pair :: Types.CcyPair
-    , privateOrderWithTrades'state :: RequestStatus_
-    , privateOrderWithTrades'type :: OrderType_
-    , privateOrderWithTrades'trades :: [Trade_]
-    }
-
-$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}
-    ''PrivateOrderWithTrades_)
-
-instance BitXAesRecordConvert Types.PrivateOrderWithTrades where
-    type Aes Types.PrivateOrderWithTrades = PrivateOrderWithTrades_
-    aesToRec PrivateOrderWithTrades_ {..} =
-        Types.PrivateOrderWithTrades {privateOrderWithTradesBase = qsToScientific privateOrderWithTrades'base,
-                  privateOrderWithTradesCounter = qsToScientific privateOrderWithTrades'counter,
-                  privateOrderWithTradesCreationTimestamp = tsmsToUTCTime privateOrderWithTrades'creation_timestamp,
-                  privateOrderWithTradesExpirationTimestamp = tsmsToUTCTime privateOrderWithTrades'expiration_timestamp,
-                  privateOrderWithTradesCompletedTimestamp = tsmsToUTCTime privateOrderWithTrades'completed_timestamp,
-                  privateOrderWithTradesFeeBase = qsToScientific privateOrderWithTrades'fee_base,
-                  privateOrderWithTradesFeeCounter = qsToScientific privateOrderWithTrades'fee_counter,
-                  privateOrderWithTradesLimitPrice = qiToInt privateOrderWithTrades'limit_price,
-                  privateOrderWithTradesLimitVolume = qsToScientific privateOrderWithTrades'limit_volume,
-                  privateOrderWithTradesId = privateOrderWithTrades'order_id,
-                  privateOrderWithTradesPair = privateOrderWithTrades'pair,
-                  privateOrderWithTradesState = requestStatusParse privateOrderWithTrades'state,
-                  privateOrderWithTradesOrderType = orderTypeParse privateOrderWithTrades'type,
-                  privateOrderWithTradesTrades = map aesToRec privateOrderWithTrades'trades}
-
 -------------------------------------------- Balance type ------------------------------------------
 
 data Balance_ = Balance_
@@ -660,3 +620,51 @@
         [("type", if (moreq ^. Types.orderType) == Types.BID then "BUY" else "SELL"),
          ("pair", showableToBytestring_ (moreq ^. Types.pair)),
          (if (moreq ^. Types.orderType) == Types.BID then "counter_volume" else "base_volume", realToDecimalByteString_ (moreq ^. Types.volume))]
+
+------------------------------------------ PrivateTrade type ---------------------------------------
+
+data PrivateTrade_ = PrivateTrade_
+    { privateTrade'base :: QuotedScientific
+    , privateTrade'counter :: QuotedScientific
+    , privateTrade'fee_base :: QuotedScientific
+    , privateTrade'fee_counter :: QuotedScientific
+    , privateTrade'is_buy :: Bool
+    , privateTrade'order_id :: Types.OrderID
+    , privateTrade'pair :: Types.CcyPair
+    , privateTrade'price :: QuotedInt
+    , privateTrade'timestamp :: TimestampMS
+    , privateTrade'type :: OrderType_
+    , privateTrade'volume :: QuotedScientific
+    }
+
+$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}
+    ''PrivateTrade_)
+
+instance BitXAesRecordConvert Types.PrivateTrade where
+    type Aes Types.PrivateTrade = PrivateTrade_
+    aesToRec PrivateTrade_ {..} =
+        Types.PrivateTrade {privateTradeBase = qsToScientific privateTrade'base,
+                  privateTradeCounter = qsToScientific privateTrade'counter,
+                  privateTradeFeeBase = qsToScientific privateTrade'fee_base,
+                  privateTradeFeeCounter = qsToScientific privateTrade'fee_counter,
+                  privateTradeIsBuy = privateTrade'is_buy,
+                  privateTradeOrderId = privateTrade'order_id,
+                  privateTradePair = privateTrade'pair,
+                  privateTradePrice = qiToInt privateTrade'price,
+                  privateTradeTimestamp = tsmsToUTCTime privateTrade'timestamp,
+                  privateTradeOrderType = orderTypeParse privateTrade'type,
+                  privateTradeVolume = qsToScientific privateTrade'volume}
+
+----------------------------------------- PrivateTrades type ----------------------------------------
+
+data PrivateTrades_ = PrivateTrades_
+    { privateTrades'trades :: [PrivateTrade_]
+    }
+
+$(AesTH.deriveFromJSON AesTH.defaultOptions{AesTH.fieldLabelModifier = last . splitOn "'"}
+    ''PrivateTrades_)
+
+instance BitXAesRecordConvert [Types.PrivateTrade] where
+    type Aes [Types.PrivateTrade] = PrivateTrades_
+    aesToRec PrivateTrades_ {..} =
+        map aesToRec privateTrades'trades
diff --git a/test/Network/Bitcoin/BitX/Spec/Specs/AesonRecordSpec.hs b/test/Network/Bitcoin/BitX/Spec/Specs/AesonRecordSpec.hs
--- a/test/Network/Bitcoin/BitX/Spec/Specs/AesonRecordSpec.hs
+++ b/test/Network/Bitcoin/BitX/Spec/Specs/AesonRecordSpec.hs
@@ -121,28 +121,6 @@
       recordAesCheck
         "{\"success\":true}"
         (True :: RequestSuccess)
-    it "PrivateOrderWithTrades is parsed properly" $
-      recordAesCheck
-        "{\"base\":\"568.7\", \"counter\":3764.2,\"creation_timestamp\":478873467, \
-            \ \"expiration_timestamp\":8768834222, \"completed_timestamp\":6511257825, \"fee_base\":\"3687.3\", \"fee_counter\":12.9,\
-            \ \"limit_price\":765.00,\"limit_volume\":55.2,\"order_id\":\"83YG\",\"pair\":\"NADXBT\",\
-            \ \"state\":\"COMPLETE\",\"type\":\"BID\", \"trades\":[{\"timestamp\":1431811395699, \
-            \ \"volume\":\"6754.09\",\"price\":\"5327.00\",\"is_buy\":false}]}"
-        PrivateOrderWithTrades
-            {privateOrderWithTradesBase = 568.7,
-             privateOrderWithTradesCounter = 3764.2,
-             privateOrderWithTradesCreationTimestamp = posixSecondsToUTCTime 478873.467,
-             privateOrderWithTradesExpirationTimestamp = posixSecondsToUTCTime 8768834.222,
-             privateOrderWithTradesCompletedTimestamp = posixSecondsToUTCTime 6511257.825,
-             privateOrderWithTradesFeeBase = 3687.3,
-             privateOrderWithTradesFeeCounter = 12.9,
-             privateOrderWithTradesLimitPrice = 765,
-             privateOrderWithTradesLimitVolume = 55.2,
-             privateOrderWithTradesId = "83YG",
-             privateOrderWithTradesPair = NADXBT,
-             privateOrderWithTradesState = COMPLETE,
-             privateOrderWithTradesOrderType = BID,
-             privateOrderWithTradesTrades = [tradeInner]}
     it "WithdrawalRequest is parsed properly" $
       recordAesCheck
         "{\"status\":\"PENDING\", \"id\":\"7yrfU4987\"}"
@@ -178,6 +156,29 @@
             \ \"account_id\":\"3485527347968330182\", \"balance_delta\":0.0399, \
             \ \"available_delta\":0.0099,  \"currency\":\"XBT\",\"description\":\"Bought BTC 0.01 for R 79.00\"}]}"
         [transactionInner]
+    it "PrivateTrade is parsed properly" $
+      recordAesCheck
+        "{\"base\": \"0.147741\", \"counter\": \"1549.950831\", \"fee_base\": \"0.90\", \"fee_counter\": \"0.00\", \
+            \ \"is_buy\": false, \"order_id\": \"BXMC2CJ7HNB88U4\", \"pair\": \"XBTZAR\", \"price\": \"10491.00\", \
+            \ \"timestamp\": 1467138492909, \"type\": \"BID\", \"volume\": \"0.147741\" }"
+        PrivateTrade
+            {privateTradeBase = 0.147741,
+             privateTradeCounter = 1549.950831,
+             privateTradeFeeBase = 0.9,
+             privateTradeFeeCounter = 0,
+             privateTradeIsBuy = False,
+             privateTradeOrderId = "BXMC2CJ7HNB88U4",
+             privateTradePair = XBTZAR,
+             privateTradePrice = 10491,
+             privateTradeTimestamp = posixSecondsToUTCTime 1467138492.909,
+             privateTradeOrderType = BID,
+             privateTradeVolume = 0.147741}
+    it "PrivateTrades is parsed properly" $
+      recordAesCheck
+        "{\"trades\":[{\"base\": \"0.147741\", \"counter\": \"1549.950831\", \"fee_base\": \"0.90\", \"fee_counter\": \"0.00\", \
+            \ \"is_buy\": false, \"order_id\": \"BXMC2CJ7HNB88U4\", \"pair\": \"XBTZAR\", \"price\": \"10491.00\", \
+            \ \"timestamp\": 1467138492909, \"type\": \"BID\", \"volume\": \"0.147741\" }]}"
+         [privateTradeInner]
 
 tickerInner :: Ticker
 tickerInner =
@@ -228,3 +229,18 @@
          transactionAvailableDelta = 0.0099,
          transactionCurrency = XBT,
          transactionDescription = "Bought BTC 0.01 for R 79.00"}
+
+privateTradeInner :: PrivateTrade
+privateTradeInner =
+    PrivateTrade
+        {privateTradeBase = 0.147741,
+          privateTradeCounter = 1549.950831,
+          privateTradeFeeBase = 0.9,
+          privateTradeFeeCounter = 0,
+          privateTradeIsBuy = False,
+          privateTradeOrderId = "BXMC2CJ7HNB88U4",
+          privateTradePair = XBTZAR,
+          privateTradePrice = 10491,
+          privateTradeTimestamp = posixSecondsToUTCTime 1467138492.909,
+          privateTradeOrderType = BID,
+          privateTradeVolume = 0.147741}
diff --git a/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs b/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
--- a/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
+++ b/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
@@ -88,25 +88,6 @@
     let _ = x ^. BitX.completedTimestamp
     Nothing
 
-_privateOrderWithTrades :: Maybe Int
-_privateOrderWithTrades = do
-    let x = BitX.PrivateOrderWithTrades 0 0 (posixSecondsToUTCTime 0) (posixSecondsToUTCTime 0) (posixSecondsToUTCTime 0) 0 0 0 0 "" XBTZAR PENDING ASK [BitX.Trade (posixSecondsToUTCTime 0) 0 0 False]
-    let _ = x ^. BitX.base
-    let _ = x ^. BitX.counter
-    let _ = x ^. BitX.creationTimestamp
-    let _ = x ^. BitX.feeBase
-    let _ = x ^. BitX.feeCounter
-    let _ = x ^. BitX.limitPrice
-    let _ = x ^. BitX.limitVolume
-    let _ = x ^. BitX.id
-    let _ = x ^. BitX.pair
-    let _ = x ^. BitX.state
-    let _ = x ^. BitX.orderType
-    let _ = x ^. BitX.expirationTimestamp
-    let _ = x ^. BitX.completedTimestamp
-    let _ = x ^. BitX.trades
-    Nothing
-
 _transaction :: Maybe Int
 _transaction = do
     let x = BitX.Transaction 0 (posixSecondsToUTCTime 0) 0 0 0 0 ZAR ""
@@ -193,3 +174,20 @@
     let _ = x ^. BitX.status
     let _ = x ^. BitX.id
     Nothing
+
+_privateTrade :: Maybe Int
+_privateTrade = do
+  let x = BitX.PrivateTrade 0 0 0 0 True "" XBTZAR 0 (posixSecondsToUTCTime 0) BID 0
+  let _ = x ^. BitX.base
+  let _ = x ^. BitX.counter
+  let _ = x ^. BitX.feeBase
+  let _ = x ^. BitX.feeCounter
+  let _ = x ^. BitX.isBuy
+  let _ = x ^. BitX.orderId
+  let _ = x ^. BitX.pair
+  let _ = x ^. BitX.price
+  let _ = x ^. BitX.timestamp
+  let _ = x ^. BitX.orderType
+  let _ = x ^. BitX.volume
+  Nothing
+
