diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # telegram-bot-api
 
+## 7.4.3 -- 2024-11-07
+
+- Remove unused packages (see [#194](https://github.com/fizruk/telegram-bot-simple/pull/194)).
+- Remove unused pragmas and apply other hlint suggestions (see [#195](https://github.com/fizruk/telegram-bot-simple/pull/195)).
+
+
 ## 7.4.2 -- 2024-10-31
 
 - Fix `ChatFullInfo` type `active_usernames` attribute (see [#192](https://github.com/fizruk/telegram-bot-simple/pull/192)).
diff --git a/src/Telegram/Bot/API/Forum.hs b/src/Telegram/Bot/API/Forum.hs
--- a/src/Telegram/Bot/API/Forum.hs
+++ b/src/Telegram/Bot/API/Forum.hs
@@ -188,7 +188,7 @@
 
 -- ** 'closeGeneralForumTopic'
 
-data CloseGeneralForumTopicRequest = CloseGeneralForumTopicRequest
+newtype CloseGeneralForumTopicRequest = CloseGeneralForumTopicRequest
   { closeGeneralForumTopicChatId :: SomeChatId -- ^ Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername).
   }
   deriving Generic
@@ -206,7 +206,7 @@
 
 -- ** 'reopenGeneralForumTopic'
 
-data ReopenGeneralForumTopicRequest = ReopenGeneralForumTopicRequest
+newtype ReopenGeneralForumTopicRequest = ReopenGeneralForumTopicRequest
   { reopenGeneralForumTopicRequestChatId :: SomeChatId -- ^ Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername).
   }
   deriving Generic
@@ -224,7 +224,7 @@
 
 -- ** 'hideGeneralForumTopic'
 
-data HideGeneralForumTopicRequest = HideGeneralForumTopicRequest
+newtype HideGeneralForumTopicRequest = HideGeneralForumTopicRequest
   { hideGeneralForumTopicChatId :: SomeChatId -- ^ Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername).
   }
   deriving Generic
@@ -242,7 +242,7 @@
 
 -- ** 'unhideGeneralForumTopic'
 
-data UnhideGeneralForumTopicRequest = UnhideGeneralForumTopicRequest
+newtype UnhideGeneralForumTopicRequest = UnhideGeneralForumTopicRequest
   { unhideGeneralForumTopicChatId :: SomeChatId -- ^ Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
   }
   deriving Generic
diff --git a/src/Telegram/Bot/API/Internal/TH.hs b/src/Telegram/Bot/API/Internal/TH.hs
--- a/src/Telegram/Bot/API/Internal/TH.hs
+++ b/src/Telegram/Bot/API/Internal/TH.hs
@@ -63,7 +63,7 @@
 constructType typeN tys = foldr arrAp baseTy (filter (not . isMaybeTy) tys)
   where
     baseTy = conT typeN
-    arrAp a b = appT (appT arrowT (pure a)) b
+    arrAp a = appT (appT arrowT (pure a))
 
 
 -- Predicates over TH
diff --git a/src/Telegram/Bot/API/Internal/Utils.hs b/src/Telegram/Bot/API/Internal/Utils.hs
--- a/src/Telegram/Bot/API/Internal/Utils.hs
+++ b/src/Telegram/Bot/API/Internal/Utils.hs
@@ -4,7 +4,6 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE TypeSynonymInstances #-}
 {-# LANGUAGE CPP #-}
 module Telegram.Bot.API.Internal.Utils where
 
@@ -95,7 +94,7 @@
 
 instance (ToJSON a, FromJSON a) => GSomeJSON (C1 c (S1 s (K1 i a))) where
   gsomeToJSON (M1 (M1 (K1 x))) = toJSON x
-  gsomeParseJSON js = (M1 . M1 . K1) <$> parseJSON js
+  gsomeParseJSON js = M1 . M1 . K1 <$> parseJSON js
 
 instance (GSomeJSON f, GSomeJSON g) => GSomeJSON (f :+: g) where
   gsomeToJSON (L1 x) = gsomeToJSON x
diff --git a/src/Telegram/Bot/API/Methods.hs b/src/Telegram/Bot/API/Methods.hs
--- a/src/Telegram/Bot/API/Methods.hs
+++ b/src/Telegram/Bot/API/Methods.hs
@@ -1,18 +1,10 @@
-{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE DerivingStrategies #-}
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
 module Telegram.Bot.API.Methods
   ( module Telegram.Bot.API.Types.ParseMode
   , module Telegram.Bot.API.Types.SomeReplyMarkup
-  
+
   , module Telegram.Bot.API.Methods.AnswerCallbackQuery
   , module Telegram.Bot.API.Methods.ApproveChatJoinRequest
   , module Telegram.Bot.API.Methods.BanChatMember
diff --git a/src/Telegram/Bot/API/Methods/GetChatMenuButton.hs b/src/Telegram/Bot/API/Methods/GetChatMenuButton.hs
--- a/src/Telegram/Bot/API/Methods/GetChatMenuButton.hs
+++ b/src/Telegram/Bot/API/Methods/GetChatMenuButton.hs
@@ -18,7 +18,7 @@
 -- ** 'getChatMenuButton'
 
 -- | Request parameters for 'getChatMenuButton'.
-data GetChatMenuButtonRequest = GetChatMenuButtonRequest
+newtype GetChatMenuButtonRequest = GetChatMenuButtonRequest
   { getChatMenuButtonRequestChatId     :: Maybe ChatId     -- ^ Unique identifier for the target private chat. If not specified, default bot's menu button will be returned.
   }
   deriving Generic
diff --git a/src/Telegram/Bot/API/Methods/SendDocument.hs b/src/Telegram/Bot/API/Methods/SendDocument.hs
--- a/src/Telegram/Bot/API/Methods/SendDocument.hs
+++ b/src/Telegram/Bot/API/Methods/SendDocument.hs
@@ -94,25 +94,25 @@
 instance ToMultipart Tmp SendDocumentRequest where
   toMultipart SendDocumentRequest{..} = MultipartData fields files where
     fields =
-      [ Input "document" $ T.pack $ "attach://file"
+      [ Input "document" "attach://file"
       , Input "chat_id" $ case sendDocumentChatId of
           SomeChatId (ChatId chat_id) -> T.pack $ show chat_id
           SomeChatUsername txt -> txt
       ] <>
-      (   (maybe id (\t -> ((Input "message_thread_id") (T.pack $ show t):)) sendDocumentMessageThreadId)
-        $ (maybe id (\_ -> ((Input "thumbnail" "attach://thumbnail"):)) sendDocumentThumbnail)
-        $ (maybe id (\t -> ((Input "caption" t):)) sendDocumentCaption)
-        $ (maybe id (\t -> ((Input "parse_mode" (TL.toStrict $ encodeToLazyText t)):)) sendDocumentParseMode)
-        $ (maybe id (\t -> ((Input "caption_entities" (TL.toStrict $ encodeToLazyText t)):)) sendDocumentCaptionEntities)
-        $ (maybe id (\t -> ((Input "disable_notification" (bool "false" "true" t)):)) sendDocumentDisableNotification)
-        $ (maybe id (\t -> ((Input "disable_content_type_detection" (bool "false" "true" t)):)) sendDocumentDisableContentTypeDetection)
-        $ (maybe id (\t -> ((Input "protect_content" (bool "false" "true" t)):)) sendDocumentProtectContent)
-        $ (maybe id (\t -> ((Input "reply_to_message_id" (TL.toStrict $ encodeToLazyText t)):)) sendDocumentReplyToMessageId)
-        $ (maybe id (\t -> ((Input "reply_parameters" (TL.toStrict $ encodeToLazyText t)):)) sendDocumentReplyParameters)
-        $ (maybe id (\t -> ((Input "reply_markup" (TL.toStrict $ encodeToLazyText t)):)) sendDocumentReplyMarkup)
+          maybe id (\t -> (Input "message_thread_id" (T.pack $ show t) :)) sendDocumentMessageThreadId
+        ( maybe id (const (Input "thumbnail" "attach://thumbnail" :)) sendDocumentThumbnail
+        $ maybe id (\t -> (Input "caption" t :)) sendDocumentCaption
+        $ maybe id (\t -> (Input "parse_mode" (TL.toStrict $ encodeToLazyText t) :)) sendDocumentParseMode
+        $ maybe id (\t -> (Input "caption_entities" (TL.toStrict $ encodeToLazyText t) :)) sendDocumentCaptionEntities
+        $ maybe id (\t -> (Input "disable_notification" (bool "false" "true" t) :)) sendDocumentDisableNotification
+        $ maybe id (\t -> (Input "disable_content_type_detection" (bool "false" "true" t) :)) sendDocumentDisableContentTypeDetection
+        $ maybe id (\t -> (Input "protect_content" (bool "false" "true" t) :)) sendDocumentProtectContent
+        $ maybe id (\t -> (Input "reply_to_message_id" (TL.toStrict $ encodeToLazyText t) :)) sendDocumentReplyToMessageId
+        $ maybe id (\t -> (Input "reply_parameters" (TL.toStrict $ encodeToLazyText t) :)) sendDocumentReplyParameters
+        $ maybe id (\t -> (Input "reply_markup" (TL.toStrict $ encodeToLazyText t) :)) sendDocumentReplyMarkup
         [])
     files
-      = (FileData "file" (T.pack $ takeFileName path) ct path)
+      = FileData "file" (T.pack $ takeFileName path) ct path
       : maybe [] (\t -> [FileData "thumbnail" (T.pack $ takeFileName t) "image/jpeg" t]) sendDocumentThumbnail
 
     (path, ct) = case sendDocumentDocument of
diff --git a/src/Telegram/Bot/API/Methods/SendPhoto.hs b/src/Telegram/Bot/API/Methods/SendPhoto.hs
--- a/src/Telegram/Bot/API/Methods/SendPhoto.hs
+++ b/src/Telegram/Bot/API/Methods/SendPhoto.hs
@@ -83,25 +83,25 @@
 instance ToMultipart Tmp SendPhotoRequest where
   toMultipart SendPhotoRequest{..} = MultipartData fields files where
     fields =
-      [ Input "photo" $ T.pack $ "attach://file"
+      [ Input "photo" "attach://file"
       , Input "chat_id" $ case sendPhotoChatId of
           SomeChatId (ChatId chat_id) -> T.pack $ show chat_id
           SomeChatUsername txt -> txt
       ] <>
-      (   (maybe id (\t -> ((Input "message_thread_id" (T.pack $ show t)):)) sendPhotoMessageThreadId)
-        $ (maybe id (\_ -> ((Input "thumb" "attach://thumb"):)) sendPhotoThumb)
-        $ (maybe id (\t -> ((Input "caption" t):)) sendPhotoCaption)
-        $ (maybe id (\t -> ((Input "parse_mode" (TL.toStrict . TL.replace "\"" "" $ encodeToLazyText t)):)) sendPhotoParseMode)
-        $ (maybe id (\t -> ((Input "caption_entities" (TL.toStrict $ encodeToLazyText t)):)) sendPhotoCaptionEntities)
-        $ (maybe id (\t -> ((Input "has_spoiler" (bool "false" "true" t)):)) sendPhotoHasSpoiler)
-        $ (maybe id (\t -> ((Input "disable_notification" (bool "false" "true" t)):)) sendPhotoDisableNotification)
-        $ (maybe id (\t -> ((Input "protect_content" (bool "false" "true" t)):)) sendPhotoProtectContent)
-        $ (maybe id (\t -> ((Input "reply_to_message_id" (TL.toStrict $ encodeToLazyText t)):)) sendPhotoReplyToMessageId)
-        $ (maybe id (\t -> ((Input "reply_parameters" (TL.toStrict $ encodeToLazyText t)):)) sendPhotoReplyParameters)
-        $ (maybe id (\t -> ((Input "reply_markup" (TL.toStrict $ encodeToLazyText t)):)) sendPhotoReplyMarkup)
+          maybe id (\t -> (Input "message_thread_id" (T.pack $ show t) :)) sendPhotoMessageThreadId
+        ( maybe id (const (Input "thumb" "attach://thumb" :)) sendPhotoThumb
+        $ maybe id (\t -> (Input "caption" t :)) sendPhotoCaption
+        $ maybe id (\t -> (Input "parse_mode" (TL.toStrict . TL.replace "\"" "" $ encodeToLazyText t) :)) sendPhotoParseMode
+        $ maybe id (\t -> (Input "caption_entities" (TL.toStrict $ encodeToLazyText t) :)) sendPhotoCaptionEntities
+        $ maybe id (\t -> (Input "has_spoiler" (bool "false" "true" t) :)) sendPhotoHasSpoiler
+        $ maybe id (\t -> (Input "disable_notification" (bool "false" "true" t) :)) sendPhotoDisableNotification
+        $ maybe id (\t -> (Input "protect_content" (bool "false" "true" t) :)) sendPhotoProtectContent
+        $ maybe id (\t -> (Input "reply_to_message_id" (TL.toStrict $ encodeToLazyText t) :)) sendPhotoReplyToMessageId
+        $ maybe id (\t -> (Input "reply_parameters" (TL.toStrict $ encodeToLazyText t) :)) sendPhotoReplyParameters
+        $ maybe id (\t -> (Input "reply_markup" (TL.toStrict $ encodeToLazyText t) :)) sendPhotoReplyMarkup
         [])
     files
-      = (FileData "file" (T.pack $ takeFileName path) ct path)
+      = FileData "file" (T.pack $ takeFileName path) ct path
       : maybe [] (\t -> [FileData "thumb" (T.pack $ takeFileName t) "image/jpeg" t]) sendPhotoThumb
 
     (path, ct) = case sendPhotoPhoto of
diff --git a/src/Telegram/Bot/API/Methods/SetStickerSetTitle.hs b/src/Telegram/Bot/API/Methods/SetStickerSetTitle.hs
--- a/src/Telegram/Bot/API/Methods/SetStickerSetTitle.hs
+++ b/src/Telegram/Bot/API/Methods/SetStickerSetTitle.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE TypeOperators #-}
 module Telegram.Bot.API.Methods.SetStickerSetTitle where
diff --git a/src/Telegram/Bot/API/Passport.hs b/src/Telegram/Bot/API/Passport.hs
--- a/src/Telegram/Bot/API/Passport.hs
+++ b/src/Telegram/Bot/API/Passport.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE DataKinds #-}
 module Telegram.Bot.API.Passport where
 
diff --git a/src/Telegram/Bot/API/Stickers.hs b/src/Telegram/Bot/API/Stickers.hs
--- a/src/Telegram/Bot/API/Stickers.hs
+++ b/src/Telegram/Bot/API/Stickers.hs
@@ -106,7 +106,7 @@
 -- ** 'getCustomEmojiStickers'
 
 -- | Request parameters for 'getCustomEmojiStickers'.
-data GetCustomEmojiStickersRequest = GetCustomEmojiStickersRequest
+newtype GetCustomEmojiStickersRequest = GetCustomEmojiStickersRequest
   { getCustomEmojiStickersRequestCustomEmojiIds :: [Text] -- ^ List of custom emoji identifiers. At most 200 custom emoji identifiers can be specified.
   }
   deriving Generic
diff --git a/src/Telegram/Bot/API/Types.hs b/src/Telegram/Bot/API/Types.hs
--- a/src/Telegram/Bot/API/Types.hs
+++ b/src/Telegram/Bot/API/Types.hs
@@ -1,18 +1,11 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE DuplicateRecordFields #-}
 {-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE BlockArguments #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 module Telegram.Bot.API.Types
-  ( RequiredQueryParam 
+  ( RequiredQueryParam
   , module Telegram.Bot.API.Types.Animation
   , module Telegram.Bot.API.Types.Audio
   , module Telegram.Bot.API.Types.BotCommand
@@ -268,7 +261,7 @@
 -- * Games
 
 -- | Your bot can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. Create games via @BotFather using the /newgame command. Please note that this kind of power requires responsibility: you will need to accept the terms for each game that your bots will be offering.
--- 
+--
 -- Games are a new type of content on Telegram, represented by the Game and InlineQueryResultGame objects.
 -- Once you've created a game via BotFather, you can send games to chats as regular messages using the sendGame method, or use inline mode with InlineQueryResultGame.
 -- If you send the game message without any buttons, it will automatically have a 'Play GameName' button. When this button is pressed, your bot gets a CallbackQuery with the game_short_name of the requested game. You provide the correct URL for this particular user and the app opens the game in the in-app browser.
diff --git a/src/Telegram/Bot/API/Types/Birthdate.hs b/src/Telegram/Bot/API/Types/Birthdate.hs
--- a/src/Telegram/Bot/API/Types/Birthdate.hs
+++ b/src/Telegram/Bot/API/Types/Birthdate.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 module Telegram.Bot.API.Types.Birthdate where
 
 import Data.Aeson (FromJSON (..), ToJSON (..))
diff --git a/src/Telegram/Bot/API/Types/BotCommandScope.hs b/src/Telegram/Bot/API/Types/BotCommandScope.hs
--- a/src/Telegram/Bot/API/Types/BotCommandScope.hs
+++ b/src/Telegram/Bot/API/Types/BotCommandScope.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE BlockArguments #-}
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Telegram.Bot.API.Types.BotCommandScope where
diff --git a/src/Telegram/Bot/API/Types/BotShortDescription.hs b/src/Telegram/Bot/API/Types/BotShortDescription.hs
--- a/src/Telegram/Bot/API/Types/BotShortDescription.hs
+++ b/src/Telegram/Bot/API/Types/BotShortDescription.hs
@@ -9,7 +9,7 @@
 -- ** 'BotShortDescription'
 
 -- | This object represents the bot's short description.
-data BotShortDescription = BotShortDescription
+newtype BotShortDescription = BotShortDescription
   { botShortDescriptionShortDescription :: Text -- ^ The bot's short description.
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/ChatBackground.hs b/src/Telegram/Bot/API/Types/ChatBackground.hs
--- a/src/Telegram/Bot/API/Types/ChatBackground.hs
+++ b/src/Telegram/Bot/API/Types/ChatBackground.hs
@@ -10,7 +10,7 @@
 -- ** 'ChatBackground'
 
 -- | This object represents a chat background.
-data ChatBackground = ChatBackground
+newtype ChatBackground = ChatBackground
   { chatBackgroundType :: BackgroundType -- ^ Type of the background.
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/ChatBoostAdded.hs b/src/Telegram/Bot/API/Types/ChatBoostAdded.hs
--- a/src/Telegram/Bot/API/Types/ChatBoostAdded.hs
+++ b/src/Telegram/Bot/API/Types/ChatBoostAdded.hs
@@ -9,7 +9,7 @@
 -- ** 'ChatBoostAdded'
 
 -- | This object represents a boost added to a chat or changed.
-data ChatBoostAdded = ChatBoostAdded
+newtype ChatBoostAdded = ChatBoostAdded
   { chatBoostAddedBoostCount :: Int -- ^ Number of boosts added by the user.
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/Common.hs b/src/Telegram/Bot/API/Types/Common.hs
--- a/src/Telegram/Bot/API/Types/Common.hs
+++ b/src/Telegram/Bot/API/Types/Common.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TypeApplications #-}
 module Telegram.Bot.API.Types.Common where
 
diff --git a/src/Telegram/Bot/API/Types/CopyMessageId.hs b/src/Telegram/Bot/API/Types/CopyMessageId.hs
--- a/src/Telegram/Bot/API/Types/CopyMessageId.hs
+++ b/src/Telegram/Bot/API/Types/CopyMessageId.hs
@@ -10,7 +10,7 @@
 -- ** 'CopyMessageId'
 
 -- | This object represents result of copyMessage request.
-data CopyMessageId = CopyMessageId
+newtype CopyMessageId = CopyMessageId
   { copyMessageIdMessageId :: MessageId -- ^ the MessageId of the sent message.
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/InlineKeyboardMarkup.hs b/src/Telegram/Bot/API/Types/InlineKeyboardMarkup.hs
--- a/src/Telegram/Bot/API/Types/InlineKeyboardMarkup.hs
+++ b/src/Telegram/Bot/API/Types/InlineKeyboardMarkup.hs
@@ -11,12 +11,12 @@
 
 -- | This object represents an inline keyboard that appears
 -- right next to the message it belongs to.
-data InlineKeyboardMarkup = InlineKeyboardMarkup
+newtype InlineKeyboardMarkup = InlineKeyboardMarkup
   { inlineKeyboardMarkupInlineKeyboard :: [[InlineKeyboardButton]] -- ^ Array of button rows, each represented by an Array of InlineKeyboardButton objects
   }
   deriving (Generic, Show)
 
--- ^ 
+-- ^
 -- **Note**: This will only work in Telegram versions released after 9 April, 2016. Older clients will display unsupported message.
 
 instance ToJSON   InlineKeyboardMarkup where toJSON = gtoJSON
diff --git a/src/Telegram/Bot/API/Types/MessageAutoDeleteTimerChanged.hs b/src/Telegram/Bot/API/Types/MessageAutoDeleteTimerChanged.hs
--- a/src/Telegram/Bot/API/Types/MessageAutoDeleteTimerChanged.hs
+++ b/src/Telegram/Bot/API/Types/MessageAutoDeleteTimerChanged.hs
@@ -10,7 +10,7 @@
 -- ** 'MessageAutoDeleteTimerChanged'
 
 -- | This object represents a service message about a change in auto-delete timer settings.
-data MessageAutoDeleteTimerChanged = MessageAutoDeleteTimerChanged
+newtype MessageAutoDeleteTimerChanged = MessageAutoDeleteTimerChanged
   { messageAutoDeleteTimerChangedMessageAutoDeleteTime :: Seconds -- ^ New auto-delete time for messages in the chat; in seconds
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/ReactionType.hs b/src/Telegram/Bot/API/Types/ReactionType.hs
--- a/src/Telegram/Bot/API/Types/ReactionType.hs
+++ b/src/Telegram/Bot/API/Types/ReactionType.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE BlockArguments #-}
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Telegram.Bot.API.Types.ReactionType where
@@ -16,7 +15,7 @@
 -- ** 'ReactionType'
 
 -- | This object describes the type of a reaction. Currently, it can be one of
--- 
+--
 -- * 'ReactionTypeEmoji',
 -- * 'ReactionTypeCustomEmoji'.
 --
diff --git a/src/Telegram/Bot/API/Types/VideoChatEnded.hs b/src/Telegram/Bot/API/Types/VideoChatEnded.hs
--- a/src/Telegram/Bot/API/Types/VideoChatEnded.hs
+++ b/src/Telegram/Bot/API/Types/VideoChatEnded.hs
@@ -11,7 +11,7 @@
 -- ** 'VideoChatEnded'
 
 -- | This object represents a service message about a video chat ended in the chat.
-data VideoChatEnded = VideoChatEnded
+newtype VideoChatEnded = VideoChatEnded
   { videoChatEndedDuration :: Seconds -- ^ Video chat duration in seconds.
   }
   deriving (Generic, Show)
@@ -22,7 +22,7 @@
 
 -- ** 'VideoChatParticipantsInvited'
 
-data VideoChatParticipantsInvited = VideoChatParticipantsInvited
+newtype VideoChatParticipantsInvited = VideoChatParticipantsInvited
   { videoChatParticipantsInvitedUsers :: Maybe [User] -- ^ New members that were invited to the video chat.
   }
   deriving (Generic, Show)
diff --git a/src/Telegram/Bot/API/Types/VideoChatScheduled.hs b/src/Telegram/Bot/API/Types/VideoChatScheduled.hs
--- a/src/Telegram/Bot/API/Types/VideoChatScheduled.hs
+++ b/src/Telegram/Bot/API/Types/VideoChatScheduled.hs
@@ -10,7 +10,7 @@
 -- ** 'VideoChatScheduled'
 
 -- | This object represents a service message about a video chat scheduled in the chat.
-data VideoChatScheduled = VideoChatScheduled
+newtype VideoChatScheduled = VideoChatScheduled
   { videoChatScheduledStartDate :: POSIXTime -- ^ Point in time (Unix timestamp) when the video chat is supposed to be started by a chat administrator.
   }
   deriving (Generic, Show)
diff --git a/telegram-bot-api.cabal b/telegram-bot-api.cabal
--- a/telegram-bot-api.cabal
+++ b/telegram-bot-api.cabal
@@ -1,7 +1,7 @@
 cabal-version: 1.12
 
 name:           telegram-bot-api
-version:        7.4.2
+version:        7.4.3
 synopsis:       Easy to use library for building Telegram bots. Exports Telegram Bot API.
 description:    Please see the README on Github at <https://github.com/fizruk/telegram-bot-simple#readme>
                 .
@@ -252,33 +252,21 @@
   ghc-options: -Wall
   build-depends:
       aeson
-    , aeson-pretty
     , base >=4.16 && <5
-    , bytestring
-    , cron >=0.7.0
     , filepath
     , hashable
     , http-api-data
     , http-client
     , http-client-tls
-    , monad-control
     , mtl
-    , pretty-show
-    , profunctors
     , servant
     , servant-client
     , servant-multipart-api
     , servant-multipart-client
     , servant-server
-    , split
-    , stm
     , template-haskell
     , text
     , time
-    , transformers
-    , unordered-containers
-    , warp
-    , warp-tls
   default-language: Haskell2010
   default-extensions:
     TemplateHaskell
