diff --git a/src/main/java/org/jcnc/snow/vm/commands/flow/control/CallCommand.java b/src/main/java/org/jcnc/snow/vm/commands/flow/control/CallCommand.java
index befbfea..1171885 100644
--- a/src/main/java/org/jcnc/snow/vm/commands/flow/control/CallCommand.java
+++ b/src/main/java/org/jcnc/snow/vm/commands/flow/control/CallCommand.java
@@ -5,12 +5,48 @@ import org.jcnc.snow.vm.interfaces.Command;
import org.jcnc.snow.vm.module.*;
/**
- * CALL addr nArgs — pushes a new stack-frame, transfers the specified
- * argument count from the operand stack into the callee’s local slots
- * 0‥n-1 (left-to-right), then jumps to {@code addr}.
+ * The CallCommand class implements the {@link Command} interface and represents a subroutine/function call
+ * instruction in the virtual machine.
+ *
+ * This command facilitates method invocation by creating a new stack frame, transferring arguments
+ * from the operand stack to the callee's local variable store, and jumping to the specified target address.
+ *
+ *
+ * Specific behavior:
+ *
+ * - Parses the target address and the number of arguments from the instruction parameters.
+ * - Validates the operands and checks for correct argument count.
+ * - Builds a new local variable store for the callee and transfers arguments from the operand stack
+ * (left-to-right order, where the top of the stack is the last argument).
+ * - Pushes a new stack frame onto the call stack, saving the return address and local variables.
+ * - Jumps to the specified target address to begin execution of the callee function.
+ * - If any error occurs (e.g., malformed operands, stack underflow), an exception is thrown.
+ *
*/
public class CallCommand implements Command {
+ /**
+ * Executes the CALL instruction, initiating a subroutine/function call within the virtual machine.
+ *
+ * This method handles the creation of a new stack frame for the callee, argument passing,
+ * and control transfer to the target function address.
+ *
+ *
+ * @param parts The instruction parameters. Must include:
+ *
+ * - {@code parts[0]}: The "CALL" operator.
+ * - {@code parts[1]}: The target address of the callee function.
+ * - {@code parts[2]}: The number of arguments to pass.
+ *
+ * @param currentPC The current program counter, used to record the return address for after the call.
+ * @param operandStack The operand stack manager. Arguments are popped from this stack.
+ * @param callerLVS The local variable store of the caller function (not directly modified here).
+ * @param callStack The virtual machine's call stack manager, used to push the new stack frame.
+ * @return The new program counter value, which is the address of the callee function (i.e., jump target).
+ * The VM should transfer control to this address after setting up the call frame.
+ * @throws IllegalArgumentException If the instruction parameters are malformed or missing.
+ * @throws IllegalStateException If the operand stack does not contain enough arguments.
+ */
@Override
public int execute(String[] parts,
int currentPC,