public void run() {

    Options options = new Options();
    options.addOption("h", "help", false, "display the help message");
    options.addOption("v", "verbose", false, "be extra verbose");

    CommandLineParser parser = new PosixParser();
    CommandLine cmd = null;

    try {
      cmd = parser.parse(options, args);
    } catch (ParseException pe) {
      LOG.error("Unable to parse command: " + pe.getMessage());
      System.exit(1);
    }

    if (cmd != null) {
      if (cmd.hasOption("v")) {
        LogManager.getRootLogger().setLevel(Level.DEBUG);
      }
    }

    HashMap<String, VPC2VPCConnection> vpc2vpcIdConnections = VPC2VPCHelper.getInstance().getVPC2VPCConnections(awsCreds);

    for(String vpc2vpcId : vpc2vpcIdConnections.keySet()) {
      
      VPC2VPCConnection vpc2vpcConnection = vpc2vpcIdConnections.get(vpc2vpcId);
      System.out.printf("%s : ", vpc2vpcId);
      HashMap<String, VPNEndpoint> vpcIdVpnEndpoint = vpc2vpcConnection.getVpcIdVpnEndpoint();
      int index = 0;
      for(String vpcId : vpcIdVpnEndpoint.keySet()) {
        VPNEndpoint vpnEndpoint = vpcIdVpnEndpoint.get(vpcId);
        System.out.printf("%s/%s(%s)", vpnEndpoint.getVpc().getCidrBlock(), vpnEndpoint.getVpc().getVpcId(), vpnEndpoint.getRegion().getRegionName());
        index = index + 1;
        if(index < vpcIdVpnEndpoint.keySet().size()) {
          System.out.printf(" <==> ");
        } else {
          System.out.printf(", ");
        }
      }
      System.out.printf("%s\n", vpc2vpcConnection.getCreatedOn());
    }
  }