@Override
 protected void parseArgs(CommandLine cli, String[] args) throws ParseException, HelpException {
   super.parseArgs(cli, args);
   graph_options.parse(cli);
   ext_fmt.parse(cli);
   if (cli.hasOption(maxTimeOption)) maxTime = Long.parseLong(cli.getOptionValue(maxTimeOption));
   dtps = getTicsPerSecond(cli.getOptionValue(destTimeUnitOption, "s"));
   if (dtps == null) throw new HelpException();
   d_interval = Double.parseDouble(cli.getOptionValue(intervalOption, "1"));
 }
 @Override
 protected void run() throws IOException, NoSuchTraceException {
   MovementTrace movement =
       (MovementTrace) _store.getTrace(graph_options.get(GraphOptions.MOVEMENT));
   long otps = movement.ticsPerSecond();
   long interval = Math.max((long) (d_interval * otps), 1);
   if (maxTime != null) maxTime *= otps;
   double timeMul = getTimeMul(otps, dtps);
   if (ext_fmt.is(ExternalFormat.NS2)) NS2Movement.toNS2(movement, _out, timeMul);
   else ONEMovement.toONE(movement, _out, timeMul, interval, maxTime);
 }
 @Override
 protected void initOptions() {
   super.initOptions();
   graph_options.setOptions(options);
   ext_fmt.setOptions(options);
   options.addOption(null, maxTimeOption, true, "maximum movement time (for ONE only)");
   options.addOption(
       null,
       destTimeUnitOption,
       true,
       "time unit of destination trace [s, ms, us, ns] (default: s)");
   options.addOption(null, intervalOption, true, "interval (for ONE only)");
 }