Keeping track of imported names, resolve enum storage types, some finetuning.
diff --git a/main.cpp b/main.cpp
index b21d3aa..7869e4b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -16,6 +16,8 @@
 int main(int argc, char **argv) {
     std::string outputDir;
 
+    const char *me = argv[0];
+
     int res;
     while ((res = getopt(argc, argv, "ho:")) >= 0) {
         switch (res) {
@@ -29,7 +31,7 @@
             case 'h':
             default:
             {
-                usage(argv[0]);
+                usage(me);
                 exit(1);
                 break;
             }
@@ -39,8 +41,10 @@
     argc -= optind;
     argv += optind;
 
+    // Valid options are now in argv[0] .. argv[argc - 1].
+
     if (outputDir.empty()) {
-        usage(argv[0]);
+        usage(me);
         exit(1);
     } else {
         const size_t len = outputDir.size();
@@ -60,7 +64,7 @@
 
     Coordinator coordinator(interfacesPath);
 
-    for (int i = 1; i < argc; ++i) {
+    for (int i = 0; i < argc; ++i) {
         FQName fqName(argv[i]);
         CHECK(fqName.isValid() && fqName.isFullyQualified());