diff --git a/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntByteDecoder.java b/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntByteDecoder.java
deleted file mode 100644
index 17a856a7..00000000
--- a/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntByteDecoder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2020 Nan1t
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package ua.nanit.limbo.connection.pipeline;
-
-import io.netty.util.ByteProcessor;
-
-public class VarIntByteDecoder implements ByteProcessor {
-
- private int readVarInt;
- private int bytesRead;
- private DecodeResult result = DecodeResult.TOO_SHORT;
-
- @Override
- public boolean process(byte k) {
- readVarInt |= (k & 0x7F) << bytesRead++ * 7;
- if (bytesRead > 3) {
- result = DecodeResult.TOO_BIG;
- return false;
- }
- if ((k & 0x80) != 128) {
- result = DecodeResult.SUCCESS;
- return false;
- }
- return true;
- }
-
- public int getReadVarInt() {
- return readVarInt;
- }
-
- public int getBytesRead() {
- return bytesRead;
- }
-
- public DecodeResult getResult() {
- return result;
- }
-
- public enum DecodeResult {
- SUCCESS,
- TOO_SHORT,
- TOO_BIG
- }
-}
\ No newline at end of file
diff --git a/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntFrameDecoder.java b/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntFrameDecoder.java
index 25f8779a..77412d38 100644
--- a/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntFrameDecoder.java
+++ b/src/main/java/ua/nanit/limbo/connection/pipeline/VarIntFrameDecoder.java
@@ -20,7 +20,9 @@
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
-import ua.nanit.limbo.server.Log;
+import io.netty.handler.codec.DecoderException;
+import io.netty.util.ByteProcessor;
+import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -33,28 +35,81 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List