diff --git a/src/main/cogs/booru.py b/src/main/cogs/booru.py
index a14b49e..1e1390d 100644
--- a/src/main/cogs/booru.py
+++ b/src/main/cogs/booru.py
@@ -1094,9 +1094,6 @@ class MsG:
             await ctx.send('**Request timed out**')
             await ctx.message.add_reaction('\N{CROSS MARK}')
 
-        # tools.command_dict.setdefault(str(ctx.author.id), {}).update(
-        #     {'command': ctx.command, 'args': ctx.args})
-
     # @e621.error
     # async def e621_error(self, ctx, error):
     #     if isinstance(error, exc.NSFW):
diff --git a/src/main/cogs/tools.py b/src/main/cogs/tools.py
index 5f7418a..d33d965 100644
--- a/src/main/cogs/tools.py
+++ b/src/main/cogs/tools.py
@@ -25,33 +25,32 @@ youtube = None
 
 tempfile.tempdir = os.getcwd()
 
-command_dict = {}
-
 
 class Utils:
 
     def __init__(self, bot):
         self.bot = bot
 
-    @commands.command(name='last', aliases=['l', ','], brief='Reinvokes last command', description='Reinvokes previous command executed', hidden=True)
-    async def last_command(self, ctx):
-        global command_dict
+    @commands.command(name='lastcommand', aliases=['last', 'l', ','], brief='Reinvokes last successful command', description='Executes last successfully executed command')
+    async def last_command(self, ctx, arg='None'):
+        try:
+            context = u.last_commands[ctx.author.id]
 
-        if command_dict.get(str(ctx.author.id), {}).get('args', None) is not None:
-            args = command_dict.get(str(ctx.author.id), {})['args']
-        print(command_dict)
-        await ctx.invoke(command_dict.get(str(ctx.author.id), {}).get('command', None), args)
+            if arg == 'show' or arg == 'sh' or arg == 's':
+                await ctx.send(f'`{context.prefix}{context.invoked_with} {" ".join(context.args[2:])}`', delete_after=7)
+            else:
+                await ctx.invoke(context.command, *context.args[2:], **context.kwargs)
+
+        except KeyError:
+            await ctx.send('**No last command**', delete_after=7)
+            await ctx.message.add_reaction('\N{CROSS MARK}')
 
     # Displays latency
     @commands.command(aliases=['p'], brief='Pong!', description='Returns latency from bot to Discord servers, not to user')
     @checks.del_ctx()
     async def ping(self, ctx):
-        global command_dict
-
         await ctx.message.add_reaction('\N{TABLE TENNIS PADDLE AND BALL}')
-
         await ctx.send(ctx.author.mention + '  \N{TABLE TENNIS PADDLE AND BALL}  `' + str(round(self.bot.latency * 1000)) + 'ms`', delete_after=5)
-        command_dict.setdefault(str(ctx.author.id), {}).update({'command': ctx.command})
 
     @commands.command(aliases=['pre'], brief='List bot prefixes', description='Shows all used prefixes')
     @checks.del_ctx()