boolean perform(Command c) {
        sendReadOnlyBefore(c);
        if(c.op == null) return false; // FOR COMMANDS HAVING ONLY READ ONLY BUT NO ACTUAL CMD
        for (int s = 1; s < slot_num; s++) {
            if (c.cmdEquals(decisions.get(s))) {
                slot_num++;
//                logger.log(messageLevel,"increasing slot no for same cmd "+slot_num);
                return true;
            }
        }
//        logger.log(messageLevel,"calling read only "+slot_num);
        String[] operationArgs = c.op.operationArgs.split(Env.TX_MSG_SEPARATOR);
        try {
            Account account = accountList.get(Integer.parseInt(operationArgs[0]));
            int amt = operationArgs.length > 1 ? Integer.parseInt(operationArgs[1]) : 0;
            String output;
            switch (c.op.opType) {
                case Deposit:
                    account.credit(amt);
                    output = account.toString();
                    break;
                case Inquiry:
                    account.getBalance();
                    output = account.toString();
                    break;
                case Transfer:
                    Account toAccount = accountList.get(Integer.parseInt(operationArgs[2]));
                    account.transfer(toAccount, amt);
                    output = account.toString() + " : "+ toAccount.toString();
                    break;
                case Withdraw:
                    account.debit(amt);
                    output = account.toString();
                    break;
                default:
                    output = "INVALID OPERATION TYPE";
                    break;
            }
            logger.log(messageLevel, "PERFORM " + c + " for slot :" + (slot_num) + " OUTPUT :" + output);
            sendMessage(c.client,new ResponseMessage(me,c,account));
        } catch (Exception e) {
            e.printStackTrace();
            logger.log(Level.SEVERE, "Error in the input msg ");
            sendMessage(c.client,new ResponseMessage(me,c,null));
        }
//        sendReadOnlyAfter();
        slot_num++;
        return true;
    }