diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+0.4
+---
+* Rename `StatusResponse` to `MessageStatus` and add instance Read
+* Change `MessageId` representation to `Int64`
+* Change `Phone` representation to `Int64`
+
 0.3
 ---
 * Add `MessageBody` newtype for `"text"` query parameter
diff --git a/smsaero.cabal b/smsaero.cabal
--- a/smsaero.cabal
+++ b/smsaero.cabal
@@ -1,5 +1,5 @@
 name:                smsaero
-version:             0.3
+version:             0.4
 synopsis:            SMSAero API and HTTP client based on servant library.
 description:         Please see README.md
 homepage:            https://github.com/GetShopTV/smsaero
diff --git a/src/SMSAero/API.hs b/src/SMSAero/API.hs
--- a/src/SMSAero/API.hs
+++ b/src/SMSAero/API.hs
@@ -39,13 +39,14 @@
   -- * Responses
   SmsAeroResponse(..),
   SendResponse(..),
-  StatusResponse(..),
+  MessageStatus(..),
   BalanceResponse(..),
   SendersResponse(..),
   SignResponse(..),
 ) where
 
 import Data.Aeson
+import Data.Int (Int64)
 import Data.Proxy
 
 import Data.Time (UTCTime(UTCTime))
@@ -97,7 +98,7 @@
 newtype Signature = Signature { getSignature :: Text } deriving (Show, FromJSON, ToJSON, ToText, FromText)
 
 -- | SMSAero sent message id.
-newtype MessageId = MessageId Integer deriving (Show, FromJSON, ToJSON, ToText, FromText)
+newtype MessageId = MessageId Int64 deriving (Show, FromJSON, ToJSON, ToText, FromText)
 
 -- | SMSAero message body.
 newtype MessageBody = MessageBody Text deriving (Show, FromJSON, ToJSON, ToText, FromText)
@@ -120,7 +121,7 @@
     , "password" .= authPassword ]
 
 -- | Phone number.
-newtype Phone = Phone { getPhone :: Integer } deriving (Show, ToText, FromText)
+newtype Phone = Phone { getPhone :: Int64 } deriving (Show, ToText, FromText)
 
 -- | Date. Textually @SMSAeroDate@ is represented as a number of seconds since 01 Jan 1970.
 newtype SMSAeroDate = SMSAeroDate { getSMSAeroDate :: UTCTime } deriving (Show)
@@ -225,7 +226,7 @@
                 Normal
 
 -- | SMSAero API to check message status.
-type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet StatusResponse
+type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet MessageStatus
 
 instance ToParam (QueryParam "id" MessageId) where
   toParam _ = DocQueryParam "id"
@@ -251,17 +252,17 @@
     , ("When SMSAero account does not have enough credit.", ResponseOK SendNoCredits)
     , ("When message sender is incorrect.", ResponseReject "incorrect sender name") ]
 
--- | SMSAero response to a status request.
-data StatusResponse
+-- | SMSAero message status.
+data MessageStatus
   = StatusDeliverySuccess   -- ^ Message is successfully delivered.
   | StatusDeliveryFailure   -- ^ Message delivery has failed.
   | StatusSmscSubmit        -- ^ Message submitted to SMSC.
   | StatusSmscReject        -- ^ Message rejected by SMSC.
   | StatusQueue             -- ^ Message queued.
   | StatusWaitStatus        -- ^ Wait for message status.
-  deriving (Enum, Bounded, Show, Generic)
+  deriving (Enum, Bounded, Show, Read, Generic)
 
-instance ToSample (SmsAeroResponse StatusResponse) (SmsAeroResponse StatusResponse) where
+instance ToSample (SmsAeroResponse MessageStatus) (SmsAeroResponse MessageStatus) where
   toSamples _ =
     [ ("When message has been delivered successfully.", ResponseOK StatusDeliverySuccess)
     , ("When message has been queued.", ResponseOK StatusQueue) ]
@@ -331,10 +332,10 @@
     vals = [minBound..maxBound]
     xs = zip (map toText vals) vals
 
-instance FromText StatusResponse where
+instance FromText MessageStatus where
   fromText = boundedFromText
 
-instance ToText StatusResponse where
+instance ToText MessageStatus where
   toText StatusDeliverySuccess  = "delivery success"
   toText StatusDeliveryFailure  = "delivery failure"
   toText StatusSmscSubmit       = "smsc submit"
@@ -342,13 +343,13 @@
   toText StatusQueue            = "queue"
   toText StatusWaitStatus       = "wait status"
 
-instance FromJSON StatusResponse where
+instance FromJSON MessageStatus where
   parseJSON (Object o) = do
     result :: Text <- o .: "result"
     maybe empty pure (fromText result)
   parseJSON _ = empty
 
-instance ToJSON StatusResponse where
+instance ToJSON MessageStatus where
   toJSON status = object [ "result" .= toText status ]
 
 instance FromJSON BalanceResponse where
diff --git a/src/SMSAero/Client.hs b/src/SMSAero/Client.hs
--- a/src/SMSAero/Client.hs
+++ b/src/SMSAero/Client.hs
@@ -30,7 +30,7 @@
 -- | Send a message.
 smsAeroSend    :: SMSAeroAuth -> Phone -> MessageBody -> Signature -> Maybe SMSAeroDate -> SmsAero SendResponse
 -- | Check status of a previously sent message.
-smsAeroStatus  :: SMSAeroAuth -> MessageId -> SmsAero StatusResponse
+smsAeroStatus  :: SMSAeroAuth -> MessageId -> SmsAero MessageStatus
 -- | Check balance.
 smsAeroBalance :: SMSAeroAuth -> SmsAero BalanceResponse
 -- | Check the list of available sender signatures.
