diff --git a/src/Web/Telegram/API/Actions.hs b/src/Web/Telegram/API/Actions.hs
--- a/src/Web/Telegram/API/Actions.hs
+++ b/src/Web/Telegram/API/Actions.hs
@@ -83,7 +83,7 @@
   Base
     :> "setChatAdministratorCustomTitle"
     :> QueryR "chat_id" ChatId
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> QueryParam "custom_title" Text
     :> Get '[JSON] (ReqResult Bool)
 
@@ -131,7 +131,7 @@
   Base
     :> "pinChatMessage"
     :> QueryR "chat_id" ChatId
-    :> QueryR "message_id" Integer
+    :> QueryR "message_id" Int
     :> QueryParam "disable_notification" Bool
     :> Get '[JSON] (ReqResult Bool)
 
@@ -163,7 +163,7 @@
 type UploadStickerFile' png =
   Base
     :> "uploadStickerFile"
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> png
     :> Get '[JSON] (ReqResult File)
 
@@ -176,7 +176,7 @@
 type CreateNewStickerSet' png =
   Base
     :> "createNewStickerSet"
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> QueryR "name" Text
     :> QueryR "title" Text
     :> png
@@ -195,7 +195,7 @@
 type AddStickerToSet' png =
   Base
     :> "addStickerToSet"
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> QueryR "name" Text
     :> png
     :> MultipartForm Mem TgsSticker
@@ -213,7 +213,7 @@
   Base
     :> "setStickerPositionInSet"
     :> QueryR "sticker" Text
-    :> QueryR "positon" Integer
+    :> QueryR "positon" Int
     :> Get '[JSON] (ReqResult Bool)
 
 type DeleteStickerFromSet =
@@ -226,7 +226,7 @@
   Base
     :> "setStickerSetThumb"
     :> QueryR "name" Text
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> t
     :> Get '[JSON] (ReqResult Bool)
 
diff --git a/src/Web/Telegram/API/Actions/Data.hs b/src/Web/Telegram/API/Actions/Data.hs
--- a/src/Web/Telegram/API/Actions/Data.hs
+++ b/src/Web/Telegram/API/Actions/Data.hs
@@ -6,6 +6,7 @@
 module Web.Telegram.API.Actions.Data where
 
 import Data.Text (Text)
+import Data.Time.Clock.POSIX
 import Deriving.Aeson
 import Web.Telegram.API.Common
 import Web.Telegram.Types
@@ -16,8 +17,8 @@
 data Kick
   = Kick
       { chatId :: ChatId,
-        userId :: Integer,
-        untilDate :: Maybe Integer
+        userId :: Int,
+        untilDate :: Maybe POSIXTime
       }
   deriving (Show, Eq, Generic, Default)
   deriving
@@ -27,7 +28,7 @@
 data Unban
   = Unban
       { chatId :: ChatId,
-        userId :: Integer
+        userId :: Int
       }
   deriving (Show, Eq, Generic, Default)
   deriving
@@ -37,9 +38,9 @@
 data Restriction
   = Restriction
       { chatId :: ChatId,
-        userId :: Integer,
+        userId :: Int,
         permissions :: ChatPermissions,
-        untilDate :: Maybe Integer
+        untilDate :: Maybe POSIXTime
       }
   deriving (Show, Eq, Generic, Default)
   deriving
@@ -49,7 +50,7 @@
 data Promotion
   = Promotion
       { chatId :: ChatId,
-        userId :: Integer,
+        userId :: Int,
         canChangeInfo :: Maybe Bool,
         canPostMessages :: Maybe Bool,
         canEditMessages :: Maybe Bool,
@@ -68,7 +69,7 @@
   = InlineQueryAnswer
       { inlineQueryId :: Text,
         results :: [InlineQueryResult],
-        cacheTime :: Maybe Integer,
+        cacheTime :: Maybe Int,
         isPersonal :: Maybe Bool,
         nextOffset :: Maybe Text,
         switchPmText :: Maybe Text,
@@ -85,7 +86,7 @@
         text :: Maybe Text,
         showAlert :: Maybe Bool,
         url :: Maybe Text,
-        cacheTime :: Maybe Integer
+        cacheTime :: Maybe Int
       }
   deriving (Show, Eq, Generic, Default)
   deriving
diff --git a/src/Web/Telegram/API/Editing.hs b/src/Web/Telegram/API/Editing.hs
--- a/src/Web/Telegram/API/Editing.hs
+++ b/src/Web/Telegram/API/Editing.hs
@@ -49,7 +49,7 @@
   Base
     :> "editMessageMedia"
     :> QueryParam "chat_id" ChatId
-    :> QueryParam "message_id" Integer
+    :> QueryParam "message_id" Int
     :> QueryParam "inline_message_id" Text
     :> CompoundParam Mem "media" InputMedia
     :> Res
@@ -70,5 +70,5 @@
   Base
     :> "deleteMessage"
     :> QueryR "chat_id" ChatId
-    :> QueryR "message_id" Integer
+    :> QueryR "message_id" Int
     :> Get '[JSON] (ReqResult Bool)
diff --git a/src/Web/Telegram/API/Editing/Data.hs b/src/Web/Telegram/API/Editing/Data.hs
--- a/src/Web/Telegram/API/Editing/Data.hs
+++ b/src/Web/Telegram/API/Editing/Data.hs
@@ -16,7 +16,7 @@
 data TextEdit
   = TextE
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         text :: Text,
         parseMode :: Maybe ParseMode,
@@ -31,7 +31,7 @@
 data CaptionEdit
   = CaptionE
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         caption :: Maybe Text,
         parseMode :: Maybe ParseMode,
@@ -45,7 +45,7 @@
 data MediaEdit
   = MediaE
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         media :: InputMedia
       }
@@ -57,7 +57,7 @@
 data MarkupEdit
   = MarkupEdit
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         replyMarkup :: Maybe InlineKeyboardMarkup
       }
@@ -69,7 +69,7 @@
 data PollStop
   = PollStop
       { chatId :: ChatId,
-        messageId :: Integer,
+        messageId :: Int,
         replyMarkup :: Maybe InlineKeyboardMarkup
       }
   deriving (Show, Eq, Generic, Default)
diff --git a/src/Web/Telegram/API/Getting.hs b/src/Web/Telegram/API/Getting.hs
--- a/src/Web/Telegram/API/Getting.hs
+++ b/src/Web/Telegram/API/Getting.hs
@@ -17,9 +17,9 @@
 type GetUserProfilePhotos =
   Base
     :> "getUserProfilePhotos"
-    :> QueryR "user_id" Integer
-    :> QueryParam "offset" Integer
-    :> QueryParam "limit" Integer
+    :> QueryR "user_id" Int
+    :> QueryParam "offset" Int
+    :> QueryParam "limit" Int
     :> Get '[JSON] (ReqResult UserProfilePhotos)
 
 type GetFile =
@@ -44,13 +44,13 @@
   Base
     :> "getChatMembersCount"
     :> QueryR "chat_id" ChatId
-    :> Get '[JSON] (ReqResult Integer)
+    :> Get '[JSON] (ReqResult Int)
 
 type GetChatMember =
   Base
     :> "getChatMember"
     :> QueryR "chat_id" ChatId
-    :> QueryR "user_id" Integer
+    :> QueryR "user_id" Int
     :> Get '[JSON] (ReqResult ChatMember)
 
 type GetMyCommands =
diff --git a/src/Web/Telegram/API/Sending.hs b/src/Web/Telegram/API/Sending.hs
--- a/src/Web/Telegram/API/Sending.hs
+++ b/src/Web/Telegram/API/Sending.hs
@@ -71,7 +71,7 @@
 
 type MessageR' =
   QueryParam "disable_notification" Bool
-    :> QueryParam "reply_to_message_id" Integer
+    :> QueryParam "reply_to_message_id" Int
     :> QueryParam "reply_markup" ReplyMarkup
     :> Get '[JSON] (ReqResult T.Message)
 
@@ -120,7 +120,7 @@
     :> QueryR "chat_id" ChatId
     :> MultipartForm Mem Audio
     :> QueryParam "caption" Text
-    :> QueryParam "duration" Integer
+    :> QueryParam "duration" Int
     :> QueryParam "performer" Text
     :> QueryParam "title" Text
     -- TODO: Handle thumbnail
@@ -151,9 +151,9 @@
     :> "sendVideo"
     :> QueryR "chat_id" ChatId
     :> MultipartForm Mem Video
-    :> QueryParam "duration" Integer
-    :> QueryParam "width" Integer
-    :> QueryParam "height" Integer
+    :> QueryParam "duration" Int
+    :> QueryParam "width" Int
+    :> QueryParam "height" Int
     :> QueryParam "caption" Text
     :> QueryParam "supports_streaming" Bool
     :> MessageR
@@ -169,9 +169,9 @@
     :> "sendAnimation"
     :> QueryR "chat_id" ChatId
     :> MultipartForm Mem Animation
-    :> QueryParam "duration" Integer
-    :> QueryParam "width" Integer
-    :> QueryParam "height" Integer
+    :> QueryParam "duration" Int
+    :> QueryParam "width" Int
+    :> QueryParam "height" Int
     :> QueryParam "caption" Text
     :> MessageR
 
@@ -186,7 +186,7 @@
     :> "sendVoice"
     :> QueryR "chat_id" ChatId
     :> MultipartForm Mem Voice
-    :> QueryParam "duration" Integer
+    :> QueryParam "duration" Int
     :> QueryParam "caption" Text
     :> MessageR
 
@@ -201,8 +201,8 @@
     :> "sendVideoNote"
     :> QueryR "chat_id" ChatId
     :> MultipartForm Mem VideoNote
-    :> QueryParam "duration" Integer
-    :> QueryParam "length" Integer
+    :> QueryParam "duration" Int
+    :> QueryParam "length" Int
     :> MessageR
 
 type SendMediaGroup =
@@ -211,7 +211,7 @@
     :> QueryR "chat_id" ChatId
     :> CompoundParams Mem "media" VideoOrPhoto
     :> QueryParam "disable_notification" Bool
-    :> QueryParam "reply_to_message_id" Integer
+    :> QueryParam "reply_to_message_id" Int
     :> Get '[JSON] (ReqResult [T.Message])
 
 type SendLocation =
diff --git a/src/Web/Telegram/API/Sending/Data.hs b/src/Web/Telegram/API/Sending/Data.hs
--- a/src/Web/Telegram/API/Sending/Data.hs
+++ b/src/Web/Telegram/API/Sending/Data.hs
@@ -20,7 +20,7 @@
         disableWebPagePreview :: Maybe Bool,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -32,7 +32,7 @@
   = FwdMsg
       { chatId :: ChatId,
         fromChatId :: ChatId,
-        messageId :: Integer,
+        messageId :: Int,
         disableNotification :: Maybe Bool
       }
   deriving (Show, Eq, Generic, Default)
@@ -48,7 +48,7 @@
         disableWebPagePreview :: Maybe Bool,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -61,12 +61,12 @@
       { chatId :: ChatId,
         audio :: a,
         caption :: Maybe Text,
-        duration :: Maybe Integer,
+        duration :: Maybe Int,
         performer :: Maybe Text,
         title :: Maybe Text,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -81,7 +81,7 @@
         caption :: Maybe Text,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -93,14 +93,14 @@
   = VidMsg
       { chatId :: ChatId,
         video :: a,
-        duration :: Maybe Integer,
-        width :: Maybe Integer,
-        height :: Maybe Integer,
+        duration :: Maybe Int,
+        width :: Maybe Int,
+        height :: Maybe Int,
         caption :: Maybe Text,
         supportsStreaming :: Maybe Bool,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -112,13 +112,13 @@
   = AniMsg
       { chatId :: ChatId,
         animation :: a,
-        duration :: Maybe Integer,
-        width :: Maybe Integer,
-        height :: Maybe Integer,
+        duration :: Maybe Int,
+        width :: Maybe Int,
+        height :: Maybe Int,
         caption :: Maybe Text,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -130,11 +130,11 @@
   = VoiceMsg
       { chatId :: ChatId,
         voice :: a,
-        duration :: Maybe Integer,
+        duration :: Maybe Int,
         caption :: Maybe Text,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -146,11 +146,11 @@
   = VNMsg
       { chatId :: ChatId,
         video_note :: Text,
-        duration :: Maybe Integer,
-        length :: Maybe Integer,
+        duration :: Maybe Int,
+        length :: Maybe Int,
         parseMode :: Maybe ParseMode,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -161,9 +161,9 @@
       { chatId :: ChatId,
         latitude :: Float,
         longitude :: Float,
-        livePeriod :: Maybe Integer,
+        livePeriod :: Maybe Int,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -174,7 +174,7 @@
 data LocationEdit
   = LocationEdit
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         latitude :: Float,
         longitude :: Float,
@@ -188,7 +188,7 @@
 data LocationStop
   = LocationStop
       { chatId :: Maybe ChatId,
-        messageId :: Maybe Integer,
+        messageId :: Maybe Int,
         inlineMessageId :: Maybe Text,
         replyMarkup :: Maybe ReplyMarkup
       }
@@ -207,7 +207,7 @@
         foursquareId :: Maybe Text,
         foursquareType :: Maybe Text,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -223,7 +223,7 @@
         lastName :: Maybe Text,
         vcard :: Maybe Text,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -239,10 +239,10 @@
         isAnonymous :: Bool,
         pollType :: Maybe PollType,
         allowsMultipleAnswers :: Maybe Bool,
-        correctOptionId :: Maybe Integer,
+        correctOptionId :: Maybe Int,
         isClosed :: Maybe Bool,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -254,7 +254,7 @@
   = DiceMessage
       { chatId :: ChatId,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
@@ -277,7 +277,7 @@
       { chatId :: ChatId,
         sticker :: Text,
         disableNotification :: Maybe Bool,
-        replyToMessageId :: Maybe Integer,
+        replyToMessageId :: Maybe Int,
         replyMarkup :: Maybe ReplyMarkup
       }
   deriving (Show, Eq, Generic, Default)
diff --git a/src/Web/Telegram/API/Update.hs b/src/Web/Telegram/API/Update.hs
--- a/src/Web/Telegram/API/Update.hs
+++ b/src/Web/Telegram/API/Update.hs
@@ -18,9 +18,9 @@
 
 data Polling
   = Polling
-      { offset :: Maybe Integer,
-        limit :: Maybe Integer,
-        timeout :: Maybe Integer,
+      { offset :: Maybe Int,
+        limit :: Maybe Int,
+        timeout :: Maybe Int,
         allowedUpdates :: Maybe Text
       }
   deriving (Show, Eq, Generic, Default)
@@ -31,7 +31,7 @@
 data WebhookSetting
   = WebhookSetting
       { url :: Text,
-        maxConnections :: Maybe Integer,
+        maxConnections :: Maybe Int,
         allowedUpdates :: Maybe [UpdateType]
       }
   deriving (Show, Eq, Generic, Default)
diff --git a/telegram-raw-api.cabal b/telegram-raw-api.cabal
--- a/telegram-raw-api.cabal
+++ b/telegram-raw-api.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: f86f282035a38c0679901505685391ac2f961d5101b37194b9445a35ac2fdac8
+-- hash: 9eca045f6974268b378e7426a633f17e797988d85e8864a59a0e02243942f0a7
 
 name:           telegram-raw-api
-version:        0.2.0
+version:        0.3.0
 synopsis:       Servant bindings to the Telegram bot API
 description:    Please see the README on GitHub at <https://github.com/poscat0x04/telegram-raw-api#readme>
 category:       Web
@@ -47,7 +47,6 @@
       aeson >=1.4.7 && <1.5
     , base >=4.7 && <5
     , bytestring >=0.10.10.0 && <0.11
-    , connection >=0.3.1 && <0.4
     , deriving-aeson >=0.2.3 && <0.3
     , generic-lens >=1.2.0.1 && <1.3
     , hashable >=1.3.0.0 && <1.4
@@ -58,6 +57,7 @@
     , servant-multipart >=0.11.5 && <0.12
     , telegram-types >=0.4.0 && <0.5
     , text >=1.2.4.0 && <1.3
+    , time >=1.9.3 && <1.11
   default-language: Haskell2010
 
 test-suite telegram-raw-api-test
@@ -72,7 +72,6 @@
       aeson >=1.4.7 && <1.5
     , base >=4.7 && <5
     , bytestring >=0.10.10.0 && <0.11
-    , connection >=0.3.1 && <0.4
     , deriving-aeson >=0.2.3 && <0.3
     , generic-lens >=1.2.0.1 && <1.3
     , hashable >=1.3.0.0 && <1.4
@@ -87,4 +86,5 @@
     , telegram-raw-api
     , telegram-types >=0.4.0 && <0.5
     , text >=1.2.4.0 && <1.3
+    , time >=1.9.3 && <1.11
   default-language: Haskell2010
