Fix this to:
1. Establish all sessions.
  * If the remote requires gateway, create tunnels and establish a session via it.
  * Otherwise, simply establish a session.
2. Run each operation of session.