@Override
    public void run() {

        try {

            objOutStream = new ObjectOutputStream(sslSocket.getOutputStream());
            objInStream = new ObjectInputStream(sslSocket.getInputStream());

            receivedObj = objInStream.readObject();

            // handle "users" specific client's requests
            if (receivedObj instanceof User) {

                user = (User) receivedObj;
                handleUser();
                objOutStream.writeObject(user);
                // handle "accounts" specific client's requests
            } else if (receivedObj instanceof Accounts) {

                accounts = (Accounts) receivedObj;
                handleAccounts();
                objOutStream.writeObject(accounts);
                // handle "transactions" specific client's requests
            } else if (receivedObj instanceof Transactions) {

                transactions = (Transactions) receivedObj;
                handleTransactions();
                objOutStream.writeObject(transactions);
                // handle "currencies" specific client's requests
            } else if (receivedObj instanceof Currency) {

                currencies = (Currency) receivedObj;
                handleCurrencies();
                objOutStream.writeObject(currencies);
            }
        } catch (IOException | ClassNotFoundException ex) {
            LOG.log(Level.SEVERE, null, ex);
        } finally {
            try {
                objOutStream.close();
                objInStream.close();
                sslSocket.close();
            } catch (IOException ex) {
                LOG.log(Level.SEVERE, null, ex);
            }
        }
    }