public static int Main(string [] args) {
      // Create a new RuntimeParameters to parse the args
      RuntimeParameters parameters = new RuntimeParameters(
          "HelloWorldNodeDataHandler",
          "HelloWorld using IDataHandler/ISender paradigm");

      // Parse the args, if we don't get 0 back, there was an error
      if(parameters.Parse(args) != 0) {
        // Print the error and help
        Console.WriteLine(parameters.ErrorMessage);
        parameters.ShowHelp();
        // exit after error
        return -1;
      } else if(parameters.Help) {
        // Caller asked for help, let's print it
        parameters.ShowHelp();
        // exit after printing help
        return 0;
      }

      // Instantiate a new inherited node of your choice
      HelloWorldNodeDataHandler hwn =
        new HelloWorldNodeDataHandler(parameters.NodeConfig);
      // And run it... this hijacks the current thread, we'll return once the node disconnects
      hwn.Run();

      Console.WriteLine("Exiting...");

      return 0;
    }