public static void main(String[] args) throws ParseException {

        if (args.length != 3) {
            System.err.println("3 arguments needed: username, password, baseApiUrl");
            return;
        }

        String username = args[0];
        String password = args[1];
        String baseApiUrl = args[2];

        ApicaMonitor pm = new ApicaMonitor();
        pm.logger = Logger.getLogger(ApicaMonitor.class);
        pm.username = username;
        pm.password = password;
        pm.baseApiUrl = baseApiUrl;
        pm.checkResultTimeStamps = new HashMap<>();

        // Debug Option 1. Start the actual thread that will do the loop for us
        // In this case you probably want to write to stdout, so remove those comments.
        Map<String, String> taskArgs;
        taskArgs = new HashMap<String, String>();
        taskArgs.put("Username", username);
        taskArgs.put("Password", password);
        taskArgs.put("BaseApiUrl", baseApiUrl);
        try {
            pm.execute(taskArgs, null);
        } catch (TaskExecutionException ex) {
            java.util.logging.Logger.getLogger(ApicaMonitor.class.getName()).log(Level.SEVERE, null, ex);
        }

        // Debug Option 2. Run the communicator and output to SdtOut.
        /*
         ApicaCommunicator apicaCommunicator = new ApicaCommunicator(username, password, baseApiUrl, Logger.getLogger(ApicaMonitor.class));
         Map<String, Integer> metrics = new HashMap<String, Integer>();
         apicaCommunicator.populate(metrics);

         for (String key : metrics.keySet()) {
         System.out.println(key + " ==> " + metrics.get(key));
         }
         */

    }