diff --git a/opttst.cc b/opttst.cc
new file mode 100644
index 0000000000000000000000000000000000000000..71b5a82bfeb7b7840c9b637afbfd2311be414314
--- /dev/null
+++ b/opttst.cc
@@ -0,0 +1,56 @@
+
+
+
+using namespace Options;
+
+Option<bool> verbose(string("-V,--verbose"), false, 
+		     string("switch on diagnostic messages"), 
+		     false, no_argument);
+Option<bool> help(string("-h,--help"), false,
+		  string("display this message"),
+		  false, no_argument);
+Option<float> dof(string("-d,--dof"), 100.0,
+		  string("number of degrees of freedom"),
+		  true, requires_argument);
+Option<string> mask(string("-m,--mask"), string("mask"),
+		    string("brain mask volume"),
+		    true, requires_argument);
+Option<string> resid(string("-r,--res"), string("res4d"),
+		     string("4d `residual-of-fit' image"),
+		     true, requires_argument);
+
+int main(unsigned int argc, char **argv) {
+
+  OptionParser options("options", 
+		       "-d <number> --mask <filename> --res <filename>");
+
+  try {
+
+    options.add(verbose);
+    options.add(help);
+    options.add(dof);
+    options.add(mask);
+    options.add(resid);
+
+    for(unsigned int a = options.parse_command_line(argc, argv); a < argc; a++)
+      cout << argv[a] << endl;
+  
+    if(help.value())
+      options.usage();
+
+    if(verbose.value()) {
+      cout << "verbose = " << verbose.value() << endl;
+      cout << "help = " << help.value() << endl;
+      cout << "dof = " << dof.value() << endl;
+      cout << "mask = " << mask.value() << endl;
+      cout << "resid = " << resid.value() << endl;
+    }
+
+  } catch(X_OptionError& e) {
+    options.usage();
+    cerr << endl << e.what() << endl;
+  } catch(std::exception &e) {
+    cerr << e.what() << endl;
+  }    
+}
+