diff --git a/README.md b/README.md
index 0a809e8..d06ae7e 100644
--- a/README.md
+++ b/README.md
@@ -48,31 +48,31 @@ Now let's try to repeat the example from the Telegraf [documentation page](https
 
 import { Injectable } from '@nestjs/common';
 import {
-  TelegrafStart,
-  TelegrafHelp,
-  TelegrafOn,
-  TelegrafHears,
+  Start,
+  Help,
+  On,
+  Hears,
   Context,
 } from 'nestjs-telegraf';
 
 @Injectable()
 export class AppService {
-  @TelegrafStart()
+  @Start()
   start(ctx: Context) {
     ctx.reply('Welcome');
   }
 
-  @TelegrafHelp()
+  @Help()
   help(ctx: Context) {
     ctx.reply('Send me a sticker');
   }
 
-  @TelegrafOn('sticker')
+  @On('sticker')
   on(ctx: Context) {
     ctx.reply('👍');
   }
 
-  @TelegrafHears('hi')
+  @Hears('hi')
   hears(ctx: Context) {
     ctx.reply('Hey there');
   }
@@ -213,4 +213,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 <!-- prettier-ignore-end -->
 <!-- ALL-CONTRIBUTORS-LIST:END -->
 
-This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
\ No newline at end of file
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/lib/decorators/telegraf-action.decorator.ts b/lib/decorators/action.decorator.ts
similarity index 53%
rename from lib/decorators/telegraf-action.decorator.ts
rename to lib/decorators/action.decorator.ts
index 8345f33..a6c7a99 100644
--- a/lib/decorators/telegraf-action.decorator.ts
+++ b/lib/decorators/action.decorator.ts
@@ -5,18 +5,23 @@ import { Context } from '../interfaces';
 
 export type TelegrafActionTriggers = HearsTriggers<Context>;
 
-export interface TelegrafActionMetadata {
+export interface ActionOptions {
   triggers: TelegrafActionTriggers;
 }
 
 /**
  * Registers middleware for handling callback_data actions with regular expressions.
- * @param triggers Triggers
  *
- * https://telegraf.js.org/#/?id=action
+ * @see https://telegraf.js.org/#/?id=action
  */
-export function TelegrafAction(
-  triggers: TelegrafActionTriggers,
-): MethodDecorator {
+export const Action = (triggers: TelegrafActionTriggers): MethodDecorator => {
   return SetMetadata(DECORATORS.ACTION, { triggers });
-}
+};
+
+/**
+ * Registers middleware for handling callback_data actions with regular expressions.
+ *
+ * @see https://telegraf.js.org/#/?id=action
+ * @deprecated since v2, use Action decorator instead.
+ */
+export const TelegrafAction = Action;
diff --git a/lib/decorators/cashtag.decorator.ts b/lib/decorators/cashtag.decorator.ts
new file mode 100644
index 0000000..e85efb3
--- /dev/null
+++ b/lib/decorators/cashtag.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafCashtagCashtag = string | string[];
+
+export interface CashtagOptions {
+  cashtag: TelegrafCashtagCashtag;
+}
+
+/**
+ * Cashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=cashtag
+ */
+export const Cashtag = (cashtag: TelegrafCashtagCashtag): MethodDecorator => {
+  return SetMetadata(DECORATORS.CASHTAG, { cashtag });
+};
+
+/**
+ * Cashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=cashtag
+ * @deprecated since v2, use Cashtag decorator instead.
+ */
+export const TelegrafCashtag = Cashtag;
diff --git a/lib/decorators/command.decorator.ts b/lib/decorators/command.decorator.ts
new file mode 100644
index 0000000..6100612
--- /dev/null
+++ b/lib/decorators/command.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafCommandCommands = string | string[];
+
+export interface CommandOptions {
+  commands: TelegrafCommandCommands;
+}
+
+/**
+ * Command handling.
+ *
+ * @see https://telegraf.js.org/#/?id=command
+ */
+export const Command = (commands: TelegrafCommandCommands): MethodDecorator => {
+  return SetMetadata(DECORATORS.COMMAND, { commands });
+};
+
+/**
+ * Command handling.
+ *
+ * @see https://telegraf.js.org/#/?id=command
+ * @deprecated since v2, use Command decorator instead.
+ */
+export const TelegrafCommand = Command;
diff --git a/lib/decorators/entity.decorator.ts b/lib/decorators/entity.decorator.ts
new file mode 100644
index 0000000..53be71f
--- /dev/null
+++ b/lib/decorators/entity.decorator.ts
@@ -0,0 +1,30 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafEntityEntity =
+  | string
+  | string[]
+  | RegExp
+  | RegExp[]
+  | Function;
+
+export interface EntityOptions {
+  entity: TelegrafEntityEntity;
+}
+
+/**
+ * Entity handling.
+ *
+ * @see https://telegraf.js.org/#/?id=entity
+ */
+export const Entity = (entity: TelegrafEntityEntity): MethodDecorator => {
+  return SetMetadata(DECORATORS.ENTITY, { entity });
+};
+
+/**
+ * Entity handling.
+ *
+ * @see https://telegraf.js.org/#/?id=entity
+ * @deprecated since v2, use Entity decorator instead.
+ */
+export const TelegrafEntity = Entity;
diff --git a/lib/decorators/game-query.decorator.ts b/lib/decorators/game-query.decorator.ts
new file mode 100644
index 0000000..c9d240b
--- /dev/null
+++ b/lib/decorators/game-query.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Registers middleware for handling callback_data actions with game query.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ */
+export const GameQuery = (): MethodDecorator => {
+  return SetMetadata(DECORATORS.GAME_QUERY, {});
+};
+
+/**
+ * Registers middleware for handling callback_data actions with game query.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ * @deprecated since v2, use Action decorator instead.
+ */
+export const TelegrafGameQuery = GameQuery;
diff --git a/lib/decorators/hashtag.decorator.ts b/lib/decorators/hashtag.decorator.ts
new file mode 100644
index 0000000..88e03cb
--- /dev/null
+++ b/lib/decorators/hashtag.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafHashtagHashtag = string | string[];
+
+export interface HashtagOptions {
+  hashtag: TelegrafHashtagHashtag;
+}
+
+/**
+ * Hashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=hashtag
+ */
+export const Hashtag = (hashtag: TelegrafHashtagHashtag): MethodDecorator => {
+  return SetMetadata(DECORATORS.HASHTAG, { hashtag });
+};
+
+/**
+ * Hashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=hashtag
+ * @deprecated since v2, use Hashtag decorator instead.
+ */
+export const TelegrafHashtag = Hashtag;
diff --git a/lib/decorators/telegraf-hears.decorator.ts b/lib/decorators/hears.decorator.ts
similarity index 54%
rename from lib/decorators/telegraf-hears.decorator.ts
rename to lib/decorators/hears.decorator.ts
index 4c0a280..ecb7c56 100644
--- a/lib/decorators/telegraf-hears.decorator.ts
+++ b/lib/decorators/hears.decorator.ts
@@ -5,18 +5,23 @@ import { Context } from '../interfaces';
 
 export type TelegrafHearsTriggers = HearsTriggers<Context>;
 
-export interface TelegrafHearsMetadata {
+export interface HearsOptions {
   triggers: TelegrafHearsTriggers;
 }
 
 /**
  * Registers middleware for handling text messages.
- * @param triggers Triggers
  *
- * https://telegraf.js.org/#/?id=hears
+ * @see https://telegraf.js.org/#/?id=hears
  */
-export function TelegrafHears(
-  triggers: TelegrafHearsTriggers,
-): MethodDecorator {
+export const Hears = (triggers: TelegrafHearsTriggers): MethodDecorator => {
   return SetMetadata(DECORATORS.HEARS, { triggers: triggers });
-}
+};
+
+/**
+ * Registers middleware for handling text messages.
+ *
+ * @see https://telegraf.js.org/#/?id=hears
+ * @deprecated since v2, use Hears decorator instead.
+ */
+export const TelegrafHears = Hears;
diff --git a/lib/decorators/help.decorator.ts b/lib/decorators/help.decorator.ts
new file mode 100644
index 0000000..ced12b1
--- /dev/null
+++ b/lib/decorators/help.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /help command.
+ *
+ * @see https://telegraf.js.org/#/?id=help
+ */
+export const Help = (): MethodDecorator => {
+  return SetMetadata(DECORATORS.HELP, {});
+};
+
+/**
+ * Handler for /help command.
+ *
+ * @see https://telegraf.js.org/#/?id=help
+ * @deprecated since v2, use Help decorator instead.
+ */
+export const TelegrafHelp = Help;
diff --git a/lib/decorators/index.ts b/lib/decorators/index.ts
index 76f6f1a..4b97f06 100644
--- a/lib/decorators/index.ts
+++ b/lib/decorators/index.ts
@@ -1,17 +1,17 @@
+export * from './action.decorator';
+export * from './cashtag.decorator';
+export * from './command.decorator';
+export * from './entity.decorator';
+export * from './game-query.decorator';
+export * from './hashtag.decorator';
+export * from './hears.decorator';
+export * from './help.decorator';
 export * from './inject-bot.decorator';
-export * from './telegraf-use.decorator';
-export * from './telegraf-on.decorator';
-export * from './telegraf-hears.decorator';
-export * from './telegraf-command.decorator';
-export * from './telegraf-start.decorator';
-export * from './telegraf-help.decorator';
-export * from './telegraf-settings.decorator';
-export * from './telegraf-entity.decorator';
-export * from './telegraf-mention.decorator';
-export * from './telegraf-phone.decorator';
-export * from './telegraf-hashtag.decorator';
-export * from './telegraf-cashtag.decorator';
-export * from './telegraf-action.decorator';
-export * from './telegraf-inline-query.decorator';
-export * from './telegraf-game-query.decorator';
+export * from './inline-query.decorator';
+export * from './mention.decorator';
+export * from './on.decorator';
+export * from './phone.decorator';
+export * from './settings.decorator';
+export * from './start.decorator';
 export * from './update.decorator';
+export * from './use.decorator';
diff --git a/lib/decorators/telegraf-inline-query.decorator.ts b/lib/decorators/inline-query.decorator.ts
similarity index 51%
rename from lib/decorators/telegraf-inline-query.decorator.ts
rename to lib/decorators/inline-query.decorator.ts
index 1a4cc4f..4345d1b 100644
--- a/lib/decorators/telegraf-inline-query.decorator.ts
+++ b/lib/decorators/inline-query.decorator.ts
@@ -3,18 +3,25 @@ import { DECORATORS } from '../telegraf.constants';
 
 export type TelegrafInlineQueryTriggers = string | string[] | RegExp | RegExp[];
 
-export interface TelegrafInlineQueryMetadata {
+export interface InlineQueryOptions {
   triggers: TelegrafInlineQueryTriggers;
 }
 
 /**
  * Registers middleware for handling inline_query actions with regular expressions.
- * @param triggers Triggers
  *
- * https://telegraf.js.org/#/?id=inlinequery
+ * @see https://telegraf.js.org/#/?id=inlinequery
  */
-export function TelegrafInlineQuery(
+export const InlineQuery = (
   triggers: TelegrafInlineQueryTriggers,
-): MethodDecorator {
+): MethodDecorator => {
   return SetMetadata(DECORATORS.INLINE_QUERY, { triggers });
-}
+};
+
+/**
+ * Registers middleware for handling inline_query actions with regular expressions.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ * @deprecated since v2, use InlineQuery decorator instead.
+ */
+export const TelegrafInlineQuery = InlineQuery;
diff --git a/lib/decorators/mention.decorator.ts b/lib/decorators/mention.decorator.ts
new file mode 100644
index 0000000..7611c8e
--- /dev/null
+++ b/lib/decorators/mention.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafMentionUsername = string | string[];
+
+export interface MentionOptions {
+  username: TelegrafMentionUsername;
+}
+
+/**
+ * Mention handling.
+ *
+ * @see https://telegraf.js.org/#/?id=mention
+ */
+export const Mention = (username: TelegrafMentionUsername): MethodDecorator => {
+  return SetMetadata(DECORATORS.MENTION, { username });
+};
+
+/**
+ * Mention handling.
+ *
+ * @see https://telegraf.js.org/#/?id=mention
+ * @deprecated since v2, use Mention decorator instead.
+ */
+export const TelegrafMention = Mention;
diff --git a/lib/decorators/telegraf-on.decorator.ts b/lib/decorators/on.decorator.ts
similarity index 57%
rename from lib/decorators/telegraf-on.decorator.ts
rename to lib/decorators/on.decorator.ts
index 4fe3ac0..bc36c94 100644
--- a/lib/decorators/telegraf-on.decorator.ts
+++ b/lib/decorators/on.decorator.ts
@@ -8,18 +8,23 @@ export type TelegrafOnUpdateTypes =
   | MessageSubTypes
   | MessageSubTypes[];
 
-export interface TelegrafOnMetadata {
+export interface OnOptions {
   updateTypes: TelegrafOnUpdateTypes;
 }
 
 /**
  * Registers middleware for provided update type.
- * @param updateTypes Update type
  *
- * https://telegraf.js.org/#/?id=on
+ * @see https://telegraf.js.org/#/?id=on
  */
-export function TelegrafOn(
-  updateTypes: TelegrafOnUpdateTypes,
-): MethodDecorator {
+export const On = (updateTypes: TelegrafOnUpdateTypes): MethodDecorator => {
   return SetMetadata(DECORATORS.ON, { updateTypes: updateTypes });
-}
+};
+
+/**
+ * Registers middleware for provided update type.
+ *
+ * @see https://telegraf.js.org/#/?id=on
+ * @deprecated since v2, use On decorator instead.
+ */
+export const TelegrafOn = On;
diff --git a/lib/decorators/phone.decorator.ts b/lib/decorators/phone.decorator.ts
new file mode 100644
index 0000000..90e6342
--- /dev/null
+++ b/lib/decorators/phone.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafPhonePhone = string | string[];
+
+export interface PhoneOptions {
+  phone: TelegrafPhonePhone;
+}
+
+/**
+ * Phone number handling.
+ *
+ * @see https://telegraf.js.org/#/?id=phone
+ */
+export const Phone = (phone: TelegrafPhonePhone): MethodDecorator => {
+  return SetMetadata(DECORATORS.PHONE, { phone });
+};
+
+/**
+ * Phone number handling.
+ *
+ * @see https://telegraf.js.org/#/?id=phone
+ * @deprecated since v2, use Phone decorator instead.
+ */
+export const TelegrafPhone = Phone;
diff --git a/lib/decorators/settings.decorator.ts b/lib/decorators/settings.decorator.ts
new file mode 100644
index 0000000..674af29
--- /dev/null
+++ b/lib/decorators/settings.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /settings command.
+ *
+ * @see https://telegraf.js.org/#/?id=settings
+ */
+export const Settings = (): MethodDecorator => {
+  return SetMetadata(DECORATORS.SETTINGS, {});
+};
+
+/**
+ * Handler for /settings command.
+ *
+ * @see https://telegraf.js.org/#/?id=settings
+ * @deprecated since v2, use Settings decorator instead.
+ */
+export const TelegrafSettings = Settings;
diff --git a/lib/decorators/start.decorator.ts b/lib/decorators/start.decorator.ts
new file mode 100644
index 0000000..d11658e
--- /dev/null
+++ b/lib/decorators/start.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /start command.
+ *
+ * @see https://telegraf.js.org/#/?id=start
+ */
+export const Start = (): MethodDecorator => {
+  return SetMetadata(DECORATORS.START, {});
+};
+
+/**
+ * Handler for /start command.
+ *
+ * @see https://telegraf.js.org/#/?id=start
+ * @deprecated since v2, use Start decorator instead.
+ */
+export const TelegrafStart = Start;
diff --git a/lib/decorators/telegraf-cashtag.decorator.ts b/lib/decorators/telegraf-cashtag.decorator.ts
deleted file mode 100644
index 136c8c8..0000000
--- a/lib/decorators/telegraf-cashtag.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafCashtagCashtag = string | string[];
-
-export interface TelegrafCashtagMetadata {
-  cashtag: TelegrafCashtagCashtag;
-}
-
-/**
- * Cashtag handling.
- * @param cashtag Cashtag
- *
- * https://telegraf.js.org/#/?id=cashtag
- */
-export function TelegrafCashtag(
-  cashtag: TelegrafCashtagCashtag,
-): MethodDecorator {
-  return SetMetadata(DECORATORS.CASHTAG, { cashtag });
-}
diff --git a/lib/decorators/telegraf-command.decorator.ts b/lib/decorators/telegraf-command.decorator.ts
deleted file mode 100644
index 7f1570c..0000000
--- a/lib/decorators/telegraf-command.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafCommandCommands = string | string[];
-
-export interface TelegrafCommandMetadata {
-  commands: TelegrafCommandCommands;
-}
-
-/**
- * Command handling.
- * @param commands Commands
- *
- * https://telegraf.js.org/#/?id=command
- */
-export function TelegrafCommand(
-  commands: TelegrafCommandCommands,
-): MethodDecorator {
-  return SetMetadata(DECORATORS.COMMAND, { commands });
-}
diff --git a/lib/decorators/telegraf-entity.decorator.ts b/lib/decorators/telegraf-entity.decorator.ts
deleted file mode 100644
index b32c173..0000000
--- a/lib/decorators/telegraf-entity.decorator.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafEntityEntity =
-  | string
-  | string[]
-  | RegExp
-  | RegExp[]
-  | Function;
-
-export interface TelegrafEntityMetadata {
-  entity: TelegrafEntityEntity;
-}
-
-/**
- * Entity handling.
- * @param entity Entity name
- *
- * https://telegraf.js.org/#/?id=entity
- */
-export function TelegrafEntity(entity: TelegrafEntityEntity): MethodDecorator {
-  return SetMetadata(DECORATORS.ENTITY, { entity });
-}
diff --git a/lib/decorators/telegraf-game-query.decorator.ts b/lib/decorators/telegraf-game-query.decorator.ts
deleted file mode 100644
index 8439345..0000000
--- a/lib/decorators/telegraf-game-query.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Registers middleware for handling callback_data actions with game query.
- *
- * https://telegraf.js.org/#/?id=inlinequery
- */
-export function TelegrafGameQuery(): MethodDecorator {
-  return SetMetadata(DECORATORS.GAME_QUERY, {});
-}
diff --git a/lib/decorators/telegraf-hashtag.decorator.ts b/lib/decorators/telegraf-hashtag.decorator.ts
deleted file mode 100644
index 3265213..0000000
--- a/lib/decorators/telegraf-hashtag.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafHashtagHashtag = string | string[];
-
-export interface TelegrafHashtagMetadata {
-  hashtag: TelegrafHashtagHashtag;
-}
-
-/**
- * Hashtag handling.
- * @param hashtag Hashtag
- *
- * https://telegraf.js.org/#/?id=hashtag
- */
-export function TelegrafHashtag(
-  hashtag: TelegrafHashtagHashtag,
-): MethodDecorator {
-  return SetMetadata(DECORATORS.HASHTAG, { hashtag });
-}
diff --git a/lib/decorators/telegraf-help.decorator.ts b/lib/decorators/telegraf-help.decorator.ts
deleted file mode 100644
index 7bade62..0000000
--- a/lib/decorators/telegraf-help.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /help command.
- *
- * https://telegraf.js.org/#/?id=help
- */
-export function TelegrafHelp(): MethodDecorator {
-  return SetMetadata(DECORATORS.HELP, {});
-}
diff --git a/lib/decorators/telegraf-mention.decorator.ts b/lib/decorators/telegraf-mention.decorator.ts
deleted file mode 100644
index 90dbc6b..0000000
--- a/lib/decorators/telegraf-mention.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafMentionUsername = string | string[];
-
-export interface TelegrafMentionMetadata {
-  username: TelegrafMentionUsername;
-}
-
-/**
- * Mention handling.
- * @param username Username
- *
- * https://telegraf.js.org/#/?id=mention
- */
-export function TelegrafMention(
-  username: TelegrafMentionUsername,
-): MethodDecorator {
-  return SetMetadata(DECORATORS.MENTION, { username });
-}
diff --git a/lib/decorators/telegraf-phone.decorator.ts b/lib/decorators/telegraf-phone.decorator.ts
deleted file mode 100644
index 8182150..0000000
--- a/lib/decorators/telegraf-phone.decorator.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafPhonePhone = string | string[];
-
-export interface TelegrafPhoneMetadata {
-  phone: TelegrafPhonePhone;
-}
-
-/**
- * Phone number handling.
- * @param phone Phone number
- *
- * https://telegraf.js.org/#/?id=phone
- */
-export function TelegrafPhone(phone: TelegrafPhonePhone): MethodDecorator {
-  return SetMetadata(DECORATORS.PHONE, { phone });
-}
diff --git a/lib/decorators/telegraf-settings.decorator.ts b/lib/decorators/telegraf-settings.decorator.ts
deleted file mode 100644
index aed3741..0000000
--- a/lib/decorators/telegraf-settings.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /settings command.
- *
- * https://telegraf.js.org/#/?id=settings
- */
-export function TelegrafSettings(): MethodDecorator {
-  return SetMetadata(DECORATORS.SETTINGS, {});
-}
diff --git a/lib/decorators/telegraf-start.decorator.ts b/lib/decorators/telegraf-start.decorator.ts
deleted file mode 100644
index 3e0c820..0000000
--- a/lib/decorators/telegraf-start.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /start command.
- *
- * https://telegraf.js.org/#/?id=start
- */
-export function TelegrafStart(): MethodDecorator {
-  return SetMetadata(DECORATORS.START, {});
-}
diff --git a/lib/decorators/telegraf-use.decorator.ts b/lib/decorators/telegraf-use.decorator.ts
deleted file mode 100644
index 2ff0dd7..0000000
--- a/lib/decorators/telegraf-use.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Registers a middleware.
- *
- * https://telegraf.js.org/#/?id=use
- */
-export function TelegrafUse(): MethodDecorator {
-  return SetMetadata(DECORATORS.USE, {});
-}
diff --git a/lib/decorators/use.decorator.ts b/lib/decorators/use.decorator.ts
new file mode 100644
index 0000000..8c47461
--- /dev/null
+++ b/lib/decorators/use.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Registers a middleware.
+ *
+ * @see https://telegraf.js.org/#/?id=use
+ */
+export const Use = (): MethodDecorator => {
+  return SetMetadata(DECORATORS.USE, {});
+};
+
+/**
+ * Registers a middleware.
+ *
+ * @see https://telegraf.js.org/#/?id=use
+ * @deprecated since v2, use Use decorator instead.
+ */
+export const TelegrafUse = Use;
diff --git a/lib/telegraf-metadata.accessor.ts b/lib/telegraf-metadata.accessor.ts
index b35b8cf..26ab53e 100644
--- a/lib/telegraf-metadata.accessor.ts
+++ b/lib/telegraf-metadata.accessor.ts
@@ -1,17 +1,16 @@
 import { Injectable, Type } from '@nestjs/common';
 import { Reflector } from '@nestjs/core';
 import {
-  TelegrafActionMetadata,
-  TelegrafCashtagMetadata,
-  TelegrafCommandMetadata,
-  TelegrafEntityMetadata,
-  TelegrafHashtagMetadata,
-  TelegrafHearsMetadata,
-  TelegrafInlineQueryMetadata,
-  TelegrafMentionMetadata,
-  TelegrafOnMetadata,
-  TelegrafPhoneMetadata,
-  TelegrafStart,
+  ActionOptions,
+  CashtagOptions,
+  CommandOptions,
+  EntityOptions,
+  HashtagOptions,
+  HearsOptions,
+  InlineQueryOptions,
+  MentionOptions,
+  OnOptions,
+  PhoneOptions,
 } from './decorators';
 import { DECORATORS } from './telegraf.constants';
 
@@ -33,9 +32,7 @@ export class TelegrafMetadataAccessor {
     return !!this.reflector.get(DECORATORS.ON, target);
   }
 
-  getTelegrafOnMetadata(
-    target: Type<any> | Function,
-  ): TelegrafOnMetadata | undefined {
+  getTelegrafOnMetadata(target: Type<any> | Function): OnOptions | undefined {
     return this.reflector.get(DECORATORS.ON, target);
   }
 
@@ -48,7 +45,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafHearsMetadata(
     target: Type<any> | Function,
-  ): TelegrafHearsMetadata | undefined {
+  ): HearsOptions | undefined {
     return this.reflector.get(DECORATORS.HEARS, target);
   }
 
@@ -61,7 +58,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafCommandMetadata(
     target: Type<any> | Function,
-  ): TelegrafCommandMetadata | undefined {
+  ): CommandOptions | undefined {
     return this.reflector.get(DECORATORS.COMMAND, target);
   }
 
@@ -95,7 +92,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafEntityMetadata(
     target: Type<any> | Function,
-  ): TelegrafEntityMetadata | undefined {
+  ): EntityOptions | undefined {
     return this.reflector.get(DECORATORS.ENTITY, target);
   }
 
@@ -108,7 +105,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafMentionMetadata(
     target: Type<any> | Function,
-  ): TelegrafMentionMetadata | undefined {
+  ): MentionOptions | undefined {
     return this.reflector.get(DECORATORS.MENTION, target);
   }
 
@@ -121,7 +118,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafPhoneMetadata(
     target: Type<any> | Function,
-  ): TelegrafPhoneMetadata | undefined {
+  ): PhoneOptions | undefined {
     return this.reflector.get(DECORATORS.PHONE, target);
   }
 
@@ -134,7 +131,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafHashtagMetadata(
     target: Type<any> | Function,
-  ): TelegrafHashtagMetadata | undefined {
+  ): HashtagOptions | undefined {
     return this.reflector.get(DECORATORS.HASHTAG, target);
   }
 
@@ -147,7 +144,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafCashtagMetadata(
     target: Type<any> | Function,
-  ): TelegrafCashtagMetadata | undefined {
+  ): CashtagOptions | undefined {
     return this.reflector.get(DECORATORS.CASHTAG, target);
   }
 
@@ -160,7 +157,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafActionMetadata(
     target: Type<any> | Function,
-  ): TelegrafActionMetadata | undefined {
+  ): ActionOptions | undefined {
     return this.reflector.get(DECORATORS.ACTION, target);
   }
 
@@ -173,7 +170,7 @@ export class TelegrafMetadataAccessor {
 
   getTelegrafInlineQueryMetadata(
     target: Type<any> | Function,
-  ): TelegrafInlineQueryMetadata | undefined {
+  ): InlineQueryOptions | undefined {
     return this.reflector.get(DECORATORS.INLINE_QUERY, target);
   }
 
diff --git a/lib/telegraf.explorer.ts b/lib/telegraf.explorer.ts
index 49292f7..67a0961 100644
--- a/lib/telegraf.explorer.ts
+++ b/lib/telegraf.explorer.ts
@@ -6,16 +6,16 @@ import { TelegrafMetadataAccessor } from './telegraf-metadata.accessor';
 import { TelegrafProvider } from './telegraf.provider';
 import { TELEGRAF_PROVIDER } from './telegraf.constants';
 import {
-  TelegrafActionMetadata,
-  TelegrafCashtagMetadata,
-  TelegrafCommandMetadata,
-  TelegrafEntityMetadata,
-  TelegrafHashtagMetadata,
-  TelegrafHearsMetadata,
-  TelegrafInlineQueryMetadata,
-  TelegrafMentionMetadata,
-  TelegrafOnMetadata,
-  TelegrafPhoneMetadata,
+  ActionOptions,
+  CashtagOptions,
+  CommandOptions,
+  EntityOptions,
+  HashtagOptions,
+  HearsOptions,
+  InlineQueryOptions,
+  MentionOptions,
+  OnOptions,
+  PhoneOptions,
 } from './decorators';
 
 @Injectable()
@@ -127,7 +127,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafOnMetadata,
+    metadata: OnOptions,
   ) {
     telegraf.on(metadata.updateTypes, instance[key].bind(instance));
   }
@@ -136,7 +136,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafHearsMetadata,
+    metadata: HearsOptions,
   ) {
     telegraf.hears(metadata.triggers, instance[key].bind(instance));
   }
@@ -145,7 +145,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafCommandMetadata,
+    metadata: CommandOptions,
   ) {
     telegraf.command(metadata.commands, instance[key].bind(instance));
   }
@@ -179,7 +179,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafEntityMetadata,
+    metadata: EntityOptions,
   ) {
     // @ts-ignore
     telegraf.entity(metadata.entity, instance[key].bind(instance));
@@ -189,7 +189,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafMentionMetadata,
+    metadata: MentionOptions,
   ) {
     // @ts-ignore
     telegraf.mention(metadata.username, instance[key].bind(instance));
@@ -199,7 +199,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafPhoneMetadata,
+    metadata: PhoneOptions,
   ) {
     // @ts-ignore
     telegraf.phone(metadata.phone, instance[key].bind(instance));
@@ -209,7 +209,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafHashtagMetadata,
+    metadata: HashtagOptions,
   ) {
     // @ts-ignore
     telegraf.hashtag(metadata.hashtag, instance[key].bind(instance));
@@ -219,7 +219,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafCashtagMetadata,
+    metadata: CashtagOptions,
   ) {
     // @ts-ignore
     telegraf.cashtag(metadata.cashtag, instance[key].bind(instance));
@@ -229,7 +229,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafActionMetadata,
+    metadata: ActionOptions,
   ) {
     telegraf.action(metadata.triggers, instance[key].bind(instance));
   }
@@ -238,7 +238,7 @@ export class TelegrafExplorer implements OnModuleInit {
     instance: object,
     key: string,
     telegraf: TelegrafProvider,
-    metadata: TelegrafInlineQueryMetadata,
+    metadata: InlineQueryOptions,
   ) {
     // @ts-ignore
     telegraf.inlineQuery(metadata.triggers, instance[key].bind(instance));