diff --git a/src/account_observer.ts b/src/account_observer.ts
deleted file mode 100644
index 2bbffc2a3ac8239d8639024dc4d2d06fbaa5148d..0000000000000000000000000000000000000000
--- a/src/account_observer.ts
+++ /dev/null
@@ -1,347 +0,0 @@
-import {
-  OperationVisitor, account_create, account_create_with_delegation, account_update, account_update2,
-  account_witness_proxy, account_witness_vote, cancel_transfer_from_savings, change_recovery_account,
-  claim_account, claim_reward_balance, collateralized_convert, comment, comment_options, convert,
-  create_claimed_account, create_proposal, custom, custom_json, decline_voting_rights, delegate_vesting_shares,
-  delete_comment, escrow_approve, escrow_dispute, escrow_release, escrow_transfer, feed_publish, limit_order_cancel,
-  limit_order_create, limit_order_create2, operation, pow, pow2, recover_account, recurrent_transfer, remove_proposal,
-  request_account_recovery, set_withdraw_vesting_route, transfer, transfer_from_savings, transfer_to_savings,
-  transfer_to_vesting, update_proposal, update_proposal_votes, vote, withdraw_vesting, witness_block_approve,
-  witness_set_properties, witness_update } from "@hiveio/wax";
-
-export class AccountOperationVisitor extends OperationVisitor<operation | void> {
-  public constructor(
-    private readonly account: string
-  ) {
-    super();
-  }
-
-  public vote(op: vote): operation | void {
-    if(op.author === this.account || op.voter === this.account)
-      return {
-        vote: op
-      };
-  }
-
-  public comment(op: comment): operation | void {
-    if(op.author === this.account || op.parent_author === this.account)
-      return {
-        comment: op
-      };
-  }
-
-  public transfer(op: transfer): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        transfer: op
-      };
-  }
-
-  public transfer_to_vesting(op: transfer_to_vesting): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        transfer_to_vesting: op
-      };
-  }
-
-  public withdraw_vesting(op: withdraw_vesting): operation | void {
-    if(op.account === this.account)
-      return {
-        withdraw_vesting: op
-      };
-  }
-
-  public limit_order_create(op: limit_order_create): operation | void {
-    if(op.owner === this.account)
-      return {
-        limit_order_create: op
-      };
-  }
-
-  public limit_order_cancel(op: limit_order_cancel): operation | void {
-    if(op.owner === this.account)
-      return {
-        limit_order_cancel: op
-      };
-  }
-
-  public feed_publish(op: feed_publish): operation | void {
-    if(op.publisher === this.account)
-      return {
-        feed_publish: op
-      };
-  }
-
-  public convert(op: convert): operation | void {
-    if(op.owner === this.account)
-      return {
-        convert: op
-      };
-  }
-
-  public account_create(op: account_create): operation | void {
-    if(op.creator === this.account || op.new_account_name === this.account) // XXX: Posting, owner etc.
-      return {
-        account_create: op
-      };
-  }
-
-  public account_update(op: account_update): operation | void {
-    if(op.account === this.account)
-      return {
-        account_update: op
-      };
-  }
-
-  public witness_update(op: witness_update): operation | void {
-    if(op.owner === this.account)
-      return {
-        witness_update: op
-      };
-  }
-
-  public account_witness_vote(op: account_witness_vote): operation | void {
-    if(op.account === this.account || op.witness === this.account)
-      return {
-        account_witness_vote: op
-      };
-  }
-
-  public account_witness_proxy(op: account_witness_proxy): operation | void {
-    if(op.account === this.account || op.proxy === this.account)
-      return {
-        account_witness_proxy: op
-      };
-  }
-
-  public pow(op: pow): operation | void {
-    if(op.worker_account === this.account)
-      return {
-        pow: op
-      };
-  }
-
-  public custom(_op: custom): operation | void {
-    // XXX: op.required_auths
-  }
-
-  public witness_block_approve(op: witness_block_approve): operation | void {
-    if(op.witness === this.account)
-      return {
-        witness_block_approve: op
-      };
-  }
-
-  public delete_comment(op: delete_comment): operation | void {
-    if(op.author === this.account)
-      return {
-        delete_comment: op
-      };
-  }
-
-  public custom_json(op: custom_json): operation | void {
-    if(op.required_auths.includes(this.account) || op.required_posting_auths.includes(this.account))
-      return {
-        custom_json: op
-      };
-  }
-
-  public comment_options(op: comment_options): operation | void {
-    if(op.author === this.account)
-      return {
-        comment_options: op
-      };
-  }
-
-  public set_withdraw_vesting_route(op: set_withdraw_vesting_route): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        set_withdraw_vesting_route: op
-      };
-  }
-
-  public limit_order_create2(op: limit_order_create2): operation | void {
-    if(op.owner === this.account)
-      return {
-        limit_order_create2: op
-      };
-  }
-
-  public claim_account(op: claim_account): operation | void {
-    if(op.creator === this.account)
-      return {
-        claim_account: op
-      };
-  }
-
-  public create_claimed_account(op: create_claimed_account): operation | void {
-    if(op.creator === this.account || op.new_account_name === this.account) // XXX: Posting, owner etc.
-      return {
-        create_claimed_account: op
-      };
-  }
-
-  public request_account_recovery(op: request_account_recovery): operation | void {
-    if(op.account_to_recover === this.account || op.recovery_account === this.account) // XXX: new_owner_authority
-      return {
-        request_account_recovery: op
-      };
-  }
-
-  public recover_account(op: recover_account): operation | void {
-    if(op.account_to_recover === this.account) // XXX: recent_owner_authority, new_owner_authority
-      return {
-        recover_account: op
-      };
-  }
-
-  public change_recovery_account(op: change_recovery_account): operation | void {
-    if(op.account_to_recover === this.account || op.new_recovery_account === this.account)
-      return {
-        change_recovery_account: op
-      };
-  }
-
-  public escrow_transfer(op: escrow_transfer): operation | void {
-    if(op.agent === this.account || op.from_account === this.account || op.to_account === this.account)
-      return {
-        escrow_transfer: op
-      };
-  }
-
-  public escrow_dispute(op: escrow_dispute): operation | void {
-    if(op.agent === this.account || op.from_account === this.account || op.to_account === this.account || op.who === this.account)
-      return {
-        escrow_dispute: op
-      };
-  }
-
-  public escrow_release(op: escrow_release): operation | void {
-    if(
-      op.agent === this.account || op.from_account === this.account
-      || op.receiver === this.account || op.to_account === this.account || op.who === this.account
-    )
-      return {
-        escrow_release: op
-      };
-  }
-
-  public pow2(op: pow2): operation | void {
-    if(op.work?.equihash_pow?.input?.worker_account === this.account || op.work?.pow2?.input?.worker_account === this.account)
-      return {
-        pow2: op
-      };
-  }
-
-  public escrow_approve(op: escrow_approve): operation | void {
-    if(op.agent === this.account || op.from_account === this.account || op.to_account === this.account || op.who === this.account)
-      return {
-        escrow_approve: op
-      };
-  }
-
-  public transfer_to_savings(op: transfer_to_savings): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        transfer_to_savings: op
-      };
-  }
-
-  public transfer_from_savings(op: transfer_from_savings): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        transfer_from_savings: op
-      };
-  }
-
-  public cancel_transfer_from_savings(op: cancel_transfer_from_savings): operation | void {
-    if(op.from_account === this.account)
-      return {
-        cancel_transfer_from_savings: op
-      };
-  }
-
-  public decline_voting_rights(op: decline_voting_rights): operation | void {
-    if(op.account === this.account)
-      return {
-        decline_voting_rights: op
-      };
-  }
-
-  public claim_reward_balance(op: claim_reward_balance): operation | void {
-    if(op.account === this.account)
-      return {
-        claim_reward_balance: op
-      };
-  }
-
-  public delegate_vesting_shares(op: delegate_vesting_shares): operation | void {
-    if(op.delegatee === this.account || op.delegator === this.account)
-      return {
-        delegate_vesting_shares: op
-      };
-  }
-
-  public account_create_with_delegation(op: account_create_with_delegation): operation | void {
-    if(op.creator === this.account || op.new_account_name === this.account) // XXX: Posting, owner etc.
-      return {
-        account_create_with_delegation: op
-      };
-  }
-
-  public witness_set_properties(op: witness_set_properties): operation | void {
-    if(op.owner === this.account)
-      return {
-        witness_set_properties: op
-      };
-  }
-
-  public account_update2(op: account_update2): operation | void {
-    if(op.account === this.account) // XXX: Posting, owner etc.
-      return {
-        account_update2: op
-      };
-  }
-
-  public create_proposal(op: create_proposal): operation | void {
-    if(op.creator === this.account || op.receiver === this.account)
-      return {
-        create_proposal: op
-      };
-  }
-
-  public update_proposal_votes(op: update_proposal_votes): operation | void {
-    if(op.voter === this.account)
-      return {
-        update_proposal_votes: op
-      };
-  }
-
-  public remove_proposal(op: remove_proposal): operation | void {
-    if(op.proposal_owner === this.account)
-      return {
-        remove_proposal: op
-      };
-  }
-
-  public update_proposal(op: update_proposal): operation | void {
-    if(op.creator === this.account)
-      return {
-        update_proposal: op
-      };
-  }
-
-  public collateralized_convert(op: collateralized_convert): operation | void {
-    if(op.owner === this.account)
-      return {
-        collateralized_convert: op
-      };
-  }
-
-  public recurrent_transfer(op: recurrent_transfer): operation | void {
-    if(op.from_account === this.account || op.to_account === this.account)
-      return {
-        recurrent_transfer: op
-      };
-  }
-}
diff --git a/src/queen.ts b/src/queen.ts
index a50ebce5c58d99a76d3634e7aee6b068ee08564f..b50b0f54b0771e36bf050fd11ff2b6791e96e84d 100644
--- a/src/queen.ts
+++ b/src/queen.ts
@@ -1,7 +1,6 @@
 import type { ApiAccount, operation } from "@hiveio/wax";
 import type { Subscribable, Observer, Unsubscribable } from "rxjs";
 
-import { AccountOperationVisitor } from "./account_observer";
 import { WorkerBeeError } from "./errors";
 import type { IBlockData, ITransactionData, IOperationData, IWorkerBee } from "./interfaces";
 
@@ -116,8 +115,6 @@ export class QueenBee {
           }
         };
 
-        const visitor = new AccountOperationVisitor(name);
-
         const listener = (transactionData: ITransactionData): void => {
           const confirm = (result: operation): void => {
             try {
@@ -129,12 +126,9 @@ export class QueenBee {
 
           const proto = this.worker.chain!.createTransactionFromJson(transactionData.transaction).transaction;
 
-          for(const op of proto.operations) {
-            const result = visitor.accept(op);
-
-            if(typeof result === "object")
-              confirm(result);
-          }
+          for(const op of proto.operations)
+            if(this.worker.chain!.operationGetImpactedAccounts(op).has(name))
+              confirm(op);
         };
         this.worker.on("transaction", listener);