diff --git a/src/genjava/genjava_main.py b/src/genjava/genjava_main.py
index e4d11a3f63aa9ece2402627ad51382b25c5db92f..c732d7ca90ae3fdd9b0e60f2c8c273dac5a42a22 100644
--- a/src/genjava/genjava_main.py
+++ b/src/genjava/genjava_main.py
@@ -86,11 +86,12 @@ def main(argv):
 
 def standalone_parse_arguments(argv):
     parser = argparse.ArgumentParser(description='Generate artifacts for any/all discoverable message packages.')
-    parser.add_argument('-p', '--package', action='store', default=None, help='package to generate (if not specified, all will be built)')
+    parser.add_argument('-p', '--packages', action='store', nargs='*', default=[], help='a list of packages to generate artifacts for')
     parser.add_argument('-o', '--output-dir', action='store', default='build', help='output directory for the java code (e.g. build/foo_msgs)')
     parser.add_argument('-v', '--verbose', default=False, action='store_true', help='enable verbosity in debugging (false)')
     parser.add_argument('-f', '--fakeit', default=False, action='store_true', help='dont build, just list the packages it would build (false)')
-    return parser.parse_args(argv)
+    parsed_arguments = parser.parse_args(argv)
+    return parsed_arguments
 
 
 def standalone_main(argv):
@@ -102,10 +103,7 @@ def standalone_main(argv):
     args = standalone_parse_arguments(argv[1:])
     #print("genjava %s/%s/%s" % (args.package, args.output_dir, args.verbose))
 
-    if args.package is not None:
-        sorted_package_tuples = rosjava_build_tools.catkin.index_message_package_dependencies_from_local_environment(package_name=args.package)
-    else:
-        sorted_package_tuples = rosjava_build_tools.catkin.index_message_package_dependencies_from_local_environment()
+    sorted_package_tuples = rosjava_build_tools.catkin.index_message_package_dependencies_from_local_environment(package_name_list=args.packages)
 
     print("Generating message artifacts for: \n%s" % [p.name for (unused_relative_path, p) in sorted_package_tuples])
     if not args.fakeit: