[SCM] Sample data reduction pipeline branch, upstream, updated. fea05c922131e165fca0aa7f918362193479f0ee

Ole Streicher debian at liska.ath.cx
Tue Sep 25 07:12:02 UTC 2012


The following commit has been merged in the upstream branch:
commit fea05c922131e165fca0aa7f918362193479f0ee
Author: Ole Streicher <debian at liska.ath.cx>
Date:   Tue Sep 25 09:11:26 2012 +0200

    Upstream version 0.0.2

diff --git a/Makefile.am b/Makefile.am
index e943c57..bb8bf91 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,7 +26,7 @@ DISTCLEANFILES = *~
 
 COMPILE_FIRST = 
 
-TOPSUBDIRS = iiinstrument recipes
+TOPSUBDIRS = iiinstrument recipes reflex
 
 COMPILE_LAST =
 
diff --git a/Makefile.in b/Makefile.in
index d5116df..562ef9e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -39,10 +39,9 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/Makefile.purify.in \
 	$(srcdir)/config.h.in $(top_srcdir)/admin/html.am \
 	$(top_srcdir)/configure $(top_srcdir)/doxygen/Doxyfile.in \
-	$(top_srcdir)/reflex/Iiinstrument.xml.in AUTHORS COPYING \
-	COPYING.LIB ChangeLog INSTALL NEWS TODO admin/compile \
-	admin/config.guess admin/config.sub admin/depcomp \
-	admin/install-sh admin/ltmain.sh admin/missing
+	AUTHORS COPYING COPYING.LIB ChangeLog INSTALL NEWS TODO \
+	admin/compile admin/config.guess admin/config.sub \
+	admin/depcomp admin/install-sh admin/ltmain.sh admin/missing
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4macros/cpl.m4 \
@@ -60,8 +59,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = Makefile.purify doxygen/Doxyfile \
-	reflex/Iiinstrument.xml
+CONFIG_CLEAN_FILES = Makefile.purify doxygen/Doxyfile
 CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
@@ -287,13 +285,13 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-wkfdir = @wkfdir@
-wkflinkdir = @wkflinkdir@
+wkfcopydir = @wkfcopydir@
+wkfextradir = @wkfextradir@
 AUTOMAKE_OPTIONS = 1.8 foreign
 ACLOCAL_AMFLAGS = -I m4macros
 DISTCLEANFILES = *~
 COMPILE_FIRST = 
-TOPSUBDIRS = iiinstrument recipes
+TOPSUBDIRS = iiinstrument recipes reflex
 COMPILE_LAST = 
 HTML_SUBDIRS = 
 SUBDIRS = $(COMPILE_FIRST) $(TOPSUBDIRS) $(COMPILE_LAST)
@@ -364,8 +362,6 @@ Makefile.purify: $(top_builddir)/config.status $(srcdir)/Makefile.purify.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 doxygen/Doxyfile: $(top_builddir)/config.status $(top_srcdir)/doxygen/Doxyfile.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
-reflex/Iiinstrument.xml: $(top_builddir)/config.status $(top_srcdir)/reflex/Iiinstrument.xml.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/NEWS b/NEWS
index e69de29..268eb18 100644
--- a/NEWS
+++ b/NEWS
@@ -0,0 +1,5 @@
+0.0.2
+-----
+
+ - Added minimalist Reflex workflow
+ - Added new recipe rrrecipe_calib
diff --git a/acinclude.m4 b/acinclude.m4
index 6521f40..c6bda97 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -105,12 +105,12 @@ AC_DEFUN([IIINSTRUMENT_SET_PATHS],
        configdir='${datadir}/${PACKAGE}/config'
     fi
 
-    if test -z "$wkfdir"; then
-        wkfdir='${datadir}/${ESO_INSTRUMENT}/reflex'
+    if test -z "$wkfextradir"; then
+        wkfextradir='${datadir}/esopipes/${PACKAGE}-${VERSION}/reflex'
     fi
 
-    if test -z "$wkflinkdir"; then
-        wkflinkdir='${datadir}/reflex/workflows'
+    if test -z "$wkfcopydir"; then
+        wkfcopydir='${datadir}/reflex/workflows/${PACKAGE}-${VERSION}'
     fi
 
     AC_SUBST(plugindir)
@@ -118,8 +118,8 @@ AC_DEFUN([IIINSTRUMENT_SET_PATHS],
     AC_SUBST(htmldir)
     AC_SUBST(pipedocsdir)
     AC_SUBST(configdir)
-    AC_SUBST(wkfdir)
-    AC_SUBST(wkflinkdir)
+    AC_SUBST(wkfextradir)
+    AC_SUBST(wkfcopydir)
 
 
     # Define a preprocesor symbol for the plugin search paths
diff --git a/admin/ltmain.sh b/admin/ltmain.sh
index aa5624c..78cf017 100755
--- a/admin/ltmain.sh
+++ b/admin/ltmain.sh
@@ -8050,7 +8050,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
diff --git a/calib/dic/ESO-DFS-DIC.IIINSTRUMENT_QC b/calib/dic/ESO-DFS-DIC.IIINSTRUMENT_QC
index 1a6f343..f2a4379 100644
--- a/calib/dic/ESO-DFS-DIC.IIINSTRUMENT_QC
+++ b/calib/dic/ESO-DFS-DIC.IIINSTRUMENT_QC
@@ -1,20 +1,20 @@
 #******************************************************************************
 # E.S.O. - VLT project
 #
-# $Id: ESO-DFS-DIC.IIINSTRUMENT_QC,v 1.1 2012/01/20 17:07:06 cgarcia Exp $
+# $Id: ESO-DFS-DIC.IIINSTRUMENT_QC,v 1.2 2012/03/14 12:21:03 cgarcia Exp $
 # $Author: cgarcia $
-# $Date: 2012/01/20 17:07:06 $
-# $Revision: 1.1 $
+# $Date: 2012/03/14 12:21:03 $
+# $Revision: 1.2 $
 #                            
 #******************************************************************************
 #   NAME
-#   ESO-DFS-DIC.HAWKI_QC - Data Interface Dictionary for HAWKI Quality 
+#   ESO-DFS-DIC.IIINSTRUMENT_QC - Data Interface Dictionary for IIINSTRUMENT Quality 
 #                           control (level 1) parameters.
 # -----------------------------------------------------------------------------
 Dictionary Name:   ESO-DFS-DIC.IIINSTRUMENT_QC
 Scope:             QC
 Source:            ESO SDD/PSD
-Version Control:   "$Id: ESO-DFS-DIC.IIINSTRUMENT_QC,v 1.1 2012/01/20 17:07:06 cgarcia Exp $"
+Version Control:   "$Id: ESO-DFS-DIC.IIINSTRUMENT_QC,v 1.2 2012/03/14 12:21:03 cgarcia Exp $"
 Revision:          1.0
 Date:              2007-08-20
 Status:            submitted
diff --git a/calib/gasgano/config/IIINSTRUMENT.prefs b/calib/gasgano/config/IIINSTRUMENT.prefs
index 7a1c3fa..b06045c 100644
--- a/calib/gasgano/config/IIINSTRUMENT.prefs
+++ b/calib/gasgano/config/IIINSTRUMENT.prefs
@@ -41,7 +41,7 @@ PRINTER_NAME=lp
 PRINT_FONT=Monospaced:16
 PRINT_ORIENTATION=P
 RADEC_CONVERSION=true
-RECIPE_SET=rrrecipe=/home/quality/pipelines/iiinstrument/lib/esopipes-plugins/iinstrument-0.0.1/rrrecipe.so
+RECIPE_SET=rrrecipe=/home/quality/pipelines/iiinstrument/lib/esopipes-plugins/iinstrument-0.0.2/rrrecipe.so
 SCRIPTS_DIR=gasgano/scripts
 SHORTEN_FILES_PATH=true
 SHORT_FILENAME=true
diff --git a/configure b/configure
index 5948351..af3f2f7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for IIINSTRUMENT Instrument Pipeline 0.0.1.
+# Generated by GNU Autoconf 2.68 for IIINSTRUMENT Instrument Pipeline 0.0.2.
 #
 # Report bugs to <flastname at eso.org>.
 #
@@ -174,7 +174,6 @@ test x\$exitcode = x0 || exit 1"
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
 
   test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
     ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
@@ -182,7 +181,8 @@ test \$(( 1 + 1 )) = 2 || exit 1
     ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
     PATH=/empty FPATH=/empty; export PATH FPATH
     test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
   if (eval "$as_required") 2>/dev/null; then :
   as_have_required=yes
 else
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='IIINSTRUMENT Instrument Pipeline'
 PACKAGE_TARNAME='iiinstrument'
-PACKAGE_VERSION='0.0.1'
-PACKAGE_STRING='IIINSTRUMENT Instrument Pipeline 0.0.1'
+PACKAGE_VERSION='0.0.2'
+PACKAGE_STRING='IIINSTRUMENT Instrument Pipeline 0.0.2'
 PACKAGE_BUGREPORT='flastname at eso.org'
 PACKAGE_URL=''
 
@@ -622,8 +622,8 @@ all_includes
 LIBIIINSTRUMENT
 IIINSTRUMENT_LDFLAGS
 IIINSTRUMENT_INCLUDES
-wkflinkdir
-wkfdir
+wkfcopydir
+wkfextradir
 configdir
 pipedocsdir
 privatelibdir
@@ -651,12 +651,12 @@ ac_ct_DUMPBIN
 DUMPBIN
 LD
 FGREP
+EGREP
+GREP
 SED
 LIBTOOL
 LATEX
 DOXYGEN
-EGREP
-GREP
 ESO_DEBUG_FLAGS
 PURIFY_FALSE
 PURIFY_TRUE
@@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures IIINSTRUMENT Instrument Pipeline 0.0.1 to adapt to many kinds of systems.
+\`configure' configures IIINSTRUMENT Instrument Pipeline 0.0.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1412,7 +1412,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of IIINSTRUMENT Instrument Pipeline 0.0.1:";;
+     short | recursive ) echo "Configuration of IIINSTRUMENT Instrument Pipeline 0.0.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1530,7 +1530,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-IIINSTRUMENT Instrument Pipeline configure 0.0.1
+IIINSTRUMENT Instrument Pipeline configure 0.0.2
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1945,7 +1945,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by IIINSTRUMENT Instrument Pipeline $as_me 0.0.1, which was
+It was created by IIINSTRUMENT Instrument Pipeline $as_me 0.0.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2875,7 +2875,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='iiinstrument'
- VERSION='0.0.1'
+ VERSION='0.0.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4750,137 +4750,6 @@ $as_echo "$ac_res" >&6; }
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-
 
 
 
@@ -4905,17 +4774,6 @@ $as_echo "$eso_cv_enable_strict" >&6; }
 
     if test x"$eso_cv_enable_strict" = xyes; then
 
-    	eso_enable_strict_std_set = no
-
-        if test -n "$CFLAGS"; then
-            echo $CFLAGS | $EGREP '(\-std=|-ansi)' >/dev/null 2>&1
-            if test x"$?" = x0; then
-            	eso_enable_strict_std_set = yes
-            fi
-        fi
-
-        if test "$eso_enable_strict_std_set" = no; then
-
 
 
     flag=`echo std=c99 | sed 'y%.=/+-%___p_%'`
@@ -4965,8 +4823,6 @@ $as_echo "$ac_res" >&6; }
 
     fi
 
-        fi
-
 
 
 
@@ -5017,7 +4873,6 @@ $as_echo "$ac_res" >&6; }
 
     fi
 
-
     fi
 
 
@@ -5456,6 +5311,136 @@ Xsed="$SED -e 1s/^X//"
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
 if ${ac_cv_path_FGREP+:} false; then :
@@ -12830,7 +12815,7 @@ fi
     for i in $cpl_incdirs; do
         for j in $cpl_check_cpl_header; do
 
-            echo "configure: 12833: $i/$j" >&5
+            echo "configure: 12818: $i/$j" >&5
 
             if test -r "$i/$j"; then
                 echo "taking that" >&5
@@ -12861,7 +12846,7 @@ fi
     for i in $cpl_libdirs; do
         for j in $cpl_check_cpl_lib; do
 
-            echo "configure: 12864: $i/$j" >&5
+            echo "configure: 12849: $i/$j" >&5
 
             if test -r "$i/$j"; then
                 echo "taking that" >&5
@@ -12970,12 +12955,12 @@ $as_echo "$as_me: WARNING: CPL checks have been disabled! This package may not b
        configdir='${datadir}/${PACKAGE}/config'
     fi
 
-    if test -z "$wkfdir"; then
-        wkfdir='${datadir}/${ESO_INSTRUMENT}/reflex'
+    if test -z "$wkfextradir"; then
+        wkfextradir='${datadir}/esopipes/${PACKAGE}-${VERSION}/reflex'
     fi
 
-    if test -z "$wkflinkdir"; then
-        wkflinkdir='${datadir}/reflex/workflows'
+    if test -z "$wkfcopydir"; then
+        wkfcopydir='${datadir}/reflex/workflows/${PACKAGE}-${VERSION}'
     fi
 
 
@@ -13136,7 +13121,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile Makefile.purify doxygen/Doxyfile iiinstrument/Makefile iiinstrument/tests/Makefile reflex/Iiinstrument.xml recipes/Makefile"
+ac_config_files="$ac_config_files Makefile Makefile.purify doxygen/Doxyfile iiinstrument/Makefile iiinstrument/tests/Makefile reflex/Makefile reflex/Iiinstrument.xml recipes/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -13680,7 +13665,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by IIINSTRUMENT Instrument Pipeline $as_me 0.0.1, which was
+This file was extended by IIINSTRUMENT Instrument Pipeline $as_me 0.0.2, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13746,7 +13731,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-IIINSTRUMENT Instrument Pipeline config.status 0.0.1
+IIINSTRUMENT Instrument Pipeline config.status 0.0.2
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -14160,6 +14145,7 @@ do
     "doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES doxygen/Doxyfile" ;;
     "iiinstrument/Makefile") CONFIG_FILES="$CONFIG_FILES iiinstrument/Makefile" ;;
     "iiinstrument/tests/Makefile") CONFIG_FILES="$CONFIG_FILES iiinstrument/tests/Makefile" ;;
+    "reflex/Makefile") CONFIG_FILES="$CONFIG_FILES reflex/Makefile" ;;
     "reflex/Iiinstrument.xml") CONFIG_FILES="$CONFIG_FILES reflex/Iiinstrument.xml" ;;
     "recipes/Makefile") CONFIG_FILES="$CONFIG_FILES recipes/Makefile" ;;
 
diff --git a/configure.ac b/configure.ac
index 7fbcdb0..82a9fcb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 # Process this file with autoconf to produce a configure script.
 
-AC_INIT([IIINSTRUMENT Instrument Pipeline], [0.0.1], [flastname at eso.org],
+AC_INIT([IIINSTRUMENT Instrument Pipeline], [0.0.2], [flastname at eso.org],
 [iiinstrument])
 AC_PREREQ([2.59])
 
@@ -95,6 +95,7 @@ AC_CONFIG_FILES(Makefile
                 doxygen/Doxyfile
                 iiinstrument/Makefile
                 iiinstrument/tests/Makefile
+                reflex/Makefile
                 reflex/Iiinstrument.xml
                 recipes/Makefile)
 AC_OUTPUT
diff --git a/html/dir_3f7c42fcbeae4675977cbf2253de8aed.html b/html/dir_9f313b33f830f7744d16dd0215493b06.html
similarity index 75%
rename from html/dir_3f7c42fcbeae4675977cbf2253de8aed.html
rename to html/dir_9f313b33f830f7744d16dd0215493b06.html
index be4a9fa..1f8d143 100644
--- a/html/dir_3f7c42fcbeae4675977cbf2253de8aed.html
+++ b/html/dir_9f313b33f830f7744d16dd0215493b06.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>IIINSTRUMENT Pipeline Reference Manual: /tmp/0.0.1/iiinstrumentp/recipes/ Directory Reference</title>
+<title>IIINSTRUMENT Pipeline Reference Manual: /home/cgarcia/SDD/tmp/0.0.2/iiinstrumentp/recipes/ Directory Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -29,7 +29,7 @@
   </div>
   <div id="nav-path" class="navpath">
     <ul>
-      <li class="navelem"><a class="el" href="dir_3f7c42fcbeae4675977cbf2253de8aed.html">recipes</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9f313b33f830f7744d16dd0215493b06.html">recipes</a>      </li>
     </ul>
   </div>
 </div>
@@ -42,9 +42,10 @@
 <tr><td colspan="2"><h2><a name="files"></a>
 Files</h2></td></tr>
 <tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>rrrecipe.c</b> <a href="rrrecipe_8c_source.html">[code]</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>rrrecipe_calib.c</b> <a href="rrrecipe__calib_8c_source.html">[code]</a></td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/html/dirs.html b/html/dirs.html
index a200674..1d218a1 100644
--- a/html/dirs.html
+++ b/html/dirs.html
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -34,10 +34,10 @@
 </div>
 <div class="contents">
 <div class="textblock">This directory hierarchy is sorted roughly, but not completely, alphabetically:</div><ul>
-<li><a class="el" href="dir_3f7c42fcbeae4675977cbf2253de8aed.html">recipes</a></li>
+<li><a class="el" href="dir_9f313b33f830f7744d16dd0215493b06.html">recipes</a></li>
 </ul>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/html/files.html b/html/files.html
index 58382bc..0ea29c8 100644
--- a/html/files.html
+++ b/html/files.html
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -40,9 +40,10 @@
 <div class="contents">
 <div class="textblock">Here is a list of all documented files with brief descriptions:</div><table>
   <tr><td class="indexkey"><b>rrrecipe.c</b> <a href="rrrecipe_8c_source.html">[code]</a></td><td class="indexvalue"></td></tr>
+  <tr><td class="indexkey"><b>rrrecipe_calib.c</b> <a href="rrrecipe__calib_8c_source.html">[code]</a></td><td class="indexvalue"></td></tr>
 </table>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/html/index.html b/html/index.html
index de46951..1f54904 100644
--- a/html/index.html
+++ b/html/index.html
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -34,7 +34,7 @@
 </div>
 <div class="contents">
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/html/rrrecipe_8c_source.html b/html/rrrecipe_8c_source.html
index 7ff4426..0b4d731 100644
--- a/html/rrrecipe_8c_source.html
+++ b/html/rrrecipe_8c_source.html
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -34,7 +34,7 @@
   </div>
   <div id="nav-path" class="navpath">
     <ul>
-      <li class="navelem"><a class="el" href="dir_3f7c42fcbeae4675977cbf2253de8aed.html">recipes</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9f313b33f830f7744d16dd0215493b06.html">recipes</a>      </li>
     </ul>
   </div>
 </div>
@@ -67,7 +67,7 @@
 <a name="l00022"></a>00022 <span class="comment"> * $Author: llundin $</span>
 <a name="l00023"></a>00023 <span class="comment"> * $Date: 2009/02/10 09:16:12 $</span>
 <a name="l00024"></a>00024 <span class="comment"> * $Revision: 1.29 $</span>
-<a name="l00025"></a>00025 <span class="comment"> * $Name: HEAD $</span>
+<a name="l00025"></a>00025 <span class="comment"> * $Name: iiinstrument-0_0_2 $</span>
 <a name="l00026"></a>00026 <span class="comment"> */</span>
 <a name="l00027"></a>00027 
 <a name="l00028"></a>00028 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
@@ -389,7 +389,7 @@
 <a name="l00376"></a>00376 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/html/rrrecipe_8c_source.html b/html/rrrecipe__calib_8c_source.html
similarity index 60%
copy from html/rrrecipe_8c_source.html
copy to html/rrrecipe__calib_8c_source.html
index 7ff4426..ed680d5 100644
--- a/html/rrrecipe_8c_source.html
+++ b/html/rrrecipe__calib_8c_source.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>IIINSTRUMENT Pipeline Reference Manual: rrrecipe.c Source File</title>
+<title>IIINSTRUMENT Pipeline Reference Manual: rrrecipe_calib.c Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
 </head>
@@ -14,7 +14,7 @@
  <tbody>
  <tr style="height: 56px;">
   <td style="padding-left: 0.5em;">
-   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.1</span></div>
+   <div id="projectname">IIINSTRUMENT Pipeline Reference Manual <span id="projectnumber">0.0.2</span></div>
   </td>
  </tr>
  </tbody>
@@ -34,16 +34,16 @@
   </div>
   <div id="nav-path" class="navpath">
     <ul>
-      <li class="navelem"><a class="el" href="dir_3f7c42fcbeae4675977cbf2253de8aed.html">recipes</a>      </li>
+      <li class="navelem"><a class="el" href="dir_9f313b33f830f7744d16dd0215493b06.html">recipes</a>      </li>
     </ul>
   </div>
 </div>
 <div class="header">
   <div class="headertitle">
-<div class="title">rrrecipe.c</div>  </div>
+<div class="title">rrrecipe_calib.c</div>  </div>
 </div>
 <div class="contents">
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* $Id: rrrecipe.c,v 1.29 2009/02/10 09:16:12 llundin Exp $</span>
+<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* $Id: rrrecipe_calib.c,v 1.1 2012/09/17 13:40:08 cgarcia Exp $</span>
 <a name="l00002"></a>00002 <span class="comment"> *</span>
 <a name="l00003"></a>00003 <span class="comment"> * This file is part of the IIINSTRUMENT Pipeline</span>
 <a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2002,2003 European Southern Observatory</span>
@@ -64,10 +64,10 @@
 <a name="l00019"></a>00019 <span class="comment"> */</span>
 <a name="l00020"></a>00020 
 <a name="l00021"></a>00021 <span class="comment">/*</span>
-<a name="l00022"></a>00022 <span class="comment"> * $Author: llundin $</span>
-<a name="l00023"></a>00023 <span class="comment"> * $Date: 2009/02/10 09:16:12 $</span>
-<a name="l00024"></a>00024 <span class="comment"> * $Revision: 1.29 $</span>
-<a name="l00025"></a>00025 <span class="comment"> * $Name: HEAD $</span>
+<a name="l00022"></a>00022 <span class="comment"> * $Author: cgarcia $</span>
+<a name="l00023"></a>00023 <span class="comment"> * $Date: 2012/09/17 13:40:08 $</span>
+<a name="l00024"></a>00024 <span class="comment"> * $Revision: 1.1 $</span>
+<a name="l00025"></a>00025 <span class="comment"> * $Name: iiinstrument-0_0_2 $</span>
 <a name="l00026"></a>00026 <span class="comment"> */</span>
 <a name="l00027"></a>00027 
 <a name="l00028"></a>00028 <span class="preprocessor">#ifdef HAVE_CONFIG_H</span>
@@ -78,120 +78,120 @@
 <a name="l00033"></a>00033 <span class="comment">                                Includes</span>
 <a name="l00034"></a>00034 <span class="comment"> -----------------------------------------------------------------------------*/</span>
 <a name="l00035"></a>00035 
-<a name="l00036"></a>00036 <span class="preprocessor">#include <cpl.h></span>
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 <span class="preprocessor">#include "iiinstrument_utils.h"</span>
-<a name="l00039"></a>00039 <span class="preprocessor">#include "iiinstrument_pfits.h"</span>
-<a name="l00040"></a>00040 <span class="preprocessor">#include "iiinstrument_dfs.h"</span>
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042 <span class="comment">/*-----------------------------------------------------------------------------</span>
-<a name="l00043"></a>00043 <span class="comment">                            Private function prototypes</span>
-<a name="l00044"></a>00044 <span class="comment"> -----------------------------------------------------------------------------*/</span>
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_create(cpl_plugin *);
-<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_exec(cpl_plugin *);
-<a name="l00048"></a>00048 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_destroy(cpl_plugin *);
-<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe(cpl_frameset *, <span class="keyword">const</span> cpl_parameterlist *);
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051 <span class="comment">/*-----------------------------------------------------------------------------</span>
-<a name="l00052"></a>00052 <span class="comment">                            Static variables</span>
-<a name="l00053"></a>00053 <span class="comment"> -----------------------------------------------------------------------------*/</span>
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 <span class="keyword">static</span> <span class="keywordtype">char</span> rrrecipe_description[] =
-<a name="l00056"></a>00056 <span class="stringliteral">"This example text is used to describe the recipe.\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">"The description should include the required FITS-files and\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">"their associated tags, e.g.\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"IIINSTRUMENT-RRRECIPE-raw-file.fits "</span> RRRECIPE_RAW <span class="stringliteral">"\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"and any optional files, e.g.\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"IIINSTRUMENT-RRRECIPE-flat-file.fits "</span> IIINSTRUMENT_CALIB_FLAT <span class="stringliteral">"\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">"Additionally, it should describe functionality of the expected output."</span>
-<a name="l00064"></a>00064 <span class="stringliteral">"\n"</span>;
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066 <span class="comment">/*-----------------------------------------------------------------------------</span>
-<a name="l00067"></a>00067 <span class="comment">                                Function code</span>
-<a name="l00068"></a>00068 <span class="comment"> -----------------------------------------------------------------------------*/</span>
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00080"></a>00080 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00081"></a>00081 <span class="keywordtype">int</span> cpl_plugin_get_info(cpl_pluginlist * list)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083     cpl_recipe  *   recipe = cpl_calloc(1, <span class="keyword">sizeof</span> *recipe );
-<a name="l00084"></a>00084     cpl_plugin  *   plugin = &recipe->interface;
-<a name="l00085"></a>00085 
-<a name="l00086"></a>00086     <span class="keywordflow">if</span> (cpl_plugin_init(plugin,
-<a name="l00087"></a>00087                     CPL_PLUGIN_API,
-<a name="l00088"></a>00088                     IIINSTRUMENT_BINARY_VERSION,
-<a name="l00089"></a>00089                     CPL_PLUGIN_TYPE_RECIPE,
-<a name="l00090"></a>00090                     <span class="stringliteral">"rrrecipe"</span>,
-<a name="l00091"></a>00091                     <span class="stringliteral">"Short description of rrrecipe"</span>,
-<a name="l00092"></a>00092                     rrrecipe_description,
-<a name="l00093"></a>00093                     <span class="stringliteral">"Firstname Lastname"</span>,
-<a name="l00094"></a>00094                     PACKAGE_BUGREPORT,
-<a name="l00095"></a>00095                     iiinstrument_get_license(),
-<a name="l00096"></a>00096                     rrrecipe_create,
-<a name="l00097"></a>00097                     rrrecipe_exec,
-<a name="l00098"></a>00098                     rrrecipe_destroy)) {    
-<a name="l00099"></a>00099         cpl_msg_error(cpl_func, <span class="stringliteral">"Plugin initialization failed"</span>);
-<a name="l00100"></a>00100         (void)cpl_error_set_where(cpl_func);                          
-<a name="l00101"></a>00101         <span class="keywordflow">return</span> 1;                                               
-<a name="l00102"></a>00102     }                                                    
-<a name="l00103"></a>00103 
-<a name="l00104"></a>00104     <span class="keywordflow">if</span> (cpl_pluginlist_append(list, plugin)) {                 
-<a name="l00105"></a>00105         cpl_msg_error(cpl_func, <span class="stringliteral">"Error adding plugin to list"</span>);
-<a name="l00106"></a>00106         (void)cpl_error_set_where(cpl_func);                         
-<a name="l00107"></a>00107         <span class="keywordflow">return</span> 1;                                              
-<a name="l00108"></a>00108     }                                                          
-<a name="l00109"></a>00109     
-<a name="l00110"></a>00110     <span class="keywordflow">return</span> 0;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112 
-<a name="l00113"></a>00113 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00121"></a>00121 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00122"></a>00122 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_create(cpl_plugin * plugin)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124     cpl_recipe    * recipe;                                               
-<a name="l00125"></a>00125     cpl_parameter * p;
-<a name="l00126"></a>00126                                                                        
-<a name="l00127"></a>00127     <span class="comment">/* Do not create the recipe if an error code is already set */</span>     
-<a name="l00128"></a>00128     <span class="keywordflow">if</span> (cpl_error_get_code() != CPL_ERROR_NONE) {                      
-<a name="l00129"></a>00129         cpl_msg_error(cpl_func, <span class="stringliteral">"%s():%d: An error is already set: %s"</span>,
-<a name="l00130"></a>00130                       cpl_func, __LINE__, cpl_error_get_where());      
-<a name="l00131"></a>00131         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_get_code();                              
-<a name="l00132"></a>00132     }                                                                  
-<a name="l00133"></a>00133                                                                        
-<a name="l00134"></a>00134     <span class="keywordflow">if</span> (plugin == NULL) {                                              
-<a name="l00135"></a>00135         cpl_msg_error(cpl_func, <span class="stringliteral">"Null plugin"</span>);                        
-<a name="l00136"></a>00136         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_NULL_INPUT);                 
-<a name="l00137"></a>00137     }                                                                  
-<a name="l00138"></a>00138                                                                        
-<a name="l00139"></a>00139     <span class="comment">/* Verify plugin type */</span>                                           
-<a name="l00140"></a>00140     <span class="keywordflow">if</span> (cpl_plugin_get_type(plugin) != CPL_PLUGIN_TYPE_RECIPE) {       
-<a name="l00141"></a>00141         cpl_msg_error(cpl_func, <span class="stringliteral">"Plugin is not a recipe"</span>);             
-<a name="l00142"></a>00142         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_TYPE_MISMATCH);              
-<a name="l00143"></a>00143     }                                                                  
-<a name="l00144"></a>00144                                                                        
-<a name="l00145"></a>00145     <span class="comment">/* Get the recipe */</span>                                               
-<a name="l00146"></a>00146     recipe = (cpl_recipe *)plugin;                                     
-<a name="l00147"></a>00147                                                                        
-<a name="l00148"></a>00148     <span class="comment">/* Create the parameters list in the cpl_recipe object */</span>          
-<a name="l00149"></a>00149     recipe->parameters = cpl_parameterlist_new();                      
-<a name="l00150"></a>00150     <span class="keywordflow">if</span> (recipe->parameters == NULL) {                                  
-<a name="l00151"></a>00151         cpl_msg_error(cpl_func, <span class="stringliteral">"Parameter list allocation failed"</span>);   
-<a name="l00152"></a>00152         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_ILLEGAL_OUTPUT);             
-<a name="l00153"></a>00153     }                                                                  
-<a name="l00154"></a>00154 
-<a name="l00155"></a>00155     <span class="comment">/* Fill the parameters list */</span>
-<a name="l00156"></a>00156     <span class="comment">/* --stropt */</span>
-<a name="l00157"></a>00157     p = cpl_parameter_new_value(<span class="stringliteral">"iiinstrument.rrrecipe.str_option"</span>, 
-<a name="l00158"></a>00158             CPL_TYPE_STRING, <span class="stringliteral">"the string option"</span>, <span class="stringliteral">"iiinstrument.rrrecipe"</span>,NULL);
+<a name="l00036"></a>00036 <span class="preprocessor">#include <string.h></span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include <cpl.h></span>
+<a name="l00038"></a>00038 
+<a name="l00039"></a>00039 <span class="preprocessor">#include "iiinstrument_utils.h"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "iiinstrument_pfits.h"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "iiinstrument_dfs.h"</span>
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="comment">/*-----------------------------------------------------------------------------</span>
+<a name="l00044"></a>00044 <span class="comment">                            Private function prototypes</span>
+<a name="l00045"></a>00045 <span class="comment"> -----------------------------------------------------------------------------*/</span>
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_create(cpl_plugin *);
+<a name="l00048"></a>00048 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_exec(cpl_plugin *);
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_destroy(cpl_plugin *);
+<a name="l00050"></a>00050 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib(cpl_frameset *, <span class="keyword">const</span> cpl_parameterlist *);
+<a name="l00051"></a>00051 
+<a name="l00052"></a>00052 <span class="comment">/*-----------------------------------------------------------------------------</span>
+<a name="l00053"></a>00053 <span class="comment">                            Static variables</span>
+<a name="l00054"></a>00054 <span class="comment"> -----------------------------------------------------------------------------*/</span>
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="keyword">static</span> <span class="keywordtype">char</span> rrrecipe_calib_description[] =
+<a name="l00057"></a>00057 <span class="stringliteral">"This example text is used to describe the recipe.\n"</span>
+<a name="l00058"></a>00058 <span class="stringliteral">"The description should include the required FITS-files and\n"</span>
+<a name="l00059"></a>00059 <span class="stringliteral">"their associated tags, e.g.\n"</span>
+<a name="l00060"></a>00060 <span class="stringliteral">"IIINSTRUMENT-RRRECIPE-CALIB-raw-file.fits "</span> RRRECIPE_CALIB_RAW <span class="stringliteral">"\n"</span>
+<a name="l00061"></a>00061 <span class="stringliteral">"\n"</span>
+<a name="l00062"></a>00062 <span class="stringliteral">"Additionally, it should describe functionality of the expected output."</span>
+<a name="l00063"></a>00063 <span class="stringliteral">"\n"</span>;
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065 <span class="comment">/*-----------------------------------------------------------------------------</span>
+<a name="l00066"></a>00066 <span class="comment">                                Function code</span>
+<a name="l00067"></a>00067 <span class="comment"> -----------------------------------------------------------------------------*/</span>
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 <span class="comment">/*----------------------------------------------------------------------------*/</span>
+<a name="l00079"></a>00079 <span class="comment">/*----------------------------------------------------------------------------*/</span>
+<a name="l00080"></a>00080 <span class="keywordtype">int</span> cpl_plugin_get_info(cpl_pluginlist * list)
+<a name="l00081"></a>00081 {
+<a name="l00082"></a>00082     cpl_recipe  *   recipe = cpl_calloc(1, <span class="keyword">sizeof</span> *recipe );
+<a name="l00083"></a>00083     cpl_plugin  *   plugin = &recipe->interface;
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085     <span class="keywordflow">if</span> (cpl_plugin_init(plugin,
+<a name="l00086"></a>00086                     CPL_PLUGIN_API,
+<a name="l00087"></a>00087                     IIINSTRUMENT_BINARY_VERSION,
+<a name="l00088"></a>00088                     CPL_PLUGIN_TYPE_RECIPE,
+<a name="l00089"></a>00089                     <span class="stringliteral">"rrrecipe_calib"</span>,
+<a name="l00090"></a>00090                     <span class="stringliteral">"Short description of rrrecipe_calib"</span>,
+<a name="l00091"></a>00091                     rrrecipe_calib_description,
+<a name="l00092"></a>00092                     <span class="stringliteral">"Firstname Lastname"</span>,
+<a name="l00093"></a>00093                     PACKAGE_BUGREPORT,
+<a name="l00094"></a>00094                     iiinstrument_get_license(),
+<a name="l00095"></a>00095                     rrrecipe_calib_create,
+<a name="l00096"></a>00096                     rrrecipe_calib_exec,
+<a name="l00097"></a>00097                     rrrecipe_calib_destroy)) {    
+<a name="l00098"></a>00098         cpl_msg_error(cpl_func, <span class="stringliteral">"Plugin initialization failed"</span>);
+<a name="l00099"></a>00099         (void)cpl_error_set_where(cpl_func);                          
+<a name="l00100"></a>00100         <span class="keywordflow">return</span> 1;                                               
+<a name="l00101"></a>00101     }                                                    
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103     <span class="keywordflow">if</span> (cpl_pluginlist_append(list, plugin)) {                 
+<a name="l00104"></a>00104         cpl_msg_error(cpl_func, <span class="stringliteral">"Error adding plugin to list"</span>);
+<a name="l00105"></a>00105         (void)cpl_error_set_where(cpl_func);                         
+<a name="l00106"></a>00106         <span class="keywordflow">return</span> 1;                                              
+<a name="l00107"></a>00107     }                                                          
+<a name="l00108"></a>00108     
+<a name="l00109"></a>00109     <span class="keywordflow">return</span> 0;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112 <span class="comment">/*----------------------------------------------------------------------------*/</span>
+<a name="l00120"></a>00120 <span class="comment">/*----------------------------------------------------------------------------*/</span>
+<a name="l00121"></a>00121 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_create(cpl_plugin * plugin)
+<a name="l00122"></a>00122 {
+<a name="l00123"></a>00123     cpl_recipe    * recipe;                                               
+<a name="l00124"></a>00124     cpl_parameter * p;
+<a name="l00125"></a>00125                                                                        
+<a name="l00126"></a>00126     <span class="comment">/* Do not create the recipe if an error code is already set */</span>     
+<a name="l00127"></a>00127     <span class="keywordflow">if</span> (cpl_error_get_code() != CPL_ERROR_NONE) {                      
+<a name="l00128"></a>00128         cpl_msg_error(cpl_func, <span class="stringliteral">"%s():%d: An error is already set: %s"</span>,
+<a name="l00129"></a>00129                       cpl_func, __LINE__, cpl_error_get_where());      
+<a name="l00130"></a>00130         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_get_code();                              
+<a name="l00131"></a>00131     }                                                                  
+<a name="l00132"></a>00132                                                                        
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (plugin == NULL) {                                              
+<a name="l00134"></a>00134         cpl_msg_error(cpl_func, <span class="stringliteral">"Null plugin"</span>);                        
+<a name="l00135"></a>00135         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_NULL_INPUT);                 
+<a name="l00136"></a>00136     }                                                                  
+<a name="l00137"></a>00137                                                                        
+<a name="l00138"></a>00138     <span class="comment">/* Verify plugin type */</span>                                           
+<a name="l00139"></a>00139     <span class="keywordflow">if</span> (cpl_plugin_get_type(plugin) != CPL_PLUGIN_TYPE_RECIPE) {       
+<a name="l00140"></a>00140         cpl_msg_error(cpl_func, <span class="stringliteral">"Plugin is not a recipe"</span>);             
+<a name="l00141"></a>00141         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_TYPE_MISMATCH);              
+<a name="l00142"></a>00142     }                                                                  
+<a name="l00143"></a>00143                                                                        
+<a name="l00144"></a>00144     <span class="comment">/* Get the recipe */</span>                                               
+<a name="l00145"></a>00145     recipe = (cpl_recipe *)plugin;                                     
+<a name="l00146"></a>00146                                                                        
+<a name="l00147"></a>00147     <span class="comment">/* Create the parameters list in the cpl_recipe object */</span>          
+<a name="l00148"></a>00148     recipe->parameters = cpl_parameterlist_new();                      
+<a name="l00149"></a>00149     <span class="keywordflow">if</span> (recipe->parameters == NULL) {                                  
+<a name="l00150"></a>00150         cpl_msg_error(cpl_func, <span class="stringliteral">"Parameter list allocation failed"</span>);   
+<a name="l00151"></a>00151         cpl_ensure_code(0, (<span class="keywordtype">int</span>)CPL_ERROR_ILLEGAL_OUTPUT);             
+<a name="l00152"></a>00152     }                                                                  
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154     <span class="comment">/* Fill the parameters list */</span>
+<a name="l00155"></a>00155     <span class="comment">/* --stropt */</span>
+<a name="l00156"></a>00156     p = cpl_parameter_new_value(<span class="stringliteral">"iiinstrument.rrrecipe_calib.str_option"</span>, 
+<a name="l00157"></a>00157             CPL_TYPE_STRING, <span class="stringliteral">"the string option"</span>, 
+<a name="l00158"></a>00158             <span class="stringliteral">"iiinstrument.rrrecipe_calib"</span>,NULL);
 <a name="l00159"></a>00159     cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, <span class="stringliteral">"stropt"</span>);
 <a name="l00160"></a>00160     cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
 <a name="l00161"></a>00161     cpl_parameterlist_append(recipe->parameters, p);
 <a name="l00162"></a>00162 
 <a name="l00163"></a>00163     <span class="comment">/* --boolopt */</span>
-<a name="l00164"></a>00164     p = cpl_parameter_new_value(<span class="stringliteral">"iiinstrument.rrrecipe.bool_option"</span>, 
-<a name="l00165"></a>00165             CPL_TYPE_BOOL, <span class="stringliteral">"a flag"</span>, <span class="stringliteral">"iiinstrument.rrrecipe"</span>, TRUE);
+<a name="l00164"></a>00164     p = cpl_parameter_new_value(<span class="stringliteral">"iiinstrument.rrrecipe_calib.bool_option"</span>, 
+<a name="l00165"></a>00165             CPL_TYPE_BOOL, <span class="stringliteral">"a flag"</span>, <span class="stringliteral">"iiinstrument.rrrecipe_calib"</span>, TRUE);
 <a name="l00166"></a>00166     cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, <span class="stringliteral">"boolopt"</span>);
 <a name="l00167"></a>00167     cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
 <a name="l00168"></a>00168     cpl_parameterlist_append(recipe->parameters, p);
@@ -201,7 +201,7 @@
 <a name="l00172"></a>00172 
 <a name="l00173"></a>00173 <span class="comment">/*----------------------------------------------------------------------------*/</span>
 <a name="l00179"></a>00179 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_exec(cpl_plugin * plugin)
+<a name="l00180"></a>00180 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_exec(cpl_plugin * plugin)
 <a name="l00181"></a>00181 {
 <a name="l00182"></a>00182 
 <a name="l00183"></a>00183     cpl_recipe * recipe;                                                   
@@ -240,7 +240,7 @@
 <a name="l00216"></a>00216     }                                                                      
 <a name="l00217"></a>00217                                                                            
 <a name="l00218"></a>00218     <span class="comment">/* Invoke the recipe */</span>                                                
-<a name="l00219"></a>00219     recipe_status = rrrecipe(recipe->frames, recipe->parameters);
+<a name="l00219"></a>00219     recipe_status = rrrecipe_calib(recipe->frames, recipe->parameters);
 <a name="l00220"></a>00220                                                                            
 <a name="l00221"></a>00221     <span class="comment">/* Ensure DFS-compliance of the products */</span>                            
 <a name="l00222"></a>00222     <span class="keywordflow">if</span> (cpl_dfs_update_product_header(recipe->frames)) {                   
@@ -258,7 +258,7 @@
 <a name="l00234"></a>00234 
 <a name="l00235"></a>00235 <span class="comment">/*----------------------------------------------------------------------------*/</span>
 <a name="l00241"></a>00241 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_destroy(cpl_plugin * plugin)
+<a name="l00242"></a>00242 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib_destroy(cpl_plugin * plugin)
 <a name="l00243"></a>00243 {
 <a name="l00244"></a>00244     cpl_recipe * recipe;                                          
 <a name="l00245"></a>00245                                                                   
@@ -283,113 +283,121 @@
 <a name="l00264"></a>00264 
 <a name="l00265"></a>00265 <span class="comment">/*----------------------------------------------------------------------------*/</span>
 <a name="l00272"></a>00272 <span class="comment">/*----------------------------------------------------------------------------*/</span>
-<a name="l00273"></a>00273 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe(cpl_frameset            * frameset,
+<a name="l00273"></a>00273 <span class="keyword">static</span> <span class="keywordtype">int</span> rrrecipe_calib(cpl_frameset            * frameset,
 <a name="l00274"></a>00274                     <span class="keyword">const</span> cpl_parameterlist * parlist)
 <a name="l00275"></a>00275 {
 <a name="l00276"></a>00276     <span class="keyword">const</span> cpl_parameter *   param;
 <a name="l00277"></a>00277     <span class="keyword">const</span> <span class="keywordtype">char</span>          *   str_option;
 <a name="l00278"></a>00278     <span class="keywordtype">int</span>                     bool_option;
-<a name="l00279"></a>00279     <span class="keyword">const</span> cpl_frame     *   rawframe;
-<a name="l00280"></a>00280     <span class="keyword">const</span> cpl_frame     *   flat;
+<a name="l00279"></a>00279     cpl_frameset        *   rawframes;
+<a name="l00280"></a>00280     <span class="keyword">const</span> cpl_frame     *   firstframe;
 <a name="l00281"></a>00281     <span class="keywordtype">double</span>                  qc_param;
 <a name="l00282"></a>00282     cpl_propertylist    *   plist;
 <a name="l00283"></a>00283     cpl_propertylist    *   applist;
 <a name="l00284"></a>00284     cpl_image           *   image;
-<a name="l00285"></a>00285 
-<a name="l00286"></a>00286     <span class="comment">/* Use the errorstate to detect an error in a function that does not</span>
-<a name="l00287"></a>00287 <span class="comment">       return an error code. */</span>
-<a name="l00288"></a>00288     cpl_errorstate          prestate = cpl_errorstate_get();
-<a name="l00289"></a>00289 
-<a name="l00290"></a>00290     <span class="comment">/* HOW TO RETRIEVE INPUT PARAMETERS */</span>
-<a name="l00291"></a>00291     <span class="comment">/* --stropt */</span>
-<a name="l00292"></a>00292     param = cpl_parameterlist_find_const(parlist,
-<a name="l00293"></a>00293                                          <span class="stringliteral">"iiinstrument.rrrecipe.str_option"</span>);
-<a name="l00294"></a>00294     str_option = cpl_parameter_get_string(param);
-<a name="l00295"></a>00295 
-<a name="l00296"></a>00296     <span class="comment">/* --boolopt */</span>
-<a name="l00297"></a>00297     param = cpl_parameterlist_find_const(parlist,
-<a name="l00298"></a>00298                                          <span class="stringliteral">"iiinstrument.rrrecipe.bool_option"</span>);
-<a name="l00299"></a>00299     bool_option = cpl_parameter_get_bool(param);
-<a name="l00300"></a>00300   
-<a name="l00301"></a>00301     <span class="keywordflow">if</span> (!cpl_errorstate_is_equal(prestate)) {
-<a name="l00302"></a>00302         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
-<a name="l00303"></a>00303                                           <span class="stringliteral">"Could not retrieve the input "</span>
-<a name="l00304"></a>00304                                           <span class="stringliteral">"parameters"</span>);
-<a name="l00305"></a>00305     }
-<a name="l00306"></a>00306     
-<a name="l00307"></a>00307     <span class="comment">/* Identify the RAW and CALIB frames in the input frameset */</span>
-<a name="l00308"></a>00308     cpl_ensure_code(iiinstrument_dfs_set_groups(frameset) == CPL_ERROR_NONE,
-<a name="l00309"></a>00309                     cpl_error_get_code());
-<a name="l00310"></a>00310  
-<a name="l00311"></a>00311     <span class="comment">/* HOW TO ACCESS INPUT DATA */</span>
-<a name="l00312"></a>00312     <span class="comment">/*  - A required file */</span>
-<a name="l00313"></a>00313     rawframe = cpl_frameset_find_const(frameset, RRRECIPE_RAW);
-<a name="l00314"></a>00314     <span class="keywordflow">if</span> (rawframe == NULL) {
-<a name="l00315"></a>00315         <span class="comment">/* cpl_frameset_find_const() does not set an error code, when a frame</span>
-<a name="l00316"></a>00316 <span class="comment">           is not found, so we will set one here. */</span>
-<a name="l00317"></a>00317         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, CPL_ERROR_DATA_NOT_FOUND,
-<a name="l00318"></a>00318                                           <span class="stringliteral">"SOF does not have any file tagged "</span>
-<a name="l00319"></a>00319                                           <span class="stringliteral">"with %s"</span>, RRRECIPE_RAW);
-<a name="l00320"></a>00320     }
-<a name="l00321"></a>00321     <span class="comment">/* - A recommended file */</span>
-<a name="l00322"></a>00322     flat = cpl_frameset_find(frameset, IIINSTRUMENT_CALIB_FLAT);
-<a name="l00323"></a>00323     <span class="keywordflow">if</span> (flat == NULL) {
-<a name="l00324"></a>00324         cpl_msg_warning(cpl_func, <span class="stringliteral">"SOF does not have any file tagged with %s"</span>,
-<a name="l00325"></a>00325                         IIINSTRUMENT_CALIB_FLAT);
-<a name="l00326"></a>00326     }
-<a name="l00327"></a>00327     
-<a name="l00328"></a>00328     <span class="comment">/* HOW TO GET THE VALUE OF A FITS KEYWORD */</span>
-<a name="l00329"></a>00329     <span class="comment">/*  - Load only DETector related keys */</span>
-<a name="l00330"></a>00330     plist = cpl_propertylist_load_regexp(cpl_frame_get_filename(rawframe),
-<a name="l00331"></a>00331                                          0, <span class="stringliteral">"ESO DET "</span>, 0);
-<a name="l00332"></a>00332     <span class="keywordflow">if</span> (plist == NULL) {
-<a name="l00333"></a>00333         <span class="comment">/* In this case an error message is added to the error propagation */</span>
-<a name="l00334"></a>00334         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
-<a name="l00335"></a>00335                                           <span class="stringliteral">"Could not read the FITS header"</span>);
-<a name="l00336"></a>00336     }
-<a name="l00337"></a>00337 
-<a name="l00338"></a>00338     qc_param = iiinstrument_pfits_get_dit(plist);
-<a name="l00339"></a>00339     cpl_propertylist_delete(plist);
-<a name="l00340"></a>00340 
-<a name="l00341"></a>00341     <span class="comment">/* Check for a change in the CPL error state */</span>
-<a name="l00342"></a>00342     <span class="comment">/* - if it did change then propagate the error and return */</span>
-<a name="l00343"></a>00343     cpl_ensure_code(cpl_errorstate_is_equal(prestate), cpl_error_get_code());
-<a name="l00344"></a>00344     
-<a name="l00345"></a>00345     <span class="comment">/* NOW PERFORMING THE DATA REDUCTION */</span>
-<a name="l00346"></a>00346     <span class="comment">/* Let's just load an image for the example */</span>
-<a name="l00347"></a>00347     image = cpl_image_load(cpl_frame_get_filename(rawframe), CPL_TYPE_FLOAT, 0,
-<a name="l00348"></a>00348                            0);
-<a name="l00349"></a>00349     <span class="keywordflow">if</span> (image == NULL) {
-<a name="l00350"></a>00350         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
-<a name="l00351"></a>00351                                      <span class="stringliteral">"Could not load the image"</span>);
-<a name="l00352"></a>00352     }
-<a name="l00353"></a>00353 
-<a name="l00354"></a>00354     applist = cpl_propertylist_new();
-<a name="l00355"></a>00355 
-<a name="l00356"></a>00356     <span class="comment">/* Add the product category  */</span>
-<a name="l00357"></a>00357     cpl_propertylist_append_string(applist, CPL_DFS_PRO_CATG,
-<a name="l00358"></a>00358                                    RRRECIPE_XXX_PROCATG);
-<a name="l00359"></a>00359 
-<a name="l00360"></a>00360     <span class="comment">/* Add a QC parameter  */</span>
-<a name="l00361"></a>00361     cpl_propertylist_append_double(applist, <span class="stringliteral">"ESO QC QCPARAM"</span>, qc_param);
-<a name="l00362"></a>00362     
-<a name="l00363"></a>00363     <span class="comment">/* HOW TO SAVE A DFS-COMPLIANT PRODUCT TO DISK  */</span>
-<a name="l00364"></a>00364     <span class="keywordflow">if</span> (cpl_dfs_save_image(frameset, NULL, parlist, frameset, NULL, image,
-<a name="l00365"></a>00365                            CPL_BPP_IEEE_FLOAT, <span class="stringliteral">"rrrecipe"</span>, applist,
-<a name="l00366"></a>00366                            NULL, PACKAGE <span class="stringliteral">"/"</span> PACKAGE_VERSION,
-<a name="l00367"></a>00367                            <span class="stringliteral">"rrrecipe.fits"</span>)) {
-<a name="l00368"></a>00368         <span class="comment">/* Propagate the error */</span>
-<a name="l00369"></a>00369         (void)cpl_error_set_where(cpl_func);
-<a name="l00370"></a>00370     }
-<a name="l00371"></a>00371 
-<a name="l00372"></a>00372     cpl_image_delete(image);
-<a name="l00373"></a>00373     cpl_propertylist_delete(applist);
-<a name="l00374"></a>00374 
-<a name="l00375"></a>00375     <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_get_code();
-<a name="l00376"></a>00376 }
+<a name="l00285"></a>00285     <span class="keywordtype">int</span>                     nraw;
+<a name="l00286"></a>00286     <span class="keywordtype">int</span>                     i;
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288     <span class="comment">/* Use the errorstate to detect an error in a function that does not</span>
+<a name="l00289"></a>00289 <span class="comment">       return an error code. */</span>
+<a name="l00290"></a>00290     cpl_errorstate          prestate = cpl_errorstate_get();
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292     <span class="comment">/* HOW TO RETRIEVE INPUT PARAMETERS */</span>
+<a name="l00293"></a>00293     <span class="comment">/* --stropt */</span>
+<a name="l00294"></a>00294     param = cpl_parameterlist_find_const(parlist,
+<a name="l00295"></a>00295                                      <span class="stringliteral">"iiinstrument.rrrecipe_calib.str_option"</span>);
+<a name="l00296"></a>00296     str_option = cpl_parameter_get_string(param);
+<a name="l00297"></a>00297 
+<a name="l00298"></a>00298     <span class="comment">/* --boolopt */</span>
+<a name="l00299"></a>00299     param = cpl_parameterlist_find_const(parlist,
+<a name="l00300"></a>00300                                     <span class="stringliteral">"iiinstrument.rrrecipe_calib.bool_option"</span>);
+<a name="l00301"></a>00301     bool_option = cpl_parameter_get_bool(param);
+<a name="l00302"></a>00302   
+<a name="l00303"></a>00303     <span class="keywordflow">if</span> (!cpl_errorstate_is_equal(prestate)) {
+<a name="l00304"></a>00304         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
+<a name="l00305"></a>00305                                           <span class="stringliteral">"Could not retrieve the input "</span>
+<a name="l00306"></a>00306                                           <span class="stringliteral">"parameters"</span>);
+<a name="l00307"></a>00307     }
+<a name="l00308"></a>00308     
+<a name="l00309"></a>00309     <span class="comment">/* Identify the RAW and CALIB frames in the input frameset */</span>
+<a name="l00310"></a>00310     cpl_ensure_code(iiinstrument_dfs_set_groups(frameset) == CPL_ERROR_NONE,
+<a name="l00311"></a>00311                     cpl_error_get_code());
+<a name="l00312"></a>00312  
+<a name="l00313"></a>00313     <span class="comment">/* HOW TO ACCESS INPUT DATA */</span>
+<a name="l00314"></a>00314     <span class="comment">/*  - A required file */</span>
+<a name="l00315"></a>00315     rawframes = cpl_frameset_new();
+<a name="l00316"></a>00316     nraw = 0;
+<a name="l00317"></a>00317     <span class="keywordflow">for</span> (i = 0; i<cpl_frameset_get_size(frameset); i++) {
+<a name="l00318"></a>00318         <span class="keyword">const</span> cpl_frame * current_frame;
+<a name="l00319"></a>00319         current_frame = cpl_frameset_get_frame_const(frameset, i);
+<a name="l00320"></a>00320         <span class="keywordflow">if</span>(!strcmp(cpl_frame_get_tag(current_frame), RRRECIPE_CALIB_RAW)) {
+<a name="l00321"></a>00321             cpl_frame * new_frame = cpl_frame_duplicate(current_frame);
+<a name="l00322"></a>00322             cpl_frameset_insert(rawframes, new_frame);
+<a name="l00323"></a>00323             nraw++;
+<a name="l00324"></a>00324         }
+<a name="l00325"></a>00325     }
+<a name="l00326"></a>00326     <span class="keywordflow">if</span> (nraw == 0) {
+<a name="l00327"></a>00327         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, CPL_ERROR_DATA_NOT_FOUND,
+<a name="l00328"></a>00328                                           <span class="stringliteral">"SOF does not have any file tagged "</span>
+<a name="l00329"></a>00329                                           <span class="stringliteral">"with %s"</span>, RRRECIPE_CALIB_RAW);
+<a name="l00330"></a>00330     }
+<a name="l00331"></a>00331     
+<a name="l00332"></a>00332 
+<a name="l00333"></a>00333     <span class="comment">/* HOW TO GET THE FIRST FRAME OF A FRAME */</span> 
+<a name="l00334"></a>00334     firstframe = cpl_frameset_get_first_const(rawframes);
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336     <span class="comment">/* HOW TO GET THE VALUE OF A FITS KEYWORD */</span>
+<a name="l00337"></a>00337     <span class="comment">/*  - Load only DETector related keys */</span>
+<a name="l00338"></a>00338     plist = cpl_propertylist_load_regexp(cpl_frame_get_filename(firstframe),
+<a name="l00339"></a>00339                                          0, <span class="stringliteral">"ESO DET "</span>, 0);
+<a name="l00340"></a>00340     <span class="keywordflow">if</span> (plist == NULL) {
+<a name="l00341"></a>00341         <span class="comment">/* In this case an error message is added to the error propagation */</span>
+<a name="l00342"></a>00342         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
+<a name="l00343"></a>00343                                           <span class="stringliteral">"Could not read the FITS header"</span>);
+<a name="l00344"></a>00344     }
+<a name="l00345"></a>00345 
+<a name="l00346"></a>00346     qc_param = iiinstrument_pfits_get_dit(plist);
+<a name="l00347"></a>00347     cpl_propertylist_delete(plist);
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349     <span class="comment">/* Check for a change in the CPL error state */</span>
+<a name="l00350"></a>00350     <span class="comment">/* - if it did change then propagate the error and return */</span>
+<a name="l00351"></a>00351     cpl_ensure_code(cpl_errorstate_is_equal(prestate), cpl_error_get_code());
+<a name="l00352"></a>00352     
+<a name="l00353"></a>00353     <span class="comment">/* NOW PERFORMING THE DATA REDUCTION */</span>
+<a name="l00354"></a>00354     <span class="comment">/* Let's just load an image for the example */</span>
+<a name="l00355"></a>00355     image = cpl_image_load(cpl_frame_get_filename(firstframe), CPL_TYPE_FLOAT, 0,
+<a name="l00356"></a>00356                            0);
+<a name="l00357"></a>00357     <span class="keywordflow">if</span> (image == NULL) {
+<a name="l00358"></a>00358         <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_set_message(cpl_func, cpl_error_get_code(),
+<a name="l00359"></a>00359                                      <span class="stringliteral">"Could not load the image"</span>);
+<a name="l00360"></a>00360     }
+<a name="l00361"></a>00361 
+<a name="l00362"></a>00362     applist = cpl_propertylist_new();
+<a name="l00363"></a>00363 
+<a name="l00364"></a>00364     <span class="comment">/* Add the product category  */</span>
+<a name="l00365"></a>00365     cpl_propertylist_append_string(applist, CPL_DFS_PRO_CATG,
+<a name="l00366"></a>00366                                    RRRECIPE_XXX_PROCATG);
+<a name="l00367"></a>00367 
+<a name="l00368"></a>00368     <span class="comment">/* Add a QC parameter  */</span>
+<a name="l00369"></a>00369     cpl_propertylist_append_double(applist, <span class="stringliteral">"ESO QC QCPARAM"</span>, qc_param);
+<a name="l00370"></a>00370     
+<a name="l00371"></a>00371     <span class="comment">/* HOW TO SAVE A DFS-COMPLIANT PRODUCT TO DISK  */</span>
+<a name="l00372"></a>00372     <span class="keywordflow">if</span> (cpl_dfs_save_image(frameset, NULL, parlist, frameset, NULL, image,
+<a name="l00373"></a>00373                            CPL_BPP_IEEE_FLOAT, <span class="stringliteral">"rrrecipe_calib"</span>, applist,
+<a name="l00374"></a>00374                            NULL, PACKAGE <span class="stringliteral">"/"</span> PACKAGE_VERSION,
+<a name="l00375"></a>00375                            <span class="stringliteral">"rrrecipe_calib.fits"</span>)) {
+<a name="l00376"></a>00376         <span class="comment">/* Propagate the error */</span>
+<a name="l00377"></a>00377         (void)cpl_error_set_where(cpl_func);
+<a name="l00378"></a>00378     }
+<a name="l00379"></a>00379 
+<a name="l00380"></a>00380     cpl_image_delete(image);
+<a name="l00381"></a>00381     cpl_propertylist_delete(applist);
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383     <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)cpl_error_get_code();
+<a name="l00384"></a>00384 }
 </pre></div></div>
 </div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Jan 20 2012 for IIINSTRUMENT Pipeline Reference Manual by 
+<hr class="footer"/><address class="footer"><small>Generated on Mon Sep 24 2012 for IIINSTRUMENT Pipeline Reference Manual by 
 <a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
 </body>
diff --git a/iiinstrument/Makefile.in b/iiinstrument/Makefile.in
index 49e6394..eb880fe 100644
--- a/iiinstrument/Makefile.in
+++ b/iiinstrument/Makefile.in
@@ -291,8 +291,8 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-wkfdir = @wkfdir@
-wkflinkdir = @wkflinkdir@
+wkfcopydir = @wkfcopydir@
+wkfextradir = @wkfextradir@
 AUTOMAKE_OPTIONS = 1.8 foreign
 SUBDIRS = . tests
 DISTCLEANFILES = *~
diff --git a/iiinstrument/iiinstrument_dfs.c b/iiinstrument/iiinstrument_dfs.c
index 0f2900d..f53cea1 100644
--- a/iiinstrument/iiinstrument_dfs.c
+++ b/iiinstrument/iiinstrument_dfs.c
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/31 06:10:40 $
  * $Revision: 1.6 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/iiinstrument/iiinstrument_dfs.h b/iiinstrument/iiinstrument_dfs.h
index d7b412d..6c56e7a 100644
--- a/iiinstrument/iiinstrument_dfs.h
+++ b/iiinstrument/iiinstrument_dfs.h
@@ -1,4 +1,4 @@
-/* $Id: iiinstrument_dfs.h,v 1.9 2007/07/31 06:10:40 llundin Exp $
+/* $Id: iiinstrument_dfs.h,v 1.10 2012/09/17 11:07:11 cgarcia Exp $
  *
  * This file is part of the IIINSTRUMENT Pipeline
  * Copyright (C) 2002,2003 European Southern Observatory
@@ -19,10 +19,10 @@
  */
 
 /*
- * $Author: llundin $
- * $Date: 2007/07/31 06:10:40 $
- * $Revision: 1.9 $
- * $Name: HEAD $
+ * $Author: cgarcia $
+ * $Date: 2012/09/17 11:07:11 $
+ * $Revision: 1.10 $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifndef IIINSTRUMENT_DFS_H
@@ -36,6 +36,7 @@
 #define RRRECIPE_XXX_PROCATG            "THE_PRO_CATG_VALUE"
 
 /* Define here the DO.CATG keywords */
+#define RRRECIPE_CALIB_RAW              "RRRECIPE_CALIB_DOCATG_RAW"
 #define RRRECIPE_RAW                    "RRRECIPE_DOCATG_RAW"
 #define IIINSTRUMENT_CALIB_FLAT         "FLAT"
 
diff --git a/iiinstrument/iiinstrument_pfits.c b/iiinstrument/iiinstrument_pfits.c
index 3610976..1aa7c5c 100644
--- a/iiinstrument/iiinstrument_pfits.c
+++ b/iiinstrument/iiinstrument_pfits.c
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/31 06:10:40 $
  * $Revision: 1.12 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/iiinstrument/iiinstrument_pfits.h b/iiinstrument/iiinstrument_pfits.h
index ee7d175..32d6abc 100644
--- a/iiinstrument/iiinstrument_pfits.h
+++ b/iiinstrument/iiinstrument_pfits.h
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/31 06:10:40 $
  * $Revision: 1.8 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifndef IIINSTRUMENT_PFITS_H
diff --git a/iiinstrument/iiinstrument_utils.c b/iiinstrument/iiinstrument_utils.c
index 14bc496..d9bb219 100644
--- a/iiinstrument/iiinstrument_utils.c
+++ b/iiinstrument/iiinstrument_utils.c
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/31 06:10:40 $
  * $Revision: 1.10 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/iiinstrument/iiinstrument_utils.h b/iiinstrument/iiinstrument_utils.h
index 7e26481..e6ed811 100644
--- a/iiinstrument/iiinstrument_utils.h
+++ b/iiinstrument/iiinstrument_utils.h
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/31 06:10:40 $
  * $Revision: 1.12 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifndef IIINSTRUMENT_UTILS_H
diff --git a/iiinstrument/tests/Makefile.in b/iiinstrument/tests/Makefile.in
index 070e25f..d2b39d1 100644
--- a/iiinstrument/tests/Makefile.in
+++ b/iiinstrument/tests/Makefile.in
@@ -225,8 +225,8 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-wkfdir = @wkfdir@
-wkflinkdir = @wkflinkdir@
+wkfcopydir = @wkfcopydir@
+wkfextradir = @wkfextradir@
 AUTOMAKE_OPTIONS = 1.6 foreign
 DISTCLEANFILES = *~
 @MAINTAINER_MODE_TRUE at MAINTAINERCLEANFILES = Makefile.in
diff --git a/iiinstrument/tests/iiinstrument_dfs-test.c b/iiinstrument/tests/iiinstrument_dfs-test.c
index 7fcb9c1..9e05ca5 100644
--- a/iiinstrument/tests/iiinstrument_dfs-test.c
+++ b/iiinstrument/tests/iiinstrument_dfs-test.c
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2007/07/30 07:08:14 $
  * $Revision: 1.3 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/m4macros/eso.m4 b/m4macros/eso.m4
index 210bb9c..53cf8d7 100644
--- a/m4macros/eso.m4
+++ b/m4macros/eso.m4
@@ -90,7 +90,6 @@ AC_DEFUN([ESO_ENABLE_DEBUG],
 #-----------------------------
 AC_DEFUN([ESO_ENABLE_STRICT],
 [
-	AC_REQUIRE([AC_PROG_EGREP])
     AC_REQUIRE([AC_PROG_CC])
 
     AC_ARG_ENABLE(strict,
@@ -104,22 +103,8 @@ AC_DEFUN([ESO_ENABLE_STRICT],
 
 
     if test x"$eso_cv_enable_strict" = xyes; then
-    
-    	eso_enable_strict_std_set = no
-    	
-        if test -n "$CFLAGS"; then
-            echo $CFLAGS | $EGREP '(\-std=|-ansi)' >/dev/null 2>&1
-            if test x"$?" = x0; then
-            	eso_enable_strict_std_set = yes
-            fi
-        fi
-        
-        if test "$eso_enable_strict_std_set" = no; then
-        	ESO_PROG_CC_FLAG([std=c99], [CFLAGS="$CFLAGS -std=c99"])
-        fi
-        
+        ESO_PROG_CC_FLAG([std=c99], [CFLAGS="$CFLAGS -std=c99"])
         ESO_PROG_CC_FLAG([pedantic], [CFLAGS="$CFLAGS -pedantic"])
-        
     fi
 ])
 
diff --git a/recipes/Makefile.am b/recipes/Makefile.am
index dc8ceee..3b891fe 100644
--- a/recipes/Makefile.am
+++ b/recipes/Makefile.am
@@ -33,9 +33,14 @@ INCLUDES = $(all_includes)
 
 noinst_HEADERS = 
 
-plugin_LTLIBRARIES = rrrecipe.la 
+plugin_LTLIBRARIES = rrrecipe.la rrrecipe_calib.la 
 
 rrrecipe_la_SOURCES = rrrecipe.c 
 rrrecipe_la_LIBADD = $(LIBIIINSTRUMENT)
 rrrecipe_la_LDFLAGS = -module -avoid-version
 rrrecipe_la_DEPENDENCIES = $(LIBIIINSTRUMENT)
+
+rrrecipe_calib_la_SOURCES = rrrecipe_calib.c 
+rrrecipe_calib_la_LIBADD = $(LIBIIINSTRUMENT)
+rrrecipe_calib_la_LDFLAGS = -module -avoid-version
+rrrecipe_calib_la_DEPENDENCIES = $(LIBIIINSTRUMENT)
diff --git a/recipes/Makefile.in b/recipes/Makefile.in
index 9155c76..16d0c28 100644
--- a/recipes/Makefile.in
+++ b/recipes/Makefile.in
@@ -84,6 +84,11 @@ rrrecipe_la_OBJECTS = $(am_rrrecipe_la_OBJECTS)
 rrrecipe_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(rrrecipe_la_LDFLAGS) $(LDFLAGS) -o $@
+am_rrrecipe_calib_la_OBJECTS = rrrecipe_calib.lo
+rrrecipe_calib_la_OBJECTS = $(am_rrrecipe_calib_la_OBJECTS)
+rrrecipe_calib_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(rrrecipe_calib_la_LDFLAGS) $(LDFLAGS) -o $@
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
 am__depfiles_maybe = depfiles
@@ -97,8 +102,8 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-SOURCES = $(rrrecipe_la_SOURCES)
-DIST_SOURCES = $(rrrecipe_la_SOURCES)
+SOURCES = $(rrrecipe_la_SOURCES) $(rrrecipe_calib_la_SOURCES)
+DIST_SOURCES = $(rrrecipe_la_SOURCES) $(rrrecipe_calib_la_SOURCES)
 HEADERS = $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
@@ -251,18 +256,22 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-wkfdir = @wkfdir@
-wkflinkdir = @wkflinkdir@
+wkfcopydir = @wkfcopydir@
+wkfextradir = @wkfextradir@
 AUTOMAKE_OPTIONS = 1.8 foreign
 DISTCLEANFILES = *~
 @MAINTAINER_MODE_TRUE at MAINTAINERCLEANFILES = Makefile.in
 INCLUDES = $(all_includes)
 noinst_HEADERS = 
-plugin_LTLIBRARIES = rrrecipe.la 
+plugin_LTLIBRARIES = rrrecipe.la rrrecipe_calib.la 
 rrrecipe_la_SOURCES = rrrecipe.c 
 rrrecipe_la_LIBADD = $(LIBIIINSTRUMENT)
 rrrecipe_la_LDFLAGS = -module -avoid-version
 rrrecipe_la_DEPENDENCIES = $(LIBIIINSTRUMENT)
+rrrecipe_calib_la_SOURCES = rrrecipe_calib.c 
+rrrecipe_calib_la_LIBADD = $(LIBIIINSTRUMENT)
+rrrecipe_calib_la_LDFLAGS = -module -avoid-version
+rrrecipe_calib_la_DEPENDENCIES = $(LIBIIINSTRUMENT)
 all: all-am
 
 .SUFFIXES:
@@ -330,6 +339,8 @@ clean-pluginLTLIBRARIES:
 	done
 rrrecipe.la: $(rrrecipe_la_OBJECTS) $(rrrecipe_la_DEPENDENCIES) 
 	$(rrrecipe_la_LINK) -rpath $(plugindir) $(rrrecipe_la_OBJECTS) $(rrrecipe_la_LIBADD) $(LIBS)
+rrrecipe_calib.la: $(rrrecipe_calib_la_OBJECTS) $(rrrecipe_calib_la_DEPENDENCIES) 
+	$(rrrecipe_calib_la_LINK) -rpath $(plugindir) $(rrrecipe_calib_la_OBJECTS) $(rrrecipe_calib_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -338,6 +349,7 @@ distclean-compile:
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rrrecipe.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rrrecipe_calib.Plo at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
diff --git a/recipes/rrrecipe.c b/recipes/rrrecipe.c
index 390bb19..f11c342 100644
--- a/recipes/rrrecipe.c
+++ b/recipes/rrrecipe.c
@@ -22,7 +22,7 @@
  * $Author: llundin $
  * $Date: 2009/02/10 09:16:12 $
  * $Revision: 1.29 $
- * $Name: HEAD $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
diff --git a/recipes/rrrecipe.c b/recipes/rrrecipe_calib.c
similarity index 85%
copy from recipes/rrrecipe.c
copy to recipes/rrrecipe_calib.c
index 390bb19..fcc9054 100644
--- a/recipes/rrrecipe.c
+++ b/recipes/rrrecipe_calib.c
@@ -1,4 +1,4 @@
-/* $Id: rrrecipe.c,v 1.29 2009/02/10 09:16:12 llundin Exp $
+/* $Id: rrrecipe_calib.c,v 1.1 2012/09/17 13:40:08 cgarcia Exp $
  *
  * This file is part of the IIINSTRUMENT Pipeline
  * Copyright (C) 2002,2003 European Southern Observatory
@@ -19,10 +19,10 @@
  */
 
 /*
- * $Author: llundin $
- * $Date: 2009/02/10 09:16:12 $
- * $Revision: 1.29 $
- * $Name: HEAD $
+ * $Author: cgarcia $
+ * $Date: 2012/09/17 13:40:08 $
+ * $Revision: 1.1 $
+ * $Name: iiinstrument-0_0_2 $
  */
 
 #ifdef HAVE_CONFIG_H
@@ -33,6 +33,7 @@
                                 Includes
  -----------------------------------------------------------------------------*/
 
+#include <string.h>
 #include <cpl.h>
 
 #include "iiinstrument_utils.h"
@@ -43,22 +44,20 @@
                             Private function prototypes
  -----------------------------------------------------------------------------*/
 
-static int rrrecipe_create(cpl_plugin *);
-static int rrrecipe_exec(cpl_plugin *);
-static int rrrecipe_destroy(cpl_plugin *);
-static int rrrecipe(cpl_frameset *, const cpl_parameterlist *);
+static int rrrecipe_calib_create(cpl_plugin *);
+static int rrrecipe_calib_exec(cpl_plugin *);
+static int rrrecipe_calib_destroy(cpl_plugin *);
+static int rrrecipe_calib(cpl_frameset *, const cpl_parameterlist *);
 
 /*-----------------------------------------------------------------------------
                             Static variables
  -----------------------------------------------------------------------------*/
 
-static char rrrecipe_description[] =
+static char rrrecipe_calib_description[] =
 "This example text is used to describe the recipe.\n"
 "The description should include the required FITS-files and\n"
 "their associated tags, e.g.\n"
-"IIINSTRUMENT-RRRECIPE-raw-file.fits " RRRECIPE_RAW "\n"
-"and any optional files, e.g.\n"
-"IIINSTRUMENT-RRRECIPE-flat-file.fits " IIINSTRUMENT_CALIB_FLAT "\n"
+"IIINSTRUMENT-RRRECIPE-CALIB-raw-file.fits " RRRECIPE_CALIB_RAW "\n"
 "\n"
 "Additionally, it should describe functionality of the expected output."
 "\n";
@@ -87,15 +86,15 @@ int cpl_plugin_get_info(cpl_pluginlist * list)
                     CPL_PLUGIN_API,
                     IIINSTRUMENT_BINARY_VERSION,
                     CPL_PLUGIN_TYPE_RECIPE,
-                    "rrrecipe",
-                    "Short description of rrrecipe",
-                    rrrecipe_description,
+                    "rrrecipe_calib",
+                    "Short description of rrrecipe_calib",
+                    rrrecipe_calib_description,
                     "Firstname Lastname",
                     PACKAGE_BUGREPORT,
                     iiinstrument_get_license(),
-                    rrrecipe_create,
-                    rrrecipe_exec,
-                    rrrecipe_destroy)) {    
+                    rrrecipe_calib_create,
+                    rrrecipe_calib_exec,
+                    rrrecipe_calib_destroy)) {    
         cpl_msg_error(cpl_func, "Plugin initialization failed");
         (void)cpl_error_set_where(cpl_func);                          
         return 1;                                               
@@ -119,7 +118,7 @@ int cpl_plugin_get_info(cpl_pluginlist * list)
   Defining the command-line/configuration parameters for the recipe.
  */
 /*----------------------------------------------------------------------------*/
-static int rrrecipe_create(cpl_plugin * plugin)
+static int rrrecipe_calib_create(cpl_plugin * plugin)
 {
     cpl_recipe    * recipe;                                               
     cpl_parameter * p;
@@ -154,15 +153,16 @@ static int rrrecipe_create(cpl_plugin * plugin)
 
     /* Fill the parameters list */
     /* --stropt */
-    p = cpl_parameter_new_value("iiinstrument.rrrecipe.str_option", 
-            CPL_TYPE_STRING, "the string option", "iiinstrument.rrrecipe",NULL);
+    p = cpl_parameter_new_value("iiinstrument.rrrecipe_calib.str_option", 
+            CPL_TYPE_STRING, "the string option", 
+            "iiinstrument.rrrecipe_calib",NULL);
     cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "stropt");
     cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
     cpl_parameterlist_append(recipe->parameters, p);
 
     /* --boolopt */
-    p = cpl_parameter_new_value("iiinstrument.rrrecipe.bool_option", 
-            CPL_TYPE_BOOL, "a flag", "iiinstrument.rrrecipe", TRUE);
+    p = cpl_parameter_new_value("iiinstrument.rrrecipe_calib.bool_option", 
+            CPL_TYPE_BOOL, "a flag", "iiinstrument.rrrecipe_calib", TRUE);
     cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, "boolopt");
     cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
     cpl_parameterlist_append(recipe->parameters, p);
@@ -177,7 +177,7 @@ static int rrrecipe_create(cpl_plugin * plugin)
   @return   0 if everything is ok
  */
 /*----------------------------------------------------------------------------*/
-static int rrrecipe_exec(cpl_plugin * plugin)
+static int rrrecipe_calib_exec(cpl_plugin * plugin)
 {
 
     cpl_recipe * recipe;                                                   
@@ -216,7 +216,7 @@ static int rrrecipe_exec(cpl_plugin * plugin)
     }                                                                      
                                                                            
     /* Invoke the recipe */                                                
-    recipe_status = rrrecipe(recipe->frames, recipe->parameters);
+    recipe_status = rrrecipe_calib(recipe->frames, recipe->parameters);
                                                                            
     /* Ensure DFS-compliance of the products */                            
     if (cpl_dfs_update_product_header(recipe->frames)) {                   
@@ -239,7 +239,7 @@ static int rrrecipe_exec(cpl_plugin * plugin)
   @return   0 if everything is ok
  */
 /*----------------------------------------------------------------------------*/
-static int rrrecipe_destroy(cpl_plugin * plugin)
+static int rrrecipe_calib_destroy(cpl_plugin * plugin)
 {
     cpl_recipe * recipe;                                          
                                                                   
@@ -270,18 +270,20 @@ static int rrrecipe_destroy(cpl_plugin * plugin)
   @return   0 if everything is ok
  */
 /*----------------------------------------------------------------------------*/
-static int rrrecipe(cpl_frameset            * frameset,
+static int rrrecipe_calib(cpl_frameset            * frameset,
                     const cpl_parameterlist * parlist)
 {
     const cpl_parameter *   param;
     const char          *   str_option;
     int                     bool_option;
-    const cpl_frame     *   rawframe;
-    const cpl_frame     *   flat;
+    cpl_frameset        *   rawframes;
+    const cpl_frame     *   firstframe;
     double                  qc_param;
     cpl_propertylist    *   plist;
     cpl_propertylist    *   applist;
     cpl_image           *   image;
+    int                     nraw;
+    int                     i;
 
     /* Use the errorstate to detect an error in a function that does not
        return an error code. */
@@ -290,12 +292,12 @@ static int rrrecipe(cpl_frameset            * frameset,
     /* HOW TO RETRIEVE INPUT PARAMETERS */
     /* --stropt */
     param = cpl_parameterlist_find_const(parlist,
-                                         "iiinstrument.rrrecipe.str_option");
+                                     "iiinstrument.rrrecipe_calib.str_option");
     str_option = cpl_parameter_get_string(param);
 
     /* --boolopt */
     param = cpl_parameterlist_find_const(parlist,
-                                         "iiinstrument.rrrecipe.bool_option");
+                                    "iiinstrument.rrrecipe_calib.bool_option");
     bool_option = cpl_parameter_get_bool(param);
   
     if (!cpl_errorstate_is_equal(prestate)) {
@@ -310,24 +312,30 @@ static int rrrecipe(cpl_frameset            * frameset,
  
     /* HOW TO ACCESS INPUT DATA */
     /*  - A required file */
-    rawframe = cpl_frameset_find_const(frameset, RRRECIPE_RAW);
-    if (rawframe == NULL) {
-        /* cpl_frameset_find_const() does not set an error code, when a frame
-           is not found, so we will set one here. */
+    rawframes = cpl_frameset_new();
+    nraw = 0;
+    for (i = 0; i<cpl_frameset_get_size(frameset); i++) {
+        const cpl_frame * current_frame;
+        current_frame = cpl_frameset_get_frame_const(frameset, i);
+        if(!strcmp(cpl_frame_get_tag(current_frame), RRRECIPE_CALIB_RAW)) {
+            cpl_frame * new_frame = cpl_frame_duplicate(current_frame);
+            cpl_frameset_insert(rawframes, new_frame);
+            nraw++;
+        }
+    }
+    if (nraw == 0) {
         return (int)cpl_error_set_message(cpl_func, CPL_ERROR_DATA_NOT_FOUND,
                                           "SOF does not have any file tagged "
-                                          "with %s", RRRECIPE_RAW);
-    }
-    /* - A recommended file */
-    flat = cpl_frameset_find(frameset, IIINSTRUMENT_CALIB_FLAT);
-    if (flat == NULL) {
-        cpl_msg_warning(cpl_func, "SOF does not have any file tagged with %s",
-                        IIINSTRUMENT_CALIB_FLAT);
+                                          "with %s", RRRECIPE_CALIB_RAW);
     }
     
+
+    /* HOW TO GET THE FIRST FRAME OF A FRAME */ 
+    firstframe = cpl_frameset_get_first_const(rawframes);
+
     /* HOW TO GET THE VALUE OF A FITS KEYWORD */
     /*  - Load only DETector related keys */
-    plist = cpl_propertylist_load_regexp(cpl_frame_get_filename(rawframe),
+    plist = cpl_propertylist_load_regexp(cpl_frame_get_filename(firstframe),
                                          0, "ESO DET ", 0);
     if (plist == NULL) {
         /* In this case an error message is added to the error propagation */
@@ -344,7 +352,7 @@ static int rrrecipe(cpl_frameset            * frameset,
     
     /* NOW PERFORMING THE DATA REDUCTION */
     /* Let's just load an image for the example */
-    image = cpl_image_load(cpl_frame_get_filename(rawframe), CPL_TYPE_FLOAT, 0,
+    image = cpl_image_load(cpl_frame_get_filename(firstframe), CPL_TYPE_FLOAT, 0,
                            0);
     if (image == NULL) {
         return (int)cpl_error_set_message(cpl_func, cpl_error_get_code(),
@@ -362,9 +370,9 @@ static int rrrecipe(cpl_frameset            * frameset,
     
     /* HOW TO SAVE A DFS-COMPLIANT PRODUCT TO DISK  */
     if (cpl_dfs_save_image(frameset, NULL, parlist, frameset, NULL, image,
-                           CPL_BPP_IEEE_FLOAT, "rrrecipe", applist,
+                           CPL_BPP_IEEE_FLOAT, "rrrecipe_calib", applist,
                            NULL, PACKAGE "/" PACKAGE_VERSION,
-                           "rrrecipe.fits")) {
+                           "rrrecipe_calib.fits")) {
         /* Propagate the error */
         (void)cpl_error_set_where(cpl_func);
     }
diff --git a/reflex/Iiinstrument.xml.in b/reflex/Iiinstrument.xml.in
index 6ca7a2e..8d4bfe2 100644
--- a/reflex/Iiinstrument.xml.in
+++ b/reflex/Iiinstrument.xml.in
@@ -2,9 +2,9 @@
 <!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN"
     "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd">
 <entity name="Iiinstrument" class="ptolemy.actor.TypedCompositeActor">
-    <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
+    <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="8.1.devel">
     </property>
-    <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={286, 44, 1456, 1039}, maximized=false}">
+    <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={330, 58, 1491, 1061}, maximized=false}">
     </property>
     <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[1181, 910]">
     </property>
@@ -12,37 +12,12 @@
     </property>
     <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{814.5000000000086, 512.0753598645283}">
     </property>
-    <property name="RAWDATA_DIR" class="ptolemy.data.expr.FileParameter" value="$ROOT_DATA_DIR/reflex_input/Uves">
+    <property name="RAWDATA_DIR" class="ptolemy.data.expr.FileParameter" value="$ROOT_DATA_DIR/reflex_input/Iiinstrument">
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -95,87 +70,8 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Gang Zhou</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-            <p> The dynamic dataflow (DDF) domain is a superset of the synchronous
-            dataflow(SDF) and Boolean dataflow(BDF) domains. In the SDF domain,
-            an actor consumes and produces a fixed number of tokens per firing.
-            This static information makes possible compile-time scheduling. In the
-            DDF domain, there are few constraints on the production and consumption
-            behavior of actors, and the schedulers make no attempt to construct a
-            compile-time schedule. Instead, each actor has a set of firing rules
-            (patterns) and can be fired if one of them is satisfied, i.e., one
-            particular firing pattern forms a prefix of sequences of unconsumed
-            tokens at input ports. The canonical actors in the DDF domain include
-            Select and Switch, which consume or produce tokens on different channels
-            based on the token received from the control port. (In practice, use
-            DDFSelect and DDFBooleanSelect in the DDF-specific library instead of
-            Select and BooleanSelect in the regular FlowControl library; however,
-            Switch and BooleanSwitch in the regular FlowControl library can be
-            used in DDF domain.)</p>
-           
-            <p> The dynamic scheduler implemented in this director fires all enabled
-            and non-deferrable actors once in a basic iteration. A deferrable
-            actor is one that will not help one of the downstream actors become
-            enabled because that downstream actor either already has enough tokens on
-            the channel connecting those two actors or is waiting for tokens on
-            another channel. If no actor fires so far, which means there is no
-            enabled and non-deferrable actor, then among all enabled and deferrable
-            actors, this director fires those which have the smallest maximum number
-            of tokens on their output channels which satisfy the demand of destination
-            actors. If still no actor fires, then there is no enabled actor. A user
-            can treat several such basic iterations as a single iteration by adding
-            a parameter with name <i>requiredFiringsPerIteration</i> to an actor
-            (which is often a sink actor or an actor directly connected to output port
-            of the composite actor) and specifying the number of times this actor must
-            be fired in a single iteration. If the value of the parameter
-            <i>runUntilDeadlockInOneIteration</i> is a BooleanToken with value true,
-            one single iteration consists of repeating the basic iteration until
-            deadlock is reached (thus overriding the previous definition of one
-            iteration), which is the status of the model where all active
-            actors under the control of this director are unable to fire because
-            their firing rules are not satisfied. However, they may be able to fire
-            again during next iteration when tokens are transferred in from an outside
-            domain. Note <i>runUntilDeadlockInOneIteration</i> can be set to true
-            only when this director is not on the top level.</p>
-           
-            <p> The algorithm implementing one basic iteration goes like this:
-            <pre>
-            E = set of enabled actors
-            D = set of deferrable enabled actors
-            </pre>
-            One basic(default) iteration consists of:
-            <pre>
-            if (E\D != empty set) {
-            fire (E\D)
-            } else if (D != empty set) {
-            fire minimax(D)
-            } else {
-            declare deadlock
-            }
-            </pre>
-            The function "minimax(D)" returns a subset of D with the smallest
-            maximum number of tokens on their output channels which satisfy the
-            demand of destination actors.</p>
-           
-            <p> Note that any SDF model can be run with a DDF Director. However, the
-            notion of iteration is different. One could try to imitate the SDF
-            iteration in the DDF domain by controlling the number of firings in one
-            iteration for some actors, such as requiring a plotter to plot a fixed
-            number of points in each iteration.</p>
-           
-            <p> In the DDF domain, the firing rule of any actor is specified by the token
-            consumption rates of its input ports. A general DDF actor could change
-            the consumption rates of its input ports after each firing of this actor.
-            For multiports, an array token could be used to specify different rates
-            for different channels connected to the same multiport. Note that in SDF,
-            all channels connected to the same multiport have the same rate.</p>
-           
-            <p> Based on DDFSimpleSched in Ptolemy Classic, by Edward Lee.
-            See E. A. Lee et al., "The Almagest," documentation for Ptolemy Classic,
-            Vol. 1, Chapter 7, 1997.</p>
-           
-        </configure></property>
-<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to "0". Note that "0" does not mean "no iterations." Rather, "0" means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. </configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
            <p> The dynamic dataflow (DDF) domain is a superset of the synchronous
            dataflow(SDF) and Boolean dataflow(BDF) domains. In the SDF domain,
            an actor consumes and produces a fixed number of tokens per firing.
            This static information makes possible compile-time scheduling. In the
            DDF domain, there are few constraints on the production and consumption
            behavior of actors, and the schedulers make no attempt to construct a
            compile-time schedule. Instead, each actor has a set of firing rules
            (patterns) and can be fired if one of them is satisfied, i.e., one
            particular firing pattern forms a prefix of sequences of unconsumed
            tokens at input ports. The canonical actors in the DDF domain include
            Select and Switch, which consume or produce tokens on different channels
            based on the token received from the control port. (In practice, use
            DDFSelect and DDFBooleanSelect in the DDF-specific library instead of
            Select and BooleanSelect in the regular FlowControl library; however,
            Switch and BooleanSwitch in the regular FlowControl library can be
            used in DDF domain.)</p>
           
            <p> The dynamic scheduler implemented in this director fires all enabled
            and non-deferrable actors once in a basic iteration. A deferrable
            actor is one that will not help one of the downstream actors become
            enabled because that downstream actor either already has enough tokens on
            the channel connecting those two actors or is waiting for tokens on
            another channel. If no actor fires so far, which means there is no
            enabled and non-deferrable actor, then among all enabled and deferrable
            actors, this director fires those which have the smallest maximum number
            of tokens on their output channels which satisfy the demand of destination
            actors. If still no actor fires, then there is no enabled actor. A user
            can treat several such basic iterations as a single iteration by adding
            a parameter with name <i>requiredFiringsPerIteration</i> to an actor
            (which is often a sink actor or an actor directly connected to output port
            of the composite actor) and specifying the number of times this actor must
            be fired in a single iteration. If the value of the parameter
            <i>runUntilDeadlockInOneIteration</i> is a BooleanToken with value true,
            one single iteration consists of repeating the basic iteration until
            deadlock is reached (thus overriding the previous definition of one
            iteration), which is the status of the model where all active
            actors under the control of this director are unable to fire because
            their firing rules are not satisfied. However, they may be able to fire
            again during next iteration when tokens are transferred in from an outside
            domain. Note <i>runUntilDeadlockInOneIteration</i> can be set to true
            only when this director is not on the top level.</p>
           
            <p> The algorithm implementing one basic iteration goes like this:
            <pre>
            E = set of enabled actors
            D = set of deferrable enabled actors
            </pre>
            One basic(default) iteration consists of:
            <pre>
            if (E\D != empty set) {
            fire (E\D)
            } else if (D != empty set) {
            fire minimax(D)
            } else {
            declare deadlock
            }
            </pre>
            The function "minimax(D)" returns a subset of D with the smallest
            maximum number of tokens on their output channels which satisfy the
            demand of destination actors.</p>
           
            <p> Note that any SDF model can be run with a DDF Director. However, the
            notion of iteration is different. One could try to imitate the SDF
            iteration in the DDF domain by controlling the number of firings in one
            iteration for some actors, such as requiring a plotter to plot a fixed
            number of points in each iteration.</p>
           
            <p> In the DDF domain, the firing rule of any actor is specified by the token
            consumption rates of its input ports. A general DDF actor could change
            the consumption rates of its input ports after each firing of this actor.
            For multiports, an array token could be used to specify different rates
            for different channels connected to the same multiport. Note that in SDF,
            all channels connected to the same multiport have the same rate.</p>
           
            <p> Based on DDFSimpleSched in Ptolemy Classic, by Edward Lee.
            See E. A. Lee et al., "The Almagest," documentation for Ptolemy Classic,
            Vol. 1, Chapter 7, 1997.</p>
           
        </configure></property>
+<property name="prop:iterations" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify the number of times a workflow is iterated. By default, this parameter is set to "0". Note that "0" does not mean "no iterations." Rather, "0" means that the workflow will iterate forever. Values greater than zero specify the actual number of times the director should execute the entire workflow. </configure></property>
 <property name="prop:maximumReceiverCapacity" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A Parameter representing the maximum capacity of each receiver controlled by this director. This is an integer that defaults to 0, which means the queue in each receiver is unbounded. To specify bounded queues, set this to a positive integer. </configure></property>
 <property name="prop:runUntilDeadlockInOneIteration" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A parameter indicating whether one iteration consists of repeated basic iterations until deadlock. If this parameter is true, the model will be executed until deadlock in one iteration. The default value is a BooleanToken with the value false. It cannot be set to true if this director is at the top level.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:director:5:1">
@@ -196,32 +92,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -268,32 +139,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -340,32 +186,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -412,32 +233,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -507,7 +303,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -547,10 +343,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>

<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
</p></configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
@@ -584,10 +377,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>

<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
</p></configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
@@ -621,10 +411,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>

<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
</p></configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
@@ -658,10 +445,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>

<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
</p></configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
@@ -690,15 +474,12 @@
         <property name="_location" class="ptolemy.kernel.util.Location" value="[1030.0, 235.0]">
         </property>
     </property>
-    <property name="GLOBAL_TIMESTAMP" class="ptolemy.data.expr.StringParameter" value="2011-01-11T14:46:53">
+    <property name="GLOBAL_TIMESTAMP" class="ptolemy.data.expr.StringParameter" value="2012-09-18T12:43:06">
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>

<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
</p></configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
@@ -732,32 +513,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>yang zhao, edward lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>none</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>
-
-<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>
-
-<p>File names can be specified in several ways:</p>
-
-<ol>
-<li>As a full path, which can be selected via the Browse option.</li>
-
-<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>
-
-<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
-<table>
-<tr><td> $CWD</td><td>The current working directory </td></tr>
-<tr><td>$HOME</td><td>The user's home directory</td></tr>
-<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
-     </table>                   
-</li>
-<li>A special file name. The following file names are understood:
-<table>
-<tr><td> System.in </td><td> Standard input </td></tr>
-<tr><td>System.out</td><td>Standard output</td></tr>
- </table>  
-</li>
-</ol>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
</configure></property>
 <property name="prop:fileParameter" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The specified file or URL.</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:422:1">
         </property>
@@ -791,7 +547,7 @@
         <property name="allowDirectories" class="ptolemy.data.expr.Parameter" value="true">
         </property>
         <property name="" class="ptolemy.vergil.basic.DocAttribute">
-            <property name="description" class="ptolemy.data.expr.StringParameter" value="<p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
">
+            <property name="description" class="ptolemy.kernel.util.StringAttribute" value="<p>The FileParameter specifies a file or URL. The value of the parameter is a string that may contain references to variables within scope (i.e., variables defined at the same level of the hierarchy or higher) using the $ID ${ID}, or $(ID) syntax. </p>

<p>Change the name of the FileParameter to better identify the file it specifies (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the specified file using the $NAME syntax (e.g., $FileParameter or $SourceFile).</p>

<p>File names can be specified in several ways:</p>

<ol>
<li>As a full path, which can be selected via the Browse option.</li>

<li>As a path relative to a base, often the path of the parent workflow. Files specified relative to a base can be kept in the same directory as the parent workflow file, and should be moved together with the workflow. Note: workflows must be saved as MOML files before the workflow path can be used as a base. If the workflow has not been saved to a file, then the class path is used for identifying relative file names. </li>

<li>A path that contains references to system-defined strings via the $NAME syntax (e.g., $CWD or $HOME). The following strings may be useful (to see the values of these strings, select "Check System Settings" from the Tools menu in the Toolbar):
<table>
<tr><td> $CWD</td><td>The current working directory </td></tr>
<tr><td>$HOME</td><td>The user's home directory</td></tr>
<tr><td> $TMPDIR</td><td>The temporary directory</td></tr>
     </table>                   
</li>
<li>A special file name. The following file names are understood:
<table>
<tr><td> System.in </td><td> Standard input </td></tr>
<tr><td>System.out</td><td>Standard output</td></tr>
 </table>  
</li>
</ol>
">
             </property>
             <property name="author" class="ptolemy.kernel.util.StringAttribute" value="yang zhao, edward lee">
             </property>
@@ -829,7 +585,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -863,7 +619,7 @@
         </property>
         <property name="italic" class="ptolemy.data.expr.Parameter" value="false">
         </property>
-        <property name="text" class="ptolemy.kernel.util.StringAttribute" value="Iiinstrument Workflow (v. 0.0.1)">
+        <property name="text" class="ptolemy.kernel.util.StringAttribute" value="Iiinstrument Template Workflow (v. 0.0.1)">
             <property name="_style" class="ptolemy.actor.gui.style.TextStyle">
                 <property name="height" class="ptolemy.data.expr.Parameter" value="20">
                 </property>
@@ -876,13 +632,13 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
 <property name="prop:textSize" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font size. Select an integer from the drop-down menu or specify a new size by typing it directly into the value field.  The default is 14.</configure></property>
 <property name="prop:text" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The text of the annotation.</configure></property>
-</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:2479:34:2">
+</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:25158:86:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.TextAttribute">
             <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1199:1">
@@ -894,6 +650,8 @@
         </property>
         <property name="_location" class="ptolemy.kernel.util.Location" value="[380.0, -120.0]">
         </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org/ns/:2479:34:2">
+        </property>
     </property>
     <property name="Rectangle" class="ptolemy.vergil.kernel.attributes.RectangleAttribute">
         <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
@@ -920,7 +678,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
@@ -928,7 +686,7 @@
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -965,7 +723,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
@@ -973,7 +731,7 @@
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1010,7 +768,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
@@ -1018,7 +776,7 @@
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1055,7 +813,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
@@ -1063,7 +821,7 @@
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1103,7 +861,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1150,7 +908,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1197,7 +955,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1244,7 +1002,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1291,7 +1049,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1338,7 +1096,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1387,7 +1145,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1452,7 +1210,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1517,7 +1275,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1582,7 +1340,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1647,7 +1405,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -1709,7 +1467,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
@@ -1717,7 +1475,7 @@
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1754,7 +1512,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
@@ -1762,7 +1520,7 @@
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1799,52 +1557,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
-<property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
-<property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
-<property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
-<property name="prop:centered" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Indicate whether the shape should be centered on its origin. By default, the location is the upper-left corner.</configure></property>
-<property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
-<property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
-<property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
-</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
-        </property>
-        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
-            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1197:1">
-            </property>
-        </property>
-        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#DecorativeActor">
-        </property>
-        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#WorkflowDocumentation">
-        </property>
-    </property>
-    <property name="Rectangle9" class="ptolemy.vergil.kernel.attributes.RectangleAttribute">
-        <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
-        </property>
-        <property name="_hideAllParameters" class="ptolemy.data.expr.Parameter" value="true">
-        </property>
-        <property name="_location" class="ptolemy.kernel.util.Location" value="[515.0, 615.0]">
-        </property>
-        <property name="lineWidth" class="ptolemy.data.expr.Parameter" value="5">
-        </property>
-        <property name="lineColor" class="ptolemy.actor.gui.ColorAttribute" value="{1.0,1.0,0.0,1.0}">
-        </property>
-        <property name="width" class="ptolemy.data.expr.Parameter" value="112.0">
-        </property>
-        <property name="height" class="ptolemy.data.expr.Parameter" value="24.0">
-        </property>
-        <property name="centered" class="ptolemy.data.expr.Parameter" value="false">
-        </property>
-        <property name="fillColor" class="ptolemy.actor.gui.ColorAttribute" value="none">
-        </property>
-        <property name="rounding" class="ptolemy.data.expr.Parameter" value="0.0">
-        </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
@@ -1852,7 +1565,7 @@
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1889,7 +1602,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Rectangle attribute renders a rectangle on the Workflow canvas. Single-click the rectangle to drag the resize handles and adjust the shape's size, or double-click the rectangle to customize its height, width, line width, color, and fill color.</p></configure></property>
 <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The vertical extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineWidth" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line width. The value is a double that defaults to 1.0.</configure></property>
 <property name="prop:rounding" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The amount of rounding of the corners. The value is a double that defaults to 0.0, which indicates no rounding.</configure></property>
@@ -1897,7 +1610,7 @@
 <property name="prop:dashArray" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Specify a dash-pattern for dashed or dotted lines. The value consists of an array of doubles that specify the length of the alternating solid and transparent segments. An empty value indicates that the line should not be dashed (the default).</configure></property>
 <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The horizontal extent. The value is a double that defaults to 100.0.</configure></property>
 <property name="prop:lineColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The line color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
+<property name="prop:fillColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The fill color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. By default, the value is "none."</configure></property>
 </property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:434:1">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.RectangleAttribute">
@@ -1937,7 +1650,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -2002,7 +1715,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -2049,7 +1762,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -2096,7 +1809,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -2115,7 +1828,7 @@
         <property name="_location" class="ptolemy.kernel.util.Location" value="[545.0, 305.0]">
         </property>
     </property>
-    <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:2479:15:19">
+    <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:26405:3:18">
     </property>
     <property name="Annotation20" class="ptolemy.vergil.kernel.attributes.TextAttribute">
         <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
@@ -2147,7 +1860,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -2184,8 +1897,11 @@
             </property>
         </property>
     </property>
+    <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org/ns/:2479:15:19:urn:lsid:kepler-project.org/ns/:25158:87:133">
+    </property>
     <entity name="DataSetChooser" class="org.eso.DataSetChooser">
-<display name="Data Set Chooser"/>        <property name="Mode" class="ptolemy.data.expr.StringParameter" value="Select">
+        <display name="Data Set Chooser"/>
+        <property name="Mode" class="ptolemy.data.expr.StringParameter" value="Select">
         </property>
         <property name="FITS Viewer" class="ptolemy.data.expr.StringParameter" value="$FITS_VIEWER">
         </property>
@@ -2308,7 +2024,7 @@
     <entity name="Calibration" class="ptolemy.actor.TypedCompositeActor">
         <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
         </property>
-        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
+        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:25158:89:39">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
             <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
@@ -2324,12 +2040,10 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>
-
-<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
 </property>        <property name="_location" class="ptolemy.kernel.util.Location" value="[525.0, 630.0]">
         </property>
-        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={608, 245, 1214, 788}, maximized=false}">
+        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={232, 200, 1249, 810}, maximized=false}">
         </property>
         <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[939, 659]">
         </property>
@@ -2337,1620 +2051,315 @@
         </property>
         <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{362.109375, 367.0512014110756}">
         </property>
-        <property name="EnableInteractivity" class="ptolemy.data.expr.StringParameter" value="true">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
+        <property name="" class="ptolemy.vergil.basic.DocAttribute">
+            <property name="description" class="ptolemy.kernel.util.StringAttribute" value="<p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p>">
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
+            <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Yuhong Xiong">
             </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+            <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
+        </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:actor:449:1">
+        </property>
+        <port name="sof_in" class="ptolemy.actor.TypedIOPort">
+            <property name="input"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
             </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[-40.0, 320.0]">
             </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
+        </port>
+        <port name="sof_out" class="ptolemy.actor.TypedIOPort">
+            <property name="output"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
             </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[745.0, 320.0]">
             </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 80.0]">
+        </port>
+        <entity name="SofSplitter" class="org.eso.SofSplitter">
+            <property name="Group purposes" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-        </property>
-        <property name="INIT_MBOX_X" class="ptolemy.data.expr.StringParameter" value="40">
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SofSplitter takes a set of files as input and split it into smaller sets based on the purpose. This smaller sets can then be sent to e.g. a RecipeExecuter</configure></property>
+<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The input sof</configure></property>
+<property name="port:#groups" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The number of groups generated</configure></property>
+<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The grouped sofs</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:12925:5:1">
             </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
+            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SofSplitter">
+                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
                 </property>
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+            <property name="semanticType" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[80.0, 300.0]">
             </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
+            <port name="sof in" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
                 </property>
+            </port>
+            <port name="sof out" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+            <port name="#groups" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+        </entity>
+        <entity name="SofAccumulator" class="org.eso.SofAccumulator">
+            <property name="same dataset" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 110.0]">
-            </property>
-        </property>
-        <property name="INIT_MBOX_Y" class="ptolemy.data.expr.StringParameter" value="40">
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SofAccumulator is meant to be used together with the SofSplitter: it puts back together in a single set of files the tokens generated by the PurposeSerializer (and usually processed by the RecipeExecuter)</configure></property>
+<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The input sofs</configure></property>
+<property name="port:#groups" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The number of groups to collect</configure></property>
+<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The grouped sof</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:same dataset" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If true the SofAccumulator throws an error if the input tokens do not belong all to the same dataset</configure></property>
+</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:12925:7:1">
             </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
+            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SofAccumulator">
+                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
                 </property>
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
+            <property name="semanticType" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
             </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[495.0, 300.0]">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
+            <port name="sof in" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
                 </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 140.0]">
-            </property>
-        </property>
-        <property name="INIT_TRANS_X" class="ptolemy.data.expr.StringParameter" value="0.0">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
+            </port>
+            <port name="#groups" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
                 </property>
+            </port>
+            <port name="sof out" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+        </entity>
+        <entity name="rrrecipe_calib_1" class="org.eso.RecipeExecuter">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[280.0, 265.0]">
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+        </entity>
+        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
+            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
+        </relation>
+        <relation name="relation4" class="ptolemy.actor.TypedIORelation">
+            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
+        </relation>
+        <relation name="relation5" class="ptolemy.actor.TypedIORelation">
+            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
+        </relation>
+        <relation name="relation6" class="ptolemy.actor.TypedIORelation">
+            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
+        </relation>
+        <relation name="relation" class="ptolemy.actor.TypedIORelation">
+            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 170.0]">
+        </relation>
+        <link port="sof_in" relation="relation5"/>
+        <link port="sof_out" relation="relation4"/>
+        <link port="SofSplitter.sof in" relation="relation5"/>
+        <link port="SofSplitter.sof out" relation="relation6"/>
+        <link port="SofSplitter.#groups" relation="relation3"/>
+        <link port="SofAccumulator.sof in" relation="relation"/>
+        <link port="SofAccumulator.#groups" relation="relation3"/>
+        <link port="SofAccumulator.sof out" relation="relation4"/>
+        <link port="rrrecipe_calib_1.sof in" relation="relation6"/>
+        <link port="rrrecipe_calib_1.sof out" relation="relation"/>
+    </entity>
+    <entity name="Science" class="ptolemy.actor.TypedCompositeActor">
+        <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
+        </property>
+        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:25158:102:35">
+        </property>
+        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
+            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
             </property>
         </property>
-        <property name="INIT_TRANS_Y" class="ptolemy.data.expr.StringParameter" value="0.0">
+        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Actor">
+        </property>
+        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
+        </property>
+        <property name="semanticType22" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
+        </property>
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
+</property>        <property name="_location" class="ptolemy.kernel.util.Location" value="[1225.0, 670.0]">
+        </property>
+        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={118, 133, 1741, 920}, maximized=false}">
+        </property>
+        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[1431, 769]">
+        </property>
+        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.4480599563609">
+        </property>
+        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{191.109375, 38.5276795073376}">
+        </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:actor:449:1">
+        </property>
+        <port name="sof_in" class="ptolemy.actor.TypedIOPort">
+            <property name="input"/>
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[-290.0, 75.0]">
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
+        </port>
+        <port name="sof_out" class="ptolemy.actor.TypedIOPort">
+            <property name="output"/>
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[475.0, 55.0]">
             </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+        </port>
+        <entity name="SofSplitter" class="org.eso.SofSplitter">
+            <property name="Group purposes" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
+<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
+<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SofSplitter takes a set of files as input and split it into smaller sets based on the purpose. This smaller sets can then be sent to e.g. a RecipeExecuter</configure></property>
+<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The input sof</configure></property>
+<property name="port:#groups" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The number of groups generated</configure></property>
+<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The grouped sofs</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:12925:5:1">
             </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
+            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SofSplitter">
+                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
                 </property>
             </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
+            <property name="semanticType" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
             </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[-105.0, 50.0]">
             </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 200.0]">
+            <port name="sof in" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+            <port name="sof out" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+            <port name="#groups" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+        </entity>
+        <entity name="SofAccumulator" class="org.eso.SofAccumulator">
+            <property name="same dataset" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-        </property>
-        <property name="INIT_CCD_ROT_ANGLE_OFF" class="ptolemy.data.expr.StringParameter" value="0.0">
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SofAccumulator is meant to be used together with the SofSplitter: it puts back together in a single set of files the tokens generated by the PurposeSerializer (and usually processed by the RecipeExecuter)</configure></property>
+<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The input sofs</configure></property>
+<property name="port:#groups" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The number of groups to collect</configure></property>
+<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The grouped sof</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:same dataset" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If true the SofAccumulator throws an error if the input tokens do not belong all to the same dataset</configure></property>
+</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:12925:7:1">
             </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
+            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SofAccumulator">
+                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
                 </property>
             </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
+            <property name="semanticType" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
             </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[255.0, 50.0]">
             </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
+            <port name="sof in" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
                 </property>
+            </port>
+            <port name="#groups" class="ptolemy.actor.TypedIOPort">
+                <property name="input"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+            <port name="sof out" class="ptolemy.actor.TypedIOPort">
+                <property name="output"/>
+                <property name="multiport"/>
+                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+                </property>
+            </port>
+        </entity>
+        <entity name="rrrecipe_1" class="org.eso.RecipeExecuter">
+            <property name="_location" class="ptolemy.kernel.util.Location" value="[70.0, 15.0]">
             </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-25.0, 230.0]">
-            </property>
-        </property>
-        <property name="" class="ptolemy.vergil.basic.DocAttribute">
-            <property name="description" class="ptolemy.data.expr.StringParameter" value="<p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p>">
-            </property>
-            <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Yuhong Xiong">
-            </property>
-            <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
-            </property>
-        </property>
-        <property name="Annotation" class="ptolemy.vergil.kernel.attributes.TextAttribute">
-            <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-            <property name="_hideAllParameters" class="ptolemy.data.expr.Parameter" value="true">
-            </property>
-            <property name="textSize" class="ptolemy.data.expr.Parameter" value="11">
-            </property>
-            <property name="textColor" class="ptolemy.actor.gui.ColorAttribute" value="{0.4,0.4,0.0,1.0}">
-            </property>
-            <property name="fontFamily" class="ptolemy.data.expr.StringParameter" value="SansSerif">
-            </property>
-            <property name="bold" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="italic" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="text" class="ptolemy.kernel.util.StringAttribute" value="This actor displays plots of recipe output in an interactive plot
window. The user has the option to continue the workflow using these
results, or re-run the recipe after changing one or several recipe
parameters.">
-                <property name="_style" class="ptolemy.actor.gui.style.TextStyle">
-                    <property name="height" class="ptolemy.data.expr.Parameter" value="20">
-                    </property>
-                    <property name="width" class="ptolemy.data.expr.Parameter" value="80">
-                    </property>
-                </property>
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
-<property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
-<property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
-<property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:textSize" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font size. Select an integer from the drop-down menu or specify a new size by typing it directly into the value field.  The default is 14.</configure></property>
-<property name="prop:text" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The text of the annotation.</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:436:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.TextAttribute">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1199:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#DocumentationActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#WorkflowDocumentation">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[430.0, 30.0]">
-            </property>
-        </property>
-        <port name="sof_in" class="ptolemy.actor.TypedIOPort">
-            <property name="input"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-40.0, 320.0]">
-            </property>
-        </port>
-        <port name="sof_out" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[540.0, 135.0]">
-            </property>
-        </port>
-        <entity name="DisplayResultsAndUserInput" class="org.eso.PythonActor">
-            <property name="Python script" class="ptolemy.data.expr.FileParameter" value="/home/cgarcia/SDD//local/ga014699/share/esopipes/uves-4.8.13/reflex/uves_cal_predict_interact.py">
-            </property>
-            <property name="Run in terminal" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:2:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.PythonActor">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[385.0, 105.0]">
-            </property>
-            <property name="" class="ptolemy.vergil.basic.DocAttribute">
-                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="ESO">
-                </property>
-                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="1.0">
-                </property>
-                <property name="Python script (parameter)" class="ptolemy.data.expr.StringParameter" value="the filename of the script to be executed (full path)">
-                </property>
-                <property name="Run in terminal (parameter)" class="ptolemy.data.expr.StringParameter" value="If true, the script is invoked through an external xterm, this is needed for scripts that write on the standard output or require standard input (e.g. some pyraf tasks)">
-                </property>
-                <property name="class (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-                <property name="semanticType41 (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-                <property name="entityId (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-            </property>
-            <property name="out_sop_loop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoP">
-            </property>
-            <property name="out_sof_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoF">
-            </property>
-            <property name="iteration_complete_conversion_mode" class="ptolemy.data.expr.StringParameter" value="Don't convert">
-            </property>
-            <property name="out_sof_loop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoF">
-            </property>
-            <property name="out_sop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoP">
-            </property>
-            <port name="out_sop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="out_sof_loop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="out_sof" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="out_sop_loop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="iteration_complete" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sof" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sof_rec_orig" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="enable" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-        </entity>
-        <entity name="uves_cal_predict_1" class="org.eso.RecipeExecuter">
-            <property name="Recipe Failure Mode" class="ptolemy.data.expr.StringParameter" value="Ask">
-            </property>
-            <property name="Input Files Tag" class="ptolemy.data.expr.StringParameter" value="LINE_REFER_TABLE,ARC_LAMP_FORM_BLUE,ARC_LAMP_FORM_RED,MASTER_BIAS_BLUE,MASTER_BIAS_REDL,MASTER_BIAS_REDU">
-            </property>
-            <property name="recipe_param_4" class="ptolemy.data.expr.Parameter" value="mbox_x=PORT">
-            </property>
-            <property name="recipe_param_5" class="ptolemy.data.expr.Parameter" value="mbox_y=PORT">
-            </property>
-            <property name="recipe_param_6" class="ptolemy.data.expr.Parameter" value="trans_x=PORT">
-            </property>
-            <property name="recipe_param_7" class="ptolemy.data.expr.Parameter" value="trans_y=PORT">
-            </property>
-            <property name="recipe_param_8" class="ptolemy.data.expr.Parameter" value="ech_angle_off=0.0">
-            </property>
-            <property name="recipe_param_9" class="ptolemy.data.expr.Parameter" value="cd_angle_off=0.0">
-            </property>
-            <property name="recipe_param_10" class="ptolemy.data.expr.Parameter" value="ccd_rot_angle_off=PORT">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[425.0, 310.0]">
-            </property>
-            <port name="sof in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="sop in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="logs" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-            <port name="sof out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="sop out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-        </entity>
-        <entity name="InitPredictParam" class="ptolemy.actor.lib.StringConst">
-            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
-            </property>
-            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
-            </property>
-            <property name="value" class="ptolemy.data.expr.Parameter" value="uves_cal_predict:mbox_x=$INIT_MBOX_X,uves_cal_predict:mbox_y=$INIT_MBOX_Y,uves_cal_predict:trans_x=$INIT_TRANS_X,uves_cal_predict:trans_y=$INIT_TRANS_Y,uves_cal_predict:ccd_rot_angle_off=$INIT_CCD_ROT_ANGLE_OFF">
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
-<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
-<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
-<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
-<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:204:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.StringConst">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1052:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StringFunctionActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
-                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
-                </property>
-                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
-                </property>
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[100.0, 465.0]">
-            </property>
-            <property name="" class="ptolemy.vergil.basic.DocAttribute">
-                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Edward Lee">
-                </property>
-                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-                <property name="firingCountLimit (parameter)" class="ptolemy.data.expr.StringParameter" value="The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.">
-                </property>
-                <property name="value (parameter)" class="ptolemy.data.expr.StringParameter" value="The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)">
-                </property>
-                <property name="output (port)" class="ptolemy.kernel.util.StringAttribute" value="An output port that broadcasts a string constant specified by the value parameter.  ">
-                </property>
-                <property name="trigger (port)" class="ptolemy.kernel.util.StringAttribute" value="A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. ">
-                </property>
-            </property>
-        </entity>
-        <entity name="String Constant" class="ptolemy.actor.lib.StringConst">
-            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
-            </property>
-            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
-            </property>
-            <property name="value" class="ptolemy.data.expr.Parameter" value="$EnableInteractivity">
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
-<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
-<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
-<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
-<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:204:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.StringConst">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1052:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StringFunctionActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
-                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
-                </property>
-                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
-                </property>
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[310.0, 225.0]">
-            </property>
-        </entity>
-        <entity name="RecipeLooper" class="org.eso.RecipeLooper">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>1.0</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The RecipeLooper is an actor designed to implement looping capabilities within workflows. It has two set of input ports and a control port: at first it receives a token from the ?standard? input ports, and then it receives a token from the looping input ports until the control port contains a string token whose value is ?false?. When the control port contains a ?true? the actor resets and starts over.</configure></property>
-<property name="port:sof loop" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>files to be used for iteration</configure></property>
-<property name="port:iteration complete" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>control port</configure></property>
-<property name="port:sop in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>the initial recipe parameters</configure></property>
-<property name="port:sop loop" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>parameters to be used in the current iteration</configure></property>
-<property name="port:sop out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>output parameters to be used by the recipe executer</configure></property>
-<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>the input files</configure></property>
-<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>output files</configure></property>
-<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:14:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.RecipeLooper">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[135.0, 310.0]">
-            </property>
-            <port name="sof in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="multiport"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="sop in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="sof loop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="iteration complete" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-            <port name="sop loop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-        </entity>
-        <entity name="SopCreator" class="org.eso.SopCreator">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>1.0</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SopCreator converts a string to a SoP</configure></property>
-<property name="port:in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>a string in the format described in Appendix A</configure></property>
-<property name="port:out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>a SoP</configure></property>
-<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:17:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SopCreator">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[365.0, 445.0]">
-            </property>
-            <port name="in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
-                </property>
-            </port>
-            <port name="out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
-                </property>
-            </port>
-        </entity>
-        <relation name="relation7" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-            <vertex name="vertex" value="[230.0, 320.0]">
-            </vertex>
-        </relation>
-        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation4" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation12" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-            <vertex name="vertex1" value="[40.0, 320.0]">
-            </vertex>
-        </relation>
-        <relation name="relation" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation10" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation8" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation6" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation9" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation5" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation11" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <link port="sof_in" relation="relation12"/>
-        <link port="sof_out" relation="relation2"/>
-        <link port="DisplayResultsAndUserInput.out_sof_loop" relation="relation9"/>
-        <link port="DisplayResultsAndUserInput.out_sof" relation="relation2"/>
-        <link port="DisplayResultsAndUserInput.out_sop_loop" relation="relation8"/>
-        <link port="DisplayResultsAndUserInput.iteration_complete" relation="relation6"/>
-        <link port="DisplayResultsAndUserInput.in_sof" relation="relation3"/>
-        <link port="DisplayResultsAndUserInput.in_sop" relation="relation4"/>
-        <link port="DisplayResultsAndUserInput.in_sof_rec_orig" relation="relation7"/>
-        <link port="DisplayResultsAndUserInput.enable" relation="relation"/>
-        <link port="uves_cal_predict_1.sof in" relation="relation7"/>
-        <link port="uves_cal_predict_1.sop in" relation="relation10"/>
-        <link port="uves_cal_predict_1.sof out" relation="relation3"/>
-        <link port="uves_cal_predict_1.sop out" relation="relation4"/>
-        <link port="InitPredictParam.output" relation="relation5"/>
-        <link port="InitPredictParam.trigger" relation="relation12"/>
-        <link port="String Constant.output" relation="relation"/>
-        <link port="String Constant.trigger" relation="relation7"/>
-        <link port="RecipeLooper.sof in" relation="relation12"/>
-        <link port="RecipeLooper.sop in" relation="relation11"/>
-        <link port="RecipeLooper.sof loop" relation="relation9"/>
-        <link port="RecipeLooper.iteration complete" relation="relation6"/>
-        <link port="RecipeLooper.sop loop" relation="relation8"/>
-        <link port="RecipeLooper.sof out" relation="relation7"/>
-        <link port="RecipeLooper.sop out" relation="relation10"/>
-        <link port="SopCreator.in" relation="relation5"/>
-        <link port="SopCreator.out" relation="relation11"/>
-    </entity>
-    <entity name="Spectrum Extraction" class="ptolemy.actor.TypedCompositeActor">
-        <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
-        </property>
-        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
-        </property>
-        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.TypedCompositeActor">
-            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:449:1">
-            </property>
-        </property>
-        <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Actor">
-        </property>
-        <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#GeneralPurpose">
-        </property>
-        <property name="semanticType22" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Workflow">
-        </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>
-
-<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
-</property>        <property name="_location" class="ptolemy.kernel.util.Location" value="[1095.0, 630.0]">
-        </property>
-        <property name="EnableInteractivity" class="ptolemy.data.expr.StringParameter" value="true">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -190.0]">
-            </property>
-        </property>
-        <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={118, 133, 1706, 898}, maximized=false}">
-        </property>
-        <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[1431, 769]">
-        </property>
-        <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.4480599563609">
-        </property>
-        <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{191.109375, 38.5276795073376}">
-        </property>
-        <property name="INIT_EXTRACT_METHOD" class="ptolemy.data.expr.StringParameter" value="optimal">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -170.0]">
-            </property>
-        </property>
-        <property name="INIT_EXTRACT_KAPPA" class="ptolemy.data.expr.StringParameter" value="10.0">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -150.0]">
-            </property>
-        </property>
-        <property name="INIT_EXTRACT_PROFILE" class="ptolemy.data.expr.StringParameter" value="auto">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -130.0]">
-            </property>
-        </property>
-        <property name="INIT_EXTRACT_SKYMETHOD" class="ptolemy.data.expr.StringParameter" value="optimal">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -110.0]">
-            </property>
-        </property>
-        <property name="INIT_EXTRACT_OVERSAMPLE" class="ptolemy.data.expr.StringParameter" value="-1">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -90.0]">
-            </property>
-        </property>
-        <property name="INIT_SLITLENGTH" class="ptolemy.data.expr.StringParameter" value="-1.0">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -70.0]">
-            </property>
-        </property>
-        <property name="INIT_OBJOFFSET" class="ptolemy.data.expr.StringParameter" value="0.0">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -50.0]">
-            </property>
-        </property>
-        <property name="INIT_REBIN_WAVESTEP" class="ptolemy.data.expr.StringParameter" value="-1.0">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>StringParameter specifies a persistent string. </p>
-
-<p>Change the name of the StringParameter to better identify the specified value (right-click the parameter and select "Customize Name" from the menu). Other actors may refer to the StringParameter using the $NAME syntax (e.g. $Parameter).
-</p></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:421:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.data.expr.StringParameter">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1185:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#Parameter">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Parameter">
-            </property>
-            <property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
-                <property name="_color" class="ptolemy.actor.gui.ColorAttribute" value="{1.0, 0.0, 0.0, 1.0}">
-                </property>
-            </property>
-            <property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
-                <configure>
-        <svg>
-          <text x="20" style="font-size:14; font-family:SansSerif; fill:red" y="20">-S-</text>
-        </svg>
-      </configure>
-            </property>
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-285.0, -30.0]">
-            </property>
-        </property>
-        <property name="Annotation" class="ptolemy.vergil.kernel.attributes.TextAttribute">
-            <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-            <property name="_hideAllParameters" class="ptolemy.data.expr.Parameter" value="true">
-            </property>
-            <property name="textSize" class="ptolemy.data.expr.Parameter" value="11">
-            </property>
-            <property name="textColor" class="ptolemy.actor.gui.ColorAttribute" value="{0.4,0.4,0.0,1.0}">
-            </property>
-            <property name="fontFamily" class="ptolemy.data.expr.StringParameter" value="SansSerif">
-            </property>
-            <property name="bold" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="italic" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="text" class="ptolemy.kernel.util.StringAttribute" value="This actor displays plots of recipe output in an interactive plot
window. The user has the option to continue the workflow using these
results, or re-run the recipe after changing one or several recipe
parameters.">
-                <property name="_style" class="ptolemy.actor.gui.style.TextStyle">
-                    <property name="height" class="ptolemy.data.expr.Parameter" value="20">
-                    </property>
-                    <property name="width" class="ptolemy.data.expr.Parameter" value="80">
-                    </property>
-                </property>
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
-<property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
-<property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
-<property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
-<property name="prop:textSize" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font size. Select an integer from the drop-down menu or specify a new size by typing it directly into the value field.  The default is 14.</configure></property>
-<property name="prop:text" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The text of the annotation.</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:436:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.vergil.kernel.attributes.TextAttribute">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1199:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#DocumentationActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#WorkflowDocumentation">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[270.0, -225.0]">
-            </property>
-        </property>
-        <port name="sof_in" class="ptolemy.actor.TypedIOPort">
-            <property name="input"/>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-290.0, 75.0]">
-            </property>
-        </port>
-        <port name="sof_out" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[360.0, -120.0]">
-            </property>
-        </port>
-        <entity name="String Constant" class="ptolemy.actor.lib.StringConst">
-            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
-            </property>
-            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
-            </property>
-            <property name="value" class="ptolemy.data.expr.Parameter" value="$EnableInteractivity">
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
-<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
-<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
-<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
-<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:204:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.StringConst">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1052:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StringFunctionActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
-                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
-                </property>
-                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
-                </property>
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[110.0, -10.0]">
-            </property>
-        </entity>
-        <entity name="InitPredictParam" class="ptolemy.actor.lib.StringConst">
-            <property name="firingCountLimit" class="ptolemy.data.expr.Parameter" value="NONE">
-            </property>
-            <property name="NONE" class="ptolemy.data.expr.Parameter" value="0">
-            </property>
-            <property name="value" class="ptolemy.data.expr.Parameter" value="uves_obs_scired:reduce.extract.method=$INIT_EXTRACT_METHOD,uves_obs_scired:reduce.extract.kappa=$INIT_EXTRACT_KAPPA,uves_obs_scired:reduce.extract.profile=$INIT_EXTRACT_PROFILE,uves_obs_scired:reduce.extract.skymethod=$INIT_EXTRACT_SKYMETHOD,uves_obs_scired:reduce.extract.oversample=$INIT_EXTRACT_OVERSAMPLE,uves_obs_scired:reduce.slitlength=$INIT_SLITLENGTH,uves_obs_scired:reduce.objoffset=$INIT_OBJOFFSET,uves_obs_scired:reduce.rebin.wavestep=$INIT_REBIN_WAVESTEP">
-            </property>
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
-<property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
-<property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
-<property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
-<property name="prop:value" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)</configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:204:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.StringConst">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="urn:lsid:kepler-project.org:class:1052:1">
-                </property>
-            </property>
-            <property name="semanticType00" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:1:1#StringFunctionActor">
-            </property>
-            <property name="semanticType11" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:2:1#Constant">
-            </property>
-            <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
-                <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
-                </property>
-                <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="60">
-                </property>
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-40.0, 270.0]">
-            </property>
-            <property name="" class="ptolemy.vergil.basic.DocAttribute">
-                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="Edward Lee">
-                </property>
-                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-                <property name="firingCountLimit (parameter)" class="ptolemy.data.expr.StringParameter" value="The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.">
-                </property>
-                <property name="value (parameter)" class="ptolemy.data.expr.StringParameter" value="The value produced by the actor. Specified strings do not require enclosing quotes. (To include a '$' sign in the string, enter '$$'.)">
-                </property>
-                <property name="output (port)" class="ptolemy.kernel.util.StringAttribute" value="An output port that broadcasts a string constant specified by the value parameter.  ">
-                </property>
-                <property name="trigger (port)" class="ptolemy.kernel.util.StringAttribute" value="A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. ">
-                </property>
-            </property>
-        </entity>
-        <entity name="DisplayResultsAndUserInput" class="org.eso.PythonActor">
-            <property name="Python script" class="ptolemy.data.expr.FileParameter" value="/home/cgarcia/SDD//local/ga014699/share/esopipes/uves-4.8.13/reflex/uves_obs_scired_interact.py">
-            </property>
-            <property name="Run in terminal" class="ptolemy.data.expr.Parameter" value="false">
-            </property>
-            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:2:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.PythonActor">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[225.0, -145.0]">
-            </property>
-            <property name="" class="ptolemy.vergil.basic.DocAttribute">
-                <property name="author" class="ptolemy.kernel.util.StringAttribute" value="ESO">
-                </property>
-                <property name="version" class="ptolemy.kernel.util.StringAttribute" value="1.0">
-                </property>
-                <property name="Python script (parameter)" class="ptolemy.data.expr.StringParameter" value="the filename of the script to be executed (full path)">
-                </property>
-                <property name="Run in terminal (parameter)" class="ptolemy.data.expr.StringParameter" value="If true, the script is invoked through an external xterm, this is needed for scripts that write on the standard output or require standard input (e.g. some pyraf tasks)">
-                </property>
-                <property name="class (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-                <property name="semanticType41 (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-                <property name="entityId (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-                </property>
-            </property>
-            <property name="out_sop_loop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoP">
-            </property>
-            <property name="out_sof_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoF">
-            </property>
-            <property name="iteration_complete_conversion_mode" class="ptolemy.data.expr.StringParameter" value="Don't convert">
-            </property>
-            <property name="out_sof_loop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoF">
-            </property>
-            <property name="out_sop_conversion_mode" class="ptolemy.data.expr.StringParameter" value="SoP">
-            </property>
-            <port name="out_sop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="out_sof_loop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="out_sof" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="out_sop_loop" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="iteration_complete" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sof" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="in_sof_rec_orig" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="enable" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-        </entity>
-        <entity name="uves_obs_scired_1" class="org.eso.RecipeExecuter">
-            <property name="Lazy Mode" class="ptolemy.data.expr.Parameter" value="true">
-            </property>
-            <property name="Recipe Failure Mode" class="ptolemy.data.expr.StringParameter" value="Ask">
-            </property>
-            <property name="Input Files Tag" class="ptolemy.data.expr.StringParameter" value="SCI_POINT_BLUE,SCI_POINT_RED,SCI_SLICER_BLUE,SCI_SLICER_RED,SCI_EXTND_BLUE,SCI_EXTND_RED,ORDER_TABLE_BLUE,ORDER_TABLE_REDL,ORDER_TABLE_REDU,LINE_TABLE_BLUE,LINE_TABLE_REDL,LINE_TABLE_REDU,MASTER_BIAS_BLUE,MASTER_BIAS_REDL,MASTER_BIAS_REDU,MASTER_DARK_BLUE,MASTER_DARK_REDL,MASTER_DARK_REDU,MASTER_FLAT_BLUE,MASTER_FLAT_REDL,MASTER_FLAT_REDU,EXTCOEFF_TABLE,INSTR_RESPONSE_BLUE,INSTR_RESPONSE_REDL,INSTR_RESPONSE_REDU,MASTER_RESPONSE_BLUE,MASTER_RESPONSE_REDL,MASTER_RESPONSE_REDU,ORDER_QUAL_BLUE,ORDER_QUAL_REDL,ORDER_QUAL_REDU">
-            </property>
-            <property name="Output Files Tag" class="ptolemy.data.expr.StringParameter" value="RED_SCI_POINT_BLUE,RED_SCI_POINT_REDL,RED_SCI_POINT_REDU,ERRORBAR_SCI_POINT_BLUE,ERRORBAR_SCI_POINT_REDL,ERRORBAR_SCI_POINT_REDU,FLUXCAL_SCI_POINT_BLUE,FLUXCAL_SCI_POINT_REDL,FLUXCAL_SCI_POINT_REDU,FLUXCAL_ERRORBAR_SCI_POINT_BLUE,FLUXCAL_ERRORBAR_SCI_POINT_REDL,FLUXCAL_ERRORBAR_SCI_POINT_REDU,ORDER_EXTRACT_QC_BLUE,ORDER_EXTRACT_QC_REDL,ORDER_EXTRACT_QC_REDU">
-            </property>
-            <property name="recipe_param_4" class="ptolemy.data.expr.Parameter" value="clean_traps=FALSE">
-            </property>
-            <property name="recipe_param_5" class="ptolemy.data.expr.Parameter" value="reduce.backsub.mmethod=median">
-            </property>
-            <property name="recipe_param_6" class="ptolemy.data.expr.Parameter" value="reduce.backsub.npoints=82">
-            </property>
-            <property name="recipe_param_7" class="ptolemy.data.expr.Parameter" value="reduce.backsub.radiusy=2">
-            </property>
-            <property name="recipe_param_8" class="ptolemy.data.expr.Parameter" value="reduce.backsub.sdegree=1">
-            </property>
-            <property name="recipe_param_9" class="ptolemy.data.expr.Parameter" value="reduce.backsub.smoothx=-1.0">
-            </property>
-            <property name="recipe_param_10" class="ptolemy.data.expr.Parameter" value="reduce.backsub.smoothy=-1.0">
-            </property>
-            <property name="recipe_param_11" class="ptolemy.data.expr.Parameter" value="reduce.extract.method=PORT">
-            </property>
-            <property name="recipe_param_12" class="ptolemy.data.expr.Parameter" value="reduce.extract.kappa=PORT">
-            </property>
-            <property name="recipe_param_13" class="ptolemy.data.expr.Parameter" value="reduce.extract.chunk=32">
-            </property>
-            <property name="recipe_param_14" class="ptolemy.data.expr.Parameter" value="reduce.extract.profile=PORT">
-            </property>
-            <property name="recipe_param_15" class="ptolemy.data.expr.Parameter" value="reduce.extract.skymethod=PORT">
-            </property>
-            <property name="recipe_param_16" class="ptolemy.data.expr.Parameter" value="reduce.extract.oversample=PORT">
-            </property>
-            <property name="recipe_param_17" class="ptolemy.data.expr.Parameter" value="reduce.extract.best=TRUE">
-            </property>
-            <property name="recipe_param_18" class="ptolemy.data.expr.Parameter" value="reduce.slitlength=PORT">
-            </property>
-            <property name="recipe_param_19" class="ptolemy.data.expr.Parameter" value="reduce.skysub=TRUE">
-            </property>
-            <property name="recipe_param_20" class="ptolemy.data.expr.Parameter" value="reduce.objoffset=PORT">
-            </property>
-            <property name="recipe_param_21" class="ptolemy.data.expr.Parameter" value="reduce.objslit=-1.0">
-            </property>
-            <property name="recipe_param_22" class="ptolemy.data.expr.Parameter" value="reduce.tiltcorr=TRUE">
-            </property>
-            <property name="recipe_param_23" class="ptolemy.data.expr.Parameter" value="reduce.ffmethod=extract">
-            </property>
-            <property name="recipe_param_24" class="ptolemy.data.expr.Parameter" value="reduce.rebin.wavestep=PORT">
-            </property>
-            <property name="recipe_param_25" class="ptolemy.data.expr.Parameter" value="reduce.rebin.scale=FALSE">
-            </property>
-            <property name="recipe_param_26" class="ptolemy.data.expr.Parameter" value="reduce.merge=optimal">
-            </property>
-            <property name="recipe_param_27" class="ptolemy.data.expr.Parameter" value="reduce.merge_delt1=0.0">
-            </property>
-            <property name="recipe_param_28" class="ptolemy.data.expr.Parameter" value="reduce.merge_delt2=0.0">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[225.0, 75.0]">
-            </property>
-            <port name="sof in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="multiport"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="sop in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-            </port>
-            <port name="sof out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="multiport"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
-                </property>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-            <port name="sop out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-        </entity>
-        <entity name="RecipeLooper" class="org.eso.RecipeLooper">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>1.0</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The RecipeLooper is an actor designed to implement looping capabilities within workflows. It has two set of input ports and a control port: at first it receives a token from the ?standard? input ports, and then it receives a token from the looping input ports until the control port contains a string token whose value is ?false?. When the control port contains a ?true? the actor resets and starts over.</configure></property>
-<property name="port:sof loop" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>files to be used for iteration</configure></property>
-<property name="port:iteration complete" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>control port</configure></property>
-<property name="port:sop in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>the initial recipe parameters</configure></property>
-<property name="port:sop loop" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>parameters to be used in the current iteration</configure></property>
-<property name="port:sop out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>output parameters to be used by the recipe executer</configure></property>
-<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>the input files</configure></property>
-<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>output files</configure></property>
-<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:14:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.RecipeLooper">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[-90.0, 75.0]">
-            </property>
-            <port name="sof in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="multiport"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="sop in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="sof loop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-            <port name="iteration complete" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-            </port>
-            <port name="sop loop" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-                </property>
-                <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-                </property>
-            </port>
-        </entity>
-        <entity name="SopCreator" class="org.eso.SopCreator">
-<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
-<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>1.0</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SopCreator converts a string to a SoP</configure></property>
-<property name="port:in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>a string in the format described in Appendix A</configure></property>
-<property name="port:out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>a SoP</configure></property>
-<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-</property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:17:1">
-            </property>
-            <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SopCreator">
-                <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
-                </property>
-            </property>
-            <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
-            </property>
-            <property name="_location" class="ptolemy.kernel.util.Location" value="[230.0, 250.0]">
-            </property>
-            <port name="in" class="ptolemy.actor.TypedIOPort">
-                <property name="input"/>
-                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
-                </property>
-            </port>
-            <port name="out" class="ptolemy.actor.TypedIOPort">
-                <property name="output"/>
-                <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
-                </property>
-            </port>
         </entity>
-        <relation name="relation6" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation10" class="ptolemy.actor.TypedIORelation">
+        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
             <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <vertex name="vertex" value="[25.0, 75.0]">
-            </vertex>
         </relation>
         <relation name="relation" class="ptolemy.actor.TypedIORelation">
             <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
-            <vertex name="vertex1" value="[-160.0, 75.0]">
-            </vertex>
-        </relation>
-        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation11" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation12" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation7" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation8" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
-        </relation>
-        <relation name="relation9" class="ptolemy.actor.TypedIORelation">
-            <property name="width" class="ptolemy.data.expr.Parameter" value="1">
-            </property>
         </relation>
-        <relation name="relation2" class="ptolemy.actor.TypedIORelation">
+        <relation name="relation5" class="ptolemy.actor.TypedIORelation">
             <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
         </relation>
-        <relation name="relation5" class="ptolemy.actor.TypedIORelation">
+        <relation name="relation6" class="ptolemy.actor.TypedIORelation">
             <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
         </relation>
-        <relation name="relation4" class="ptolemy.actor.TypedIORelation">
+        <relation name="relation3" class="ptolemy.actor.TypedIORelation">
             <property name="width" class="ptolemy.data.expr.Parameter" value="1">
             </property>
         </relation>
-        <link port="sof_in" relation="relation"/>
-        <link port="sof_out" relation="relation3"/>
-        <link port="String Constant.output" relation="relation6"/>
-        <link port="String Constant.trigger" relation="relation10"/>
-        <link port="InitPredictParam.output" relation="relation5"/>
-        <link port="InitPredictParam.trigger" relation="relation"/>
-        <link port="DisplayResultsAndUserInput.out_sof_loop" relation="relation2"/>
-        <link port="DisplayResultsAndUserInput.out_sof" relation="relation3"/>
-        <link port="DisplayResultsAndUserInput.out_sop_loop" relation="relation8"/>
-        <link port="DisplayResultsAndUserInput.iteration_complete" relation="relation9"/>
-        <link port="DisplayResultsAndUserInput.in_sof" relation="relation11"/>
-        <link port="DisplayResultsAndUserInput.in_sop" relation="relation12"/>
-        <link port="DisplayResultsAndUserInput.in_sof_rec_orig" relation="relation10"/>
-        <link port="DisplayResultsAndUserInput.enable" relation="relation6"/>
-        <link port="uves_obs_scired_1.sof in" relation="relation10"/>
-        <link port="uves_obs_scired_1.sop in" relation="relation7"/>
-        <link port="uves_obs_scired_1.sof out" relation="relation11"/>
-        <link port="uves_obs_scired_1.sop out" relation="relation12"/>
-        <link port="RecipeLooper.sof in" relation="relation"/>
-        <link port="RecipeLooper.sop in" relation="relation4"/>
-        <link port="RecipeLooper.sof loop" relation="relation2"/>
-        <link port="RecipeLooper.iteration complete" relation="relation9"/>
-        <link port="RecipeLooper.sop loop" relation="relation8"/>
-        <link port="RecipeLooper.sof out" relation="relation10"/>
-        <link port="RecipeLooper.sop out" relation="relation7"/>
-        <link port="SopCreator.in" relation="relation5"/>
-        <link port="SopCreator.out" relation="relation4"/>
+        <link port="sof_in" relation="relation2"/>
+        <link port="sof_out" relation="relation5"/>
+        <link port="SofSplitter.sof in" relation="relation2"/>
+        <link port="SofSplitter.sof out" relation="relation6"/>
+        <link port="SofSplitter.#groups" relation="relation"/>
+        <link port="SofAccumulator.sof in" relation="relation3"/>
+        <link port="SofAccumulator.#groups" relation="relation"/>
+        <link port="SofAccumulator.sof out" relation="relation5"/>
+        <link port="rrrecipe_1.sof in" relation="relation6"/>
+        <link port="rrrecipe_1.sof out" relation="relation3"/>
     </entity>
     <entity name="Initialize" class="ptolemy.actor.TypedCompositeActor">
-<display name="Initialise"/>        <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
+        <display name="Initialise"/>
+        <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.0.2">
         </property>
         <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:449:1">
         </property>
@@ -3968,9 +2377,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>
-
-<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
 </property>        <property name="_location" class="ptolemy.kernel.util.Location" value="[120.0, 550.0]">
         </property>
         <property name="Annotation" class="ptolemy.vergil.kernel.attributes.TextAttribute">
@@ -4001,7 +2408,7 @@
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -4046,15 +2453,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>

<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>

<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>

<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>

</configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
 <property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
@@ -4087,13 +2486,7 @@
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee, Steve Neuendorffer, Jerome Blanc</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
-If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
-If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
-Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
-The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
-The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:10:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.SetVariable">
@@ -4125,15 +2518,7 @@ The variable can occur anywhere in the hierarchy above the current level. If the
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>

<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>

<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>

<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>

</configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
 <property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
@@ -4164,11 +2549,10 @@ The variable can occur anywhere in the hierarchy above the current level. If the
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Wibke Sudholt</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>
-The StringAccumulator actor reads multiple strings via its input port and outputs a string containing all of the input values. The characters separating the substrings in the output string can be specified with the substringSeparator parameter.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>
The StringAccumulator actor reads multiple strings via its input port and outputs a string containing all of the input values. The characters separating the substrings in the output string can be specified with the substringSeparator parameter.</p></configure></property>
 <property name="port:whole" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the full string.</configure></property>
 <property name="port:parts" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts substrings.</configure></property>
-<property name="prop:Substring separator" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The characters used to separate the elements in the output string. By default, the value is "".</configure></property>
+<property name="prop:Substring separator" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The characters used to separate the elements in the output string. By default, the value is "".</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:292:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.resurgence.actor.StringAccumulator">
@@ -4203,9 +2587,7 @@ The StringAccumulator actor reads multiple strings via its input port and output
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Ilkay Altintas</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The TimeStamp actor outputs the current date and time.</p>
-
-<p>Dates and times can be formatted in a variety of ways. Select a format from the drop-down menu beside the format parameter, or enter a pattern directly into the format field. For more information about date format patterns, see http://java.sun.com/docs/books/tutorial/i18n/format/datepattern.html.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The TimeStamp actor outputs the current date and time.</p>

<p>Dates and times can be formatted in a variety of ways. Select a format from the drop-down menu beside the format parameter, or enter a pattern directly into the format field. For more information about date format patterns, see http://java.sun.com/docs/books/tutorial/i18n/format/datepattern.html.</p></configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the current time stamp as a string.</configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
 <property name="prop:format" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The date format. Select a format string from the drop-down menu or type in a custom format string directly into the field. For more information about date formatting patterns, see http://java.sun.com/docs/books/tutorial/i18n/format/datepattern.html</configure></property>
@@ -4245,13 +2627,7 @@ The StringAccumulator actor reads multiple strings via its input port and output
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee, Steve Neuendorffer, Jerome Blanc</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
-If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
-If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
-Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
-The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
-The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:10:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.SetVariable">
@@ -4293,49 +2669,19 @@ The variable can occur anywhere in the hierarchy above the current level. If the
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Xiaojun Liu, Edward A. Lee, Steve Neuendorffer</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-<p>The External Execution actor executes a system command from a workflow. The actor accepts a command, a directory and environment in which to execute the command, and a command input string. Once the command has finished executing, the actor will output the execution results along with any errors. If no results are generated, the actor will output an empty string.</p>
-
-<p>The External Execution actor depends on system-specific executables and is operating-system specific.</p>
-
-<p>To mimic the effect of executing a command in a shell interpreter, set the command parameter to "cmd" (Windows) or "sh" (Windows with Cygwin or Linux), and then provide commands, as a string, via the input port. Note that each passed command must be terminated with a newline. For example, to open a workflow in vergil and run it, set command to "sh" and use a StringConstant actor to pass the  input port the string: 
- "vergil -run model.xml\n exit\n"</p>
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
<p>The External Execution actor executes a system command from a workflow. The actor accepts a command, a directory and environment in which to execute the command, and a command input string. Once the command has finished executing, the actor will output the execution results along with any errors. If no results are generated, the actor will output an empty string.</p>

<p>The External Execution actor depends on system-specific executables and is operating-system specific.</p>

<p>To mimic the effect of executing a command in a shell interpreter, set the command parameter to "cmd" (Windows) or "sh" (Windows with Cygwin or Linux), and then provide commands, as a string, via the input port. Note that each passed command must be terminated with a newline. For example, to open a workflow in vergil and run it, set command to "sh" and use a StringConstant actor to pass the  input port the string: 
 "vergil -run model.xml\n exit\n"</p>
</configure></property>
 <property name="port:input" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An input port that accepts strings to pass to the standard input of the subprocess. Note that a newline is not appended to the string. If you require a newline, add one using the AddSubtract actor. This port is an input port of type String.</configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts data generated by the executed command, output as a string after the command has finished executing. If the command generates no data on standard out, then the empty string (a string of length zero) is generated. </configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If connected, a token must be available on this port before actor will execute.</configure></property>
 <property name="port:error" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts any errors generated by the command execution. Errors are output as a string after the command has finished executing. If the execution generates no errors, an empty string is output. </configure></property>
 <property name="port:exitCode" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the command's exit code. A non-zero value signifies an error.</configure></property>
-<property name="prop:environment" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An array of records that name an environment variable and a value:
- 
-  {{name = "NAME1", value = "value1"}...}
-  
-Where NAME1 is the name of the environment variable, and value1 is the value. 
-For example, {{name = "PTII", value = "c:/ptII"}} would set the value of the PTII to c:/ptII. 
-If the parameter is set to {{name="", value = ""}}, then the environment from the parent process is used. If environmental variables are set with the parameter, the parent values may not be passed to the process. To view the current environment, use the "env" command.
-</configure></property>
+<property name="prop:environment" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An array of records that name an environment variable and a value:
 
  {{name = "NAME1", value = "value1"}...}
  
Where NAME1 is the name of the environment variable, and value1 is the value. 
For example, {{name = "PTII", value = "c:/ptII"}} would set the value of the PTII to c:/ptII. 
If the parameter is set to {{name="", value = ""}}, then the environment from the parent process is used. If environmental variables are set with the parameter, the parent values may not be passed to the process. To view the current environment, use the "env" command.
</configure></property>
 <property name="prop:directory" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The directory in which to execute the command. The default value of this parameter $CWD, which represents the user's current working or home directory. </configure></property>
 <property name="prop:throwExceptionOnNonZeroReturn" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If true, then throw an exception if the subprocess returns non-zero.</configure></property>
 <property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If a positive integer, then it is the maximum number of times to execute the actor.</configure></property>
-<property name="prop:prependPlatformDependentShellCommand" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-If true, then prepend the platform dependent shell command to the
-parsed value of the command parameter.  By setting this argument
-to true, it is possible to invoke commands in a platform neutral
-method.
-<p>Under Windows NT or XP, the arguments "cmd.exe" and "/C" are
-prepended.  Under Windows 95, the arguments "command.com" and "/C"
-are prepended.  Under all other platforms, the arguments "/bin/sh"
-and "-c" are prepended. </p>
-<p>The default value of this parameter is a boolean of value false,
-which allows the user to arbitrarily invoke /bin/sh scripts on all
-platforms. </p>
-<p><b>NOTE:</b> This must be true if file redirection is used in <i>command</i>.</p>
-<p><b>NOTE:</b> Under Cygwin, if true, the path environment of the subprocess is not
-identical to the path of the calling process. In this case the full path to the program
-must be specified.</p>
-</configure></property>
+<property name="prop:prependPlatformDependentShellCommand" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
If true, then prepend the platform dependent shell command to the
parsed value of the command parameter.  By setting this argument
to true, it is possible to invoke commands in a platform neutral
method.
<p>Under Windows NT or XP, the arguments "cmd.exe" and "/C" are
prepended.  Under Windows 95, the arguments "command.com" and "/C"
are prepended.  Under all other platforms, the arguments "/bin/sh"
and "-c" are prepended. </p>
<p>The default value of this parameter is a boolean of value false,
which allows the user to arbitrarily invoke /bin/sh scripts on all
platforms. </p>
<p><b>NOTE:</b> This must be true if file redirection is used in <i>command</i>.</p>
<p><b>NOTE:</b> Under Cygwin, if true, the path environment of the subprocess is not
identical to the path of the calling process. In this case the full path to the program
must be specified.</p>
</configure></property>
 <property name="prop:waitForProcess" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If true, then actor will wait until subprocess completes.</configure></property>
-<property name="prop:command" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The command to be executed (e.g., echo "Hello, world."). The command can be specified via either the command port or parameter.</configure></property>
+<property name="prop:command" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The command to be executed (e.g., echo "Hello, world."). The command can be specified via either the command port or parameter.</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:102:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.Exec">
@@ -4415,15 +2761,7 @@ must be specified.</p>
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>

<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>

<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>

<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>

</configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
 <property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
@@ -4520,9 +2858,7 @@ must be specified.</p>
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>
-
-<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>A Composite actor is an aggregation of actors. It may have a local director that is responsible for executing the contained actors. A Composite actor with a local director is called an opaque actor. Composite actors do not require a local director. Composite actors with no local director "inherit" the director from the containing workflow and are called non-opaque.</p>

<p>To create a composite actor, drag and drop the Composite actor onto the Workflow canvas. Right-click the actor and select Open Actor from the drop-down menu. A new Kepler application window will open for designing the composite.</p></configure></property>
 </property>        <property name="_location" class="ptolemy.kernel.util.Location" value="[1470.0, 1080.0]">
         </property>
         <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={526, 57, 1263, 787}, maximized=false}">
@@ -4561,7 +2897,7 @@ must be specified.</p>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Use the Annotation attribute to annotate a workflow. Double-click the attribute to customize the content, font size, color, and basic formatting (bold and italics).</configure></property>
-<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
+<property name="prop:fontFamily" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font face. Select a font from the drop-down menu. The default is "SansSerif".</configure></property>
 <property name="prop:italic" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be italics. By default, type will not be italicized.</configure></property>
 <property name="prop:bold" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Select to indicate that the type should be bold. By default, type will not be bold.</configure></property>
 <property name="prop:textColor" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The font color. Specify a string representing an array of four elements: red, green, blue, and alpha, where alpha is transparency. The default is an opaque black, {0.0, 0.0, 0.0, 1.0}</configure></property>
@@ -4601,11 +2937,10 @@ must be specified.</p>
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Wibke Sudholt</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>
-The StringAccumulator actor reads multiple strings via its input port and outputs a string containing all of the input values. The characters separating the substrings in the output string can be specified with the substringSeparator parameter.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>
The StringAccumulator actor reads multiple strings via its input port and outputs a string containing all of the input values. The characters separating the substrings in the output string can be specified with the substringSeparator parameter.</p></configure></property>
 <property name="port:whole" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the full string.</configure></property>
 <property name="port:parts" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that accepts substrings.</configure></property>
-<property name="prop:Substring separator" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The characters used to separate the elements in the output string. By default, the value is "".</configure></property>
+<property name="prop:Substring separator" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The characters used to separate the elements in the output string. By default, the value is "".</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:292:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.resurgence.actor.StringAccumulator">
@@ -4642,13 +2977,7 @@ The StringAccumulator actor reads multiple strings via its input port and output
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee, Steve Neuendorffer, Jerome Blanc</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
-Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
-If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
-If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
-Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
-The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
-The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>
Set the value of a variable. The result may occur at two different times, depending on the value of the delayed parameter. 
If delayed is true, then the change to the value of the variable is implemented in a change request, and consequently will not take hold until the end of the current toplevel iteration. This helps ensure that users of value of the variable will see changes to the value deterministically (independent of the schedule of execution of the actors). 
If delayed is false, then the change to the value of the variable is performed immediately. This allows more frequent reconfiguration, and can mimic the operation of PGM's graph variables. 
Note that the variable name is observed during preinitialize(). If it is changed after that, the change will not take effect until the next time the model is executed. Moreover, the type of the variable is constrained in preinitialize() to be at least that of the input port for this actor. 
The variable can be either any attribute that implements the Settable interface. If it is in addition an instance of Variable, then the input token is used directly to set the value, and the type of the variable is constrained to be the same as the type of the input. Otherwise, then input token is converted to a string and the setExpression() method on the variable is used to set the value. 
The variable can occur anywhere in the hierarchy above the current level. If the variable is not found in the container, then the container of the container is checked until we reach the top level.</configure></property>
 </property>            <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:10:1">
             </property>
             <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.SetVariable">
@@ -4685,15 +3014,7 @@ The variable can occur anywhere in the hierarchy above the current level. If the
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Edward Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>
-
-<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>
-
-<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>
-
-<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>
-
-</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The StringConstant actor outputs a string specified via the actor's value parameter.</p>

<p>Specifying strings with the StringConstant actor is convenient, as the actor does not require that strings be surrounded by quotes. The actor is often used to specify file paths, which can be selected using the Browse button available in the actor's parameters.</p>

<p>Specified string values can include references to parameters within scope (i.e., parameters defined at the same level of the hierarchy or higher). </p>

<p>NOTE: If using a PN Director, the 'firingCountLimit' parameter is often set to a finite integer (e.g. '1') so that the workflow will terminate. </p>

</configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts a string constant specified by the value parameter.  </configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A multiport that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time. </configure></property>
 <property name="prop:firingCountLimit" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The limit on the number of times the actor will fire. The default value is 'NONE', meaning there is no limit on the number of time the constant will be provided to the output port. Any integer can be provided as a value for this parameter.</configure></property>
@@ -4732,13 +3053,7 @@ The variable can occur anywhere in the hierarchy above the current level. If the
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
 <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Yuhong Xiong, Edward A. Lee</configure></property>
 <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Ramp actor is the equivalent of the "for loop" in many traditional computer languages. Its parameters include an intial value, the amount the value is incremented each time the actor fires (the 'step'), and the upper limit of the value (the firingCountLimit). The actor outputs an integer each time it is fired. </p>
-
-<p>The actor's output can be used as a counter (increasing or decreasing), or as a parameter used in an incremented workflow. For example, the output of a Ramp actor can be input to an Expression actor to create file names that are unique for each iteration (e.g., 'file1', 'file2', etc.) The Ramp actor is also particularly useful with PN directed workflows where there is no way to set the number of iterations as a Director parameter. </p>
-
-<p>The first time the actor fires, it outputs the value of its init parameter. The increment value, specified with either the step port or parameter, will only be added on the following iteration. To add an increment to the first iteration, use the Accumulator actor.</p>
-
-<p>The actor accepts values of any type that support addition.</p></configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure><p>The Ramp actor is the equivalent of the "for loop" in many traditional computer languages. Its parameters include an intial value, the amount the value is incremented each time the actor fires (the 'step'), and the upper limit of the value (the firingCountLimit). The actor outputs an integer each time it is fired. </p>

<p>The actor's output can be used as a counter (increasing or decreasing), or as a parameter used in an incremented workflow. For example, the output of a Ramp actor can be input to an Expression actor to create file names that are unique for each iteration (e.g., 'file1', 'file2', etc.) The Ramp actor is also particularly useful with PN directed workflows where there is no way to set the number of iterations as a Director parameter. </p>

<p>The first time the actor fires, it outputs the value of its init parameter. The increment value, specified with either the step port or parameter, will only be added on the following iteration. To add an increment to the first iteration, use the Accumulator actor.</p>

<p>The actor accepts values of any type that support addition.</p></configure></property>
 <property name="port:output" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An output port that broadcasts the incremented value.</configure></property>
 <property name="port:trigger" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An input port that has no declared type (in other words, the port can accept any data type: double, int, array, etc.) If the port is connected, the actor will not fire until the trigger port receives an input token. Connecting the port is optional, but useful when scheduling the actor to perform at a certain time.</configure></property>
 <property name="port:step" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>An input port that accepts the amount by which the output is incremented on each iteration. The port accepts a value of any type that supports addition. The value is an integer and defaults to 1.</configure></property>
@@ -4834,14 +3149,10 @@ The variable can occur anywhere in the hierarchy above the current level. If the
         <link port="Ramp.output" relation="relation"/>
         <link port="Ramp.trigger" relation="relation3"/>
     </entity>
-    <entity name="DataOrganizer" class="org.eso.DataOrganizer">
-<display name="DataOrganiser"/>        <property name="OCA File" class="ptolemy.data.expr.FileParameter" value="/home/cgarcia/SDD//local/ga014699/share/esopipes/uves-4.8.13/reflex/uves_wkf.oca">
-        </property>
-        <property name="Keywords to be displayed" class="ptolemy.data.expr.StringParameter" value="OBJECT,INS.PATH,DET.CHIPS,DET.WIN1.BINX,DET.WIN1.BINY,DET.READ.SPEED,INS.MODE,INS.SLIT1.NAME,INS.GRAT2.WLEN,INS.GRAT1.WLEN,INS.SLIT2.WID,INS.SLIT3.WID">
-        </property>
-        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:6:1">
+    <entity name="FitsRouter2" class="org.eso.FitsRouter">
+        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:25158:122:17">
         </property>
-        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.DataOrganizer">
+        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.FitsRouter">
             <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
             </property>
         </property>
@@ -4852,56 +3163,80 @@ The variable can occur anywhere in the hierarchy above the current level. If the
             </property>
             <property name="version" class="ptolemy.kernel.util.StringAttribute" value="1.0">
             </property>
-            <property name="OCA File (parameter)" class="ptolemy.data.expr.StringParameter" value="The filename (full path) containing the OCA rules used for classification and organization. Look at the user manual for more info.">
-            </property>
-            <property name="Keywords to be displayed (parameter)" class="ptolemy.data.expr.StringParameter" value="A comma separated list of FITS keywords which are extracted from all files in addition to the ones selected by the OCA rules">
-            </property>
             <property name="class (parameter)" class="ptolemy.data.expr.StringParameter" value="">
             </property>
             <property name="semanticType41 (parameter)" class="ptolemy.data.expr.StringParameter" value="">
             </property>
-            <property name="data dir (port)" class="ptolemy.kernel.util.StringAttribute" value="The directory containing the input data. It is scanned recursively.">
+            <property name="sof (port)" class="ptolemy.kernel.util.StringAttribute" value="The input SoF">
             </property>
-            <property name="LoSOs (port)" class="ptolemy.kernel.util.StringAttribute" value="The produced LoSOs">
+            <property name="rejected (port)" class="ptolemy.kernel.util.StringAttribute" value="The rejected SoF">
             </property>
             <property name="entityId (parameter)" class="ptolemy.data.expr.StringParameter" value="">
             </property>
         </property>
-        <property name="_location" class="ptolemy.kernel.util.Location" value="[125.0, 805.0]">
+        <property name="_location" class="ptolemy.kernel.util.Location" value="[249.25, 944.75]">
+        </property>
+        <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
+        </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org/ns/:2479:35:6">
         </property>
-        <port name="data dir" class="ptolemy.actor.TypedIOPort">
+        <property name="CALIB_config" class="ptolemy.data.expr.Parameter" value=""CALIB1,CALIB2"">
+        </property>
+        <property name="SCIENCE_config" class="ptolemy.data.expr.Parameter" value=""SCIENCE,SCIENCE_AUX"">
+        </property>
+        <port name="sof rejected" class="ptolemy.actor.TypedIOPort">
+            <property name="output"/>
+            <property name="multiport"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
+            </property>
+        </port>
+        <port name="sof" class="ptolemy.actor.TypedIOPort">
             <property name="input"/>
-            <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+            <property name="multiport"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
             </property>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
+            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
             </property>
         </port>
-        <port name="LoSOs" class="ptolemy.actor.TypedIOPort">
+        <port name="CALIB" class="ptolemy.actor.TypedIOPort">
             <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
+            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
             </property>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
+            </property>
+        </port>
+        <port name="END_LOSO" class="ptolemy.actor.TypedIOPort">
+            <property name="output"/>
             <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
             </property>
+            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
+            </property>
+        </port>
+        <port name="SCIENCE" class="ptolemy.actor.TypedIOPort">
+            <property name="output"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="EAST">
+            </property>
+            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
+            </property>
         </port>
     </entity>
-    <entity name="ProductRenamer" class="ptolemy.actor.lib.python.PythonScript">
-        <property name="script" class="ptolemy.kernel.util.StringAttribute" value="import os
import shutil

from ptolemy.data import StringToken, IntToken
from ptolemy.data.expr import Parameter
from org.eso.util import XMLTools
from nom.tam.fits import Fits
from java.beans  import  XMLEncoder
import java.io.BufferedOutputStream
from java.io import BufferedOutputStream
from java.io import ByteArrayOutputStream
from ptolemy.kernel.util import IllegalActionException

class Main :
  "ProductRenamer"

  def fire(self) :

    #Read input file names
    input = self.input_files.get(0)
    string = input.stringValue()
    obj = XMLTools.fromString(string)

    #Create the output, which contain the renamed files
    output = obj

    #Get keyword list
    rename_keywords = self.Rename_keywords.getToken()
    keyword_list =  rename_keywords.toString().strip('"').split(',')

    #Get the final product directory
    finalDirectoryParam = self.FinalProductDirectory.getToken()
    finalDirectory =  finalDirectoryParam.toString().strip('"')

    #Get the time stamp
    subDir = self.SubDir.getToken().toString().strip('"')

    #Get the copy mode
    copyMode = self.CopyMode.getToken().toString().strip('"')
    if copyMode != 'copy'  and copyMode != 'move' and copyMode != 'link' :
      raise IllegalActionException('Unknown copyMode value')

    #Get the output exists mode
    outputExistsMode = self.OutputExistsMode.getToken().toString().strip('"')
    if outputExistsMode != 'append_version'  and outputExistsMode != 'overwrite' and outputExistsMode != 'stop' :
      raise IllegalActionException('Unknown outputExistsMode value')

    #Test values of input parameters, to take decissions on how to behave
    if len(keyword_list) == 1 and keyword_list[0] == '' and finalDirectory == '' and subDir == '' :
      #We do nothing in this case, just broadcast the input and exit
      self.renamed_files.broadcast(StringToken(self.toXMLString(output)))
      return

    #Loop through the files
    prefixMap = dict()
    for fitsFile in output:
      fileName = fitsFile.getName()
      print "Original filename:  " + fileName
      newPrefixName = self.getNewPrefixFilename(fileName, keyword_list)
      newDirName      = self.getNewDirFilename(fileName, finalDirectory, subDir)

      #Create the final name
      newName = os.path.join(newDirName,  newPrefixName) + ".fits"

      #Create final directory
      if not os.path.isdir(newDirName) :
        os.makedirs(newDirName)

      #Dealing with "append_version" mode
      #Checking if the file already exists and create an index to avoid clash
      if outputExistsMode == 'append_version' :
        idx = 0
        while os.path.exists(newName) :
          idx += 1
          newName = os.path.join(newDirName,  newPrefixName) + "_" + str(idx) + ".fits"

      #Dealing with "overwrite" mode
      if outputExistsMode == 'overwrite' :
        if os.path.exists(newName) :
          if copyMode == 'link' :
            continue
          else :
            os.remove(newName)

      #Dealing with "stop" mode
      if outputExistsMode == 'stop' :
        if os.path.exists(newName) :
          raise IOError('File '+newName+' already exists')

      # Actually copying/moving/linking the file
      print "New name (in " + copyMode + " mode)"
      print newName
      if copyMode == 'link' :
#        os.symlink(fileName, newName)  #Does not work in jython
        command = 'ln -s \''+ fileName + '\'   \'' + newName + '\''
        os.system(command)
      elif copyMode == 'move' :
#        shutil.move(fileName, newName)
        command = 'mv \''+ fileName + '\'   \'' + newName + '\''
        os.system(command)
      else :
        shutil.copy(fileName, newName)

      #Changing the name at the output port
      fitsFile.setName(newName)

    #Broadcast outputs
    self.renamed_files.broadcast(StringToken(self.toXMLString(output)))


  def getNewPrefixFilename(self, oldFileName, keyword_list) :
    newPrefixName = str()
    #If there are no keywords to rename, keep the original name
    if len(keyword_list) == 1 and keyword_list[0] == '' :
      newPrefixName = os.path.basename(os.path.splitext(oldFileName)[0])
      return newPrefixName

    #Loop on the keywords
    for key in keyword_list:
      key = key.strip(' ')
      if key != '' :
        if key[0] == '\'' and  key[len(key)-1] == '\'' :
          newPrefixName += key.strip('\'')
        else :
          #Check the extension to read
          if key.find("[") != -1 :
            keyname = key[0:key.find("[")]
            idhdu = int(key[key.find("[") + 1: key.find("]")])
          else :
            keyname = key
            idhdu = 0
          fits = Fits(oldFileName)
          #Read the header
          header = fits.getHDU(idhdu).getHeader()
          #Read the keyword
          if header.containsKey(keyname) :
            newPrefixName += header.findCard(keyname).getValue().strip().replace(' ','_')
          else :
            newPrefixName += '_UNKNOWN_'
            print "Keyword \'"+keyname+ "\' not found  in FITS file " + oldFileName + "Using _UNKNOWN_"
    return newPrefixName

  def getNewDirFilename(self, oldFileName, finalDirectory, subDir):
    origDirectory = os.path.dirname(oldFileName)
    if finalDirectory == '' :
      productDirectory = origDirectory
    else :
      productDirectory = finalDirectory
    if subDir != '' :
      productDirectory += '/' + subDir
    return productDirectory
    

  def toXMLString(self, object) :
    baos = ByteArrayOutputStream()
    enc = XMLEncoder(baos)
    enc.writeObject(object)
    enc.close()
    return baos.toString()
     
">
+    <entity name="ProductRenamer2" class="ptolemy.actor.lib.python.PythonScript">
+        <property name="script" class="ptolemy.kernel.util.StringAttribute" value="import os
import shutil

from ptolemy.data import StringToken, IntToken
from ptolemy.data.expr import Parameter
from org.eso.util import JSONTools
from nom.tam.fits import Fits
from java.beans  import  XMLEncoder
import java.io.BufferedOutputStream
import java.io.BufferedOutputStream
from java.io import BufferedOutputStream
from java.io import ByteArrayOutputStream
from ptolemy.kernel.util import IllegalActionException

class Main :
  "ProductRenamer"

  def fire(self) :

    #Get the logger
    logger = org.apache.log4j.Logger.getLogger("org.eso.ProductRenamer")
    #Read input file names
    input = self.sof_in.get(0)
    string = input.stringValue()
    jsonObj = JSONObject(string)
    obj = JSONTools.fromJSON(jsonObj, SetOfFiles)

    #Create the output, which contain the renamed files
    output = obj

    #Get keyword list
    rename_keywords = self.RenameKeywords.getToken()
    keyword_list =  rename_keywords.toString().strip('"').split(',')

    #Get the final product directory
    finalDirectoryParam = self.FinalProductDirectory.getToken()
    finalDirectory =  finalDirectoryParam.toString().strip('"')

    #Get the time stamp
    subDir = self.SubDir.getToken().toString().strip('"')

    #Get the copy mode
    copyMode = self.CopyMode.getToken().toString().strip('"')
    if copyMode != 'copy'  and copyMode != 'move' and copyMode != 'link' :
      raise IllegalActionException('Unknown copyMode value')

    #Get the output exists mode
    outputExistsMode = self.OutputExistsMode.getToken().toString().strip('"')
    if outputExistsMode != 'append_version'  and outputExistsMode != 'overwrite' and outputExistsMode != 'stop' :
      raise IllegalActionException('Unknown outputExistsMode value')

    #Test values of input parameters, to take decissions on how to behave
    if len(keyword_list) == 1 and keyword_list[0] == '' and finalDirectory == '' and subDir == '' :
      #We do nothing in this case, just broadcast the input and exit
      self.sof_out.broadcast(StringToken(self.toXMLString(output)))
      return

    #Loop through the files
    prefixMap = dict()
    for fitsFile in output.getFiles():
      fileName = fitsFile.getName()
      logger.debug("Original filename:  " + fileName)
      newPrefixName = self.getNewPrefixFilename(fileName, keyword_list)
      newDirName      = self.getNewDirFilename(fileName, finalDirectory, subDir)

      #Create the final name
      newName = os.path.join(newDirName,  newPrefixName) + ".fits"

      #Create final directory
      if not os.path.isdir(newDirName) :
        os.makedirs(newDirName)

      #Dealing with "append_version" mode
      #Checking if the file already exists and create an index to avoid clash
      if outputExistsMode == 'append_version' :
        idx = 0
        while os.path.exists(newName) :
          idx += 1
          newName = os.path.join(newDirName,  newPrefixName) + "_" + str(idx) + ".fits"

      #Dealing with "overwrite" mode
      if outputExistsMode == 'overwrite' :
        if os.path.exists(newName) :
          if copyMode == 'link' :
            continue
          else :
            os.remove(newName)

      #Dealing with "stop" mode
      if outputExistsMode == 'stop' :
        if os.path.exists(newName) :
          raise IOError('File '+newName+' already exists')

      # Actually copying/moving/linking the file
      logger.debug("New name (in " + copyMode + " mode)")
      logger.debug(newName)
      if copyMode == 'link' :
#        os.symlink(fileName, newName)  #Does not work in jython
        command = 'ln -s \''+ fileName + '\'   \'' + newName + '\''
        os.system(command)
      elif copyMode == 'move' :
#        shutil.move(fileName, newName)
        command = 'mv \''+ fileName + '\'   \'' + newName + '\''
        os.system(command)
      else :
        shutil.copy(fileName, newName)

      #Changing the name at the output port
      fitsFile.setName(newName)

    #Broadcast outputs
    self.sof_out.broadcast(StringToken(self.toXMLString(output)))


  def getNewPrefixFilename(self, oldFileName, keyword_list) :
    newPrefixName = str()
    #If there are no keywords to rename, keep the original name
    if len(keyword_list) == 1 and keyword_list[0] == '' :
      newPrefixName = os.path.basename(os.path.splitext(oldFileName)[0])
      return newPrefixName

    #Check file exists
    if os.path.isfile(oldFileName) == False :
      message='file %s does not exist'%oldFileName
      raise Exception(message)
    #Loop on the keywords
    for key in keyword_list:
      key = key.strip(' ')
      if key != '' :
        if key[0] == '\'' and  key[len(key)-1] == '\'' :
          newPrefixName += key.strip('\'')
        else :
          #Check the extension to read
          if key.find("[") != -1 :
            keyname = key[0:key.find("[")]
            idhdu = int(key[key.find("[") + 1: key.find("]")])
          else :
            keyname = key
            idhdu = 0
          fits = Fits(oldFileName)
          #Read the header
          header = fits.getHDU(idhdu).getHeader()
          #Read the keyword
          if header.containsKey(keyname) :
            newPrefixName += header.findCard(keyname).getValue().strip().replace(' ','_').replace('/','_')
          else :
            newPrefixName += '_UNKNOWN_'
            logger.warning("Keyword \'"+keyname+ "\' not found  in FITS file " + oldFileName + " Using _UNKNOWN_")
    return newPrefixName

  def getNewDirFilename(self, oldFileName, finalDirectory, subDir):
    origDirectory = os.path.dirname(oldFileName)
    if finalDirectory == '' :
      productDirectory = origDirectory
    else :
      productDirectory = finalDirectory
    if subDir != '' :
      productDirectory += '/' + subDir
    return productDirectory
    

  def toXMLString(self, object) :
    baos = ByteArrayOutputStream()
    enc = XMLEncoder(baos)
    enc.writeObject(object)
    enc.close()
    return baos.toString()
     
">
         </property>
 <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
 <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>Renames recipe products based on FITS keywords</configure></property>
-<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>reflex at eso.org</configure></property>
-<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure> This actor moves (or copies or links) its input sof to a final product directory based on some FITS keywords.
- Usually, it should be connected to the output of the recipes that produce final products. If the recipe produces more products that are not relevant to rename, an output filter can be put in the recipe.</configure></property>
-<property name="port:in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
-<property name="port:renamed_files" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The final list of files produced</configure></property>
-<property name="port:input_files" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The files to be copied/moved or linked</configure></property>
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure> This actor moves (or copies or links) its input sof to a final product directory based on some FITS keywords.
 Usually, it should be connected to the output of the recipes that produce final products. If the recipe produces more products that are not relevant to rename, an output filter can be put in the recipe.</configure></property>
+<property name="port:sof_out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The final list of files produced</configure></property>
+<property name="port:sof_in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The files to be copied/moved or linked</configure></property>
+<property name="prop:RenameKeywords" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The list of keywords used to create the new name</configure></property>
+<property name="prop:OutputExistsMode" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>This parameter defines the behaviour in case the output files already exists: it can be "append_version" (create a new file with a running index suffix), "overwrite" (replace the existing file), "stop" (stop the workflow)</configure></property>
 <property name="prop:script" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
 <property name="prop:FinalProductDirectory" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The directory where the files are going to be copied/linked or renamed. It is usually set to END_PRODUCTS_DIR</configure></property>
-<property name="prop:Rename_keywords" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The list of keywords used to create the new name</configure></property>
 <property name="prop:SubDir" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If it is not empty, a subdirectory will be created with this string. The value can contain backslashes (and intermediate directories will be created). It will usually be END_PROD_SUBDIR, created somewhere in the workflow</configure></property>
-<property name="prop:CopyMode" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>There are several options: "copy", "move" or "link".</configure></property>
-</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:workflow:19:1">
+<property name="prop:CopyMode" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>There are several options: "copy", "move" or "link".</configure></property>
+</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:25158:120:4">
         </property>
         <property name="class" class="ptolemy.kernel.util.StringAttribute" value="ptolemy.actor.lib.python.PythonScript">
             <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
@@ -4913,9 +3248,9 @@ The variable can occur anywhere in the hierarchy above the current level. If the
             <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="script">
             </property>
         </property>
-        <property name="_location" class="ptolemy.kernel.util.Location" value="[1475.0, 555.0]">
+        <property name="_location" class="ptolemy.kernel.util.Location" value="[1475.0, 635.0]">
         </property>
-        <property name="Rename_keywords" class="ptolemy.data.expr.StringParameter" value="HIERARCH.ESO.OBS.NAME,'_',HIERARCH.ESO.PRO.CATG">
+        <property name="RenameKeywords" class="ptolemy.data.expr.StringParameter" value="HIERARCH.ESO.OBS.NAME,'_',HIERARCH.ESO.PRO.CATG">
         </property>
         <property name="FinalProductDirectory" class="ptolemy.data.expr.StringParameter" value="$END_PRODUCTS_DIR">
         </property>
@@ -4925,226 +3260,177 @@ The variable can occur anywhere in the hierarchy above the current level. If the
         </property>
         <property name="OutputExistsMode" class="ptolemy.data.expr.StringParameter" value="append_version">
         </property>
-        <property name="" class="ptolemy.vergil.basic.DocAttribute">
-            <property name="description" class="ptolemy.data.expr.StringParameter" value=" This actor moves (or copies or links) its input sof to a final product directory based on some FITS keywords.
 Usually, it should be connected to the output of the recipes that produce final products. If the recipe produces more products that are not relevant to rename, an output filter can be put in the recipe.">
-            </property>
-            <property name="author" class="ptolemy.kernel.util.StringAttribute" value="reflex at eso.org">
-            </property>
-            <property name="Rename_keywords (parameter)" class="ptolemy.data.expr.StringParameter" value="The list of keywords used to create the new name">
-            </property>
-            <property name="FinalProductDirectory (parameter)" class="ptolemy.data.expr.StringParameter" value="The directory where the files are going to be copied/linked or renamed. It is usually set to END_PRODUCTS_DIR">
-            </property>
-            <property name="SubDir (parameter)" class="ptolemy.data.expr.StringParameter" value="If it is not empty, a subdirectory will be created with this string. The value can contain backslashes (and intermediate directories will be created). It will usually be END_PROD_SUBDIR, created somewhere in the workflow">
-            </property>
-            <property name="CopyMode (parameter)" class="ptolemy.data.expr.StringParameter" value="There are several options: "copy", "move" or "link".">
-            </property>
-            <property name="in (port)" class="ptolemy.kernel.util.StringAttribute">
-            </property>
-            <property name="renamed_files (port)" class="ptolemy.kernel.util.StringAttribute" value="The final list of files produced">
-            </property>
-            <property name="input_files (port)" class="ptolemy.kernel.util.StringAttribute" value="The files to be copied/moved or linked">
-            </property>
-            <property name="script (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-            </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:actor:910:1">
         </property>
-        <port name="input_files" class="ptolemy.actor.TypedIOPort">
+        <port name="sof_in" class="ptolemy.actor.TypedIOPort">
             <property name="input"/>
             <property name="tokenConsumptionRate" class="ptolemy.data.expr.Parameter" value="1">
             </property>
         </port>
-        <port name="renamed_files" class="ptolemy.actor.TypedIOPort">
+        <port name="sof_out" class="ptolemy.actor.TypedIOPort">
             <property name="output"/>
             <property name="multiport"/>
             <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
             </property>
         </port>
     </entity>
-    <entity name="FitsRouter2" class="org.eso.FitsRouter">
-        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:2479:35:6">
+    <entity name="SofCombiner" class="org.eso.SofCombiner">
+<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
+<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The SofCombiner takes as input a number of set of files and combines them into one set of files that contains only the files whose purposes are present in all the input tokens. With this respect empty tokens are ignored and files with universal purpose are always collected</configure></property>
+<property name="port:sof in" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The input sofs</configure></property>
+<property name="port:sof out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The combined sof</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org:actor:908:1">
         </property>
-        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.FitsRouter">
+        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.SofCombiner">
             <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
             </property>
         </property>
         <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
         </property>
-        <property name="" class="ptolemy.vergil.basic.DocAttribute">
-            <property name="author" class="ptolemy.kernel.util.StringAttribute" value="ESO">
-            </property>
-            <property name="version" class="ptolemy.kernel.util.StringAttribute" value="1.0">
-            </property>
-            <property name="class (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-            </property>
-            <property name="semanticType41 (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-            </property>
-            <property name="sof (port)" class="ptolemy.kernel.util.StringAttribute" value="The input SoF">
-            </property>
-            <property name="rejected (port)" class="ptolemy.kernel.util.StringAttribute" value="The rejected SoF">
-            </property>
-            <property name="entityId (parameter)" class="ptolemy.data.expr.StringParameter" value="">
-            </property>
-        </property>
-        <property name="_location" class="ptolemy.kernel.util.Location" value="[249.25, 944.75]">
-        </property>
-        <property name="DARK_config" class="ptolemy.data.expr.Parameter" value=""DARK_BLUE,DARK_RED"">
-        </property>
-        <property name="PREDICT_config" class="ptolemy.data.expr.Parameter" value=""ARC_LAMP_FORM_BLUE,ARC_LAMP_FORM_RED,LINE_REFER_TABLE"">
-        </property>
-        <property name="ORDERPOS_config" class="ptolemy.data.expr.Parameter" value=""ORDER_FLAT_BLUE,ORDER_FLAT_RED"">
-        </property>
-        <property name="WAVECAL_config" class="ptolemy.data.expr.Parameter" value=""ARC_LAMP_BLUE,ARC_LAMP_RED,LINE_REFER_TABLE"">
-        </property>
-        <property name="STANDARD_AUX_config" class="ptolemy.data.expr.Parameter" value=""FLUX_STD_TABLE,EXTCOEFF_TABLE"">
-        </property>
-        <property name="STANDARD_config" class="ptolemy.data.expr.Parameter" value=""STANDARD_BLUE,STANDARD_RED"">
-        </property>
-        <property name="SCIENCE_config" class="ptolemy.data.expr.Parameter" value=""SCI_POINT_BLUE,SCI_POINT_RED,SCI_SLICER_BLUE,SCI_SLICER_RED,SCI_EXTND_BLUE,SCI_EXTND_RED,EXTCOEFF_TABLE,MASTER_RESPONSE_BLUE,MASTER_RESPONSE_REDL,MASTER_RESPONSE_REDU"">
-        </property>
-        <property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
-        </property>
-        <property name="FLAT_config" class="ptolemy.data.expr.Parameter" value=""FLAT_BLUE,FLAT_RED,DFLAT_BLUE,DFLAT_RED"">
-            <property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
-            </property>
-        </property>
-        <property name="FLAT_minnumber" class="ptolemy.data.expr.Parameter" value="5">
-        </property>
-        <property name="BIAS_config" class="ptolemy.data.expr.Parameter" value=""BIAS_BLUE,BIAS_RED"">
+        <property name="_location" class="ptolemy.kernel.util.Location" value="[1020.0, 735.0]">
         </property>
-        <property name="BIAS_minnumber" class="ptolemy.data.expr.Parameter" value="3">
-        </property>
-        <port name="sof" class="ptolemy.actor.TypedIOPort">
+        <port name="sof in" class="ptolemy.actor.TypedIOPort">
             <property name="input"/>
             <property name="multiport"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="WEST">
-            </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
+            <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
             </property>
         </port>
-        <port name="rejected" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
+        <port name="sof in opt" class="ptolemy.actor.TypedIOPort">
+            <property name="input"/>
             <property name="multiport"/>
             <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-            </property>
-        </port>
-        <port name="DARK" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-            </property>
-        </port>
-        <port name="BIAS" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
-            </property>
-        </port>
-        <port name="PREDICT" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-        </port>
-        <port name="ORDERPOS" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
-        </port>
-        <port name="FLAT" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
         </port>
-        <port name="END_LOSO" class="ptolemy.actor.TypedIOPort">
+        <port name="sof out" class="ptolemy.actor.TypedIOPort">
             <property name="output"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-            </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="false">
+            <property name="multiport"/>
+            <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
             </property>
         </port>
-        <port name="SCIENCE" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
+    </entity>
+    <entity name="DataOrganizer" class="org.eso.DataOrganizer">
+        <property name="OCA File" class="ptolemy.data.expr.FileParameter" value="/home/cgarcia/SDD//local/ga014699/share/esopipes/iiinstrument-0.0.1/reflex/iiinstrument_wkf.oca">
+        </property>
+        <property name="Keywords to be displayed" class="ptolemy.data.expr.StringParameter" value="OBJECT,INS.PATH,DET.CHIPS,DET.WIN1.BINX,DET.WIN1.BINY,DET.READ.SPEED,INS.MODE,INS.SLIT1.NAME,INS.GRAT2.WLEN,INS.GRAT1.WLEN,INS.SLIT2.WID,INS.SLIT3.WID">
+        </property>
+        <property name="Lazy Mode" class="ptolemy.data.expr.Parameter" value="true">
+        </property>
+        <property name="Bookkeeping Dir" class="ptolemy.data.expr.FileParameter" value="$BOOKKEEPING_DIR">
+            <property name="allowFiles" class="ptolemy.data.expr.Parameter" value="false">
             </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
+            <property name="allowDirectories" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-        </port>
-        <port name="STANDARD" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
+        </property>
+<property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
+<property name="description" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>null</configure></property>
+<property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>ESO</configure></property>
+<property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>2.0</configure></property>
+<property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The DataOrganizer organizes a set of files (science and calibration) in groups called datasets, that can be processed independently by the workflow.
A dataset has a tree structure and represents the complete calibration cascade.
The logic used to generate the datasets is described using OCA rules: OCA is a SQL-like language developed at ESO to define associations through files based on certain FITS keywords. Please refer to the user documentation for more information about OCA.</configure></property>
+<property name="port:datasets out" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The generated datasets</configure></property>
+<property name="port:input data" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>It can be either a directory, an array of directories or a previously generated list of datasets/</configure></property>
+<property name="prop:semanticType41" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:OCA File" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The file containing the OCA rules used by the actor to organize the data (full path)</configure></property>
+<property name="prop:entityId" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:Lazy Mode" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>If true, the actor will look into the bookkeeping directory for a previous execution with the same files and the same OCA rules</configure></property>
+<property name="prop:author" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:class" class="ptolemy.kernel.util.ConfigurableAttribute"><configure></configure></property>
+<property name="prop:Keywords to be displayed" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>A list of FITS keywords to be extracted from the FITS files and dattached to the  datasets (this property has no effect in lazy mode or if the input data token is a previous geneerated set of datasets</configure></property>
+<property name="prop:Bookkeeping Dir" class="ptolemy.kernel.util.ConfigurableAttribute"><configure>The directory where the actor stores the information about its executions</configure></property>
+</property>        <property name="entityId" class="org.kepler.moml.NamedObjId" value="urn:lsid:kepler-project.org/ns/:26405:4:3">
+        </property>
+        <property name="class" class="ptolemy.kernel.util.StringAttribute" value="org.eso.DataOrganizer">
+            <property name="id" class="ptolemy.kernel.util.StringAttribute" value="null">
             </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
+        </property>
+        <property name="semanticType41" class="org.kepler.sms.SemanticType" value="urn:lsid:localhost:onto:4:1#ESO">
+        </property>
+        <property name="_location" class="ptolemy.kernel.util.Location" value="[125.0, 770.0]">
+        </property>
+        <property name="derivedFrom" class="org.kepler.moml.NamedObjIdReferralList" value="urn:lsid:kepler-project.org:actor:900:1">
+        </property>
+        <port name="input data" class="ptolemy.actor.TypedIOPort">
+            <property name="input"/>
+            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="NORTH">
             </property>
         </port>
-        <port name="STANDARD_AUX" class="ptolemy.actor.TypedIOPort">
+        <port name="datasets out" class="ptolemy.actor.TypedIOPort">
             <property name="output"/>
-            <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
-            </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
+            <property name="_showName" class="ptolemy.data.expr.Parameter" value="true">
             </property>
-        </port>
-        <port name="WAVECAL" class="ptolemy.actor.TypedIOPort">
-            <property name="output"/>
             <property name="_cardinal" class="ptolemy.kernel.util.StringAttribute" value="SOUTH">
             </property>
-            <property name="_showName" class="ptolemy.data.expr.SingletonParameter" value="true">
-            </property>
         </port>
     </entity>
     <relation name="relation5" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation14" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation25" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation2" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation15" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation30" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation3" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation28" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation4" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation25" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation6" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation15" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation7" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <relation name="relation3" class="ptolemy.actor.TypedIORelation">
+    <relation name="relation8" class="ptolemy.actor.TypedIORelation">
+        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
+        </property>
+    </relation>
+    <relation name="relation9" class="ptolemy.actor.TypedIORelation">
+        <property name="width" class="ptolemy.data.expr.Parameter" value="1">
+        </property>
+    </relation>
+    <relation name="relation10" class="ptolemy.actor.TypedIORelation">
         <property name="width" class="ptolemy.data.expr.Parameter" value="1">
         </property>
     </relation>
-    <link port="DataSetChooser.LoSOs" relation="relation2"/>
+    <link port="DataSetChooser.LoSOs" relation="relation10"/>
     <link port="DataSetChooser.sof" relation="relation25"/>
-    <link port="Data Filter.in" relation="relation28"/>
+    <link port="Data Filter.in" relation="relation6"/>
     <link port="Data Filter.out" relation="relation5"/>
     <link port="Calibration.sof_in" relation="relation3"/>
-    <link port="Calibration.sof_out" relation="relation"/>
-    <link port="Spectrum Extraction.sof_in" relation="relation"/>
-    <link port="Spectrum Extraction.sof_out" relation="relation30"/>
-    <link port="Initialize.raw_data_dir" relation="relation14"/>
+    <link port="Calibration.sof_out" relation="relation7"/>
+    <link port="Science.sof_in" relation="relation"/>
+    <link port="Science.sof_out" relation="relation4"/>
+    <link port="Initialize.raw_data_dir" relation="relation9"/>
     <link port="Close DataSet.final_files" relation="relation5"/>
     <link port="Close DataSet.end_loso" relation="relation15"/>
-    <link port="DataOrganizer.data dir" relation="relation14"/>
-    <link port="DataOrganizer.LoSOs" relation="relation2"/>
-    <link port="ProductRenamer.input_files" relation="relation30"/>
-    <link port="ProductRenamer.renamed_files" relation="relation28"/>
     <link port="FitsRouter2.sof" relation="relation25"/>
-    <link port="FitsRouter2.BIAS" relation="relation3"/>
+    <link port="FitsRouter2.CALIB" relation="relation3"/>
     <link port="FitsRouter2.END_LOSO" relation="relation15"/>
+    <link port="FitsRouter2.SCIENCE" relation="relation8"/>
+    <link port="ProductRenamer2.sof_in" relation="relation4"/>
+    <link port="ProductRenamer2.sof_out" relation="relation6"/>
+    <link port="SofCombiner.sof in" relation="relation7"/>
+    <link port="SofCombiner.sof in" relation="relation8"/>
+    <link port="SofCombiner.sof out" relation="relation"/>
+    <link port="DataOrganizer.input data" relation="relation9"/>
+    <link port="DataOrganizer.datasets out" relation="relation10"/>
 </entity>
diff --git a/reflex/Makefile.am b/reflex/Makefile.am
new file mode 100644
index 0000000..75a988f
--- /dev/null
+++ b/reflex/Makefile.am
@@ -0,0 +1,21 @@
+
+AUTOMAKE_OPTIONS = foreign
+
+#Put here all the workflows. They must end with extension .in. They should
+#be like a normal workflow but using @prefix@ for paths 
+#to the OCA rules (grep for OCA in the xml file) or Python scripts
+WORKFLOWS = Iiinstrument.xml
+#Put here the OCA rules used by the workflow
+OCAWKF =  iiinstrument_wkf.oca
+#Put Python scripts used by the workflows
+#PYTHONWKF =
+
+#This installs the workflow and the OCA rules in reflexaux directory
+wkfextra_DATA = $(WORKFLOWS) $(OCAWKF) $(PYTHONWKF)
+
+#Pack in the distribution the original workflow
+EXTRA_DIST = $(WORKFLOWS).in $(OCAWKF) $(PYTHONWKF)
+
+#This also installs the workflow in the common reflex directory
+wkfcopy_DATA = $(WORKFLOWS)
+
diff --git a/recipes/Makefile.in b/reflex/Makefile.in
similarity index 59%
copy from recipes/Makefile.in
copy to reflex/Makefile.in
index 9155c76..ae39854 100644
--- a/recipes/Makefile.in
+++ b/reflex/Makefile.in
@@ -15,7 +15,6 @@
 
 @SET_MAKE@
 
-
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -36,8 +35,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = recipes
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+subdir = reflex
+DIST_COMMON = $(srcdir)/Iiinstrument.xml.in $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4macros/cpl.m4 \
@@ -53,8 +52,10 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = Iiinstrument.xml
 CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -76,32 +77,8 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-am_rrrecipe_la_OBJECTS = rrrecipe.lo
-rrrecipe_la_OBJECTS = $(am_rrrecipe_la_OBJECTS)
-rrrecipe_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(rrrecipe_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/admin/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-SOURCES = $(rrrecipe_la_SOURCES)
-DIST_SOURCES = $(rrrecipe_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
+am__installdirs = "$(DESTDIR)$(wkfcopydir)" "$(DESTDIR)$(wkfextradir)"
+DATA = $(wkfcopy_DATA) $(wkfextra_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -251,22 +228,30 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-wkfdir = @wkfdir@
-wkflinkdir = @wkflinkdir@
-AUTOMAKE_OPTIONS = 1.8 foreign
-DISTCLEANFILES = *~
- at MAINTAINER_MODE_TRUE@MAINTAINERCLEANFILES = Makefile.in
-INCLUDES = $(all_includes)
-noinst_HEADERS = 
-plugin_LTLIBRARIES = rrrecipe.la 
-rrrecipe_la_SOURCES = rrrecipe.c 
-rrrecipe_la_LIBADD = $(LIBIIINSTRUMENT)
-rrrecipe_la_LDFLAGS = -module -avoid-version
-rrrecipe_la_DEPENDENCIES = $(LIBIIINSTRUMENT)
+wkfcopydir = @wkfcopydir@
+wkfextradir = @wkfextradir@
+AUTOMAKE_OPTIONS = foreign
+
+#Put here all the workflows. They must end with extension .in. They should
+#be like a normal workflow but using @prefix@ for paths 
+#to the OCA rules (grep for OCA in the xml file) or Python scripts
+WORKFLOWS = Iiinstrument.xml
+#Put here the OCA rules used by the workflow
+OCAWKF = iiinstrument_wkf.oca
+#Put Python scripts used by the workflows
+#PYTHONWKF =
+
+#This installs the workflow and the OCA rules in reflexaux directory
+wkfextra_DATA = $(WORKFLOWS) $(OCAWKF) $(PYTHONWKF)
+
+#Pack in the distribution the original workflow
+EXTRA_DIST = $(WORKFLOWS).in $(OCAWKF) $(PYTHONWKF)
+
+#This also installs the workflow in the common reflex directory
+wkfcopy_DATA = $(WORKFLOWS)
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -276,9 +261,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign recipes/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign reflex/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign recipes/Makefile
+	  $(AUTOMAKE) --foreign reflex/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -297,126 +282,60 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-rrrecipe.la: $(rrrecipe_la_OBJECTS) $(rrrecipe_la_DEPENDENCIES) 
-	$(rrrecipe_la_LINK) -rpath $(plugindir) $(rrrecipe_la_OBJECTS) $(rrrecipe_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rrrecipe.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+Iiinstrument.xml: $(top_builddir)/config.status $(srcdir)/Iiinstrument.xml.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-wkfcopyDATA: $(wkfcopy_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(wkfcopydir)" || $(MKDIR_P) "$(DESTDIR)$(wkfcopydir)"
+	@list='$(wkfcopy_DATA)'; test -n "$(wkfcopydir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(wkfcopydir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(wkfcopydir)" || exit $$?; \
+	done
+
+uninstall-wkfcopyDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(wkfcopy_DATA)'; test -n "$(wkfcopydir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(wkfcopydir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(wkfcopydir)" && rm -f $$files
+install-wkfextraDATA: $(wkfextra_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(wkfextradir)" || $(MKDIR_P) "$(DESTDIR)$(wkfextradir)"
+	@list='$(wkfextra_DATA)'; test -n "$(wkfextradir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(wkfextradir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(wkfextradir)" || exit $$?; \
+	done
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
+uninstall-wkfextraDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(wkfextra_DATA)'; test -n "$(wkfextradir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(wkfextradir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(wkfextradir)" && rm -f $$files
 tags: TAGS
+TAGS:
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
 ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+CTAGS:
+
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -450,9 +369,9 @@ distdir: $(DISTFILES)
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
+	for dir in "$(DESTDIR)$(wkfcopydir)" "$(DESTDIR)$(wkfextradir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -476,22 +395,17 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -505,7 +419,7 @@ info: info-am
 
 info-am:
 
-install-data-am: install-pluginLTLIBRARIES
+install-data-am: install-wkfcopyDATA install-wkfextraDATA
 
 install-dvi: install-dvi-am
 
@@ -534,14 +448,12 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
 mostlyclean: mostlyclean-am
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
 
 pdf: pdf-am
 
@@ -551,23 +463,22 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-pluginLTLIBRARIES
+uninstall-am: uninstall-wkfcopyDATA uninstall-wkfextraDATA
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-pluginLTLIBRARIES \
-	install-ps install-ps-am install-strip installcheck \
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	install-wkfcopyDATA install-wkfextraDATA installcheck \
 	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-wkfcopyDATA uninstall-wkfextraDATA
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/reflex/iiinstrument_wkf.oca b/reflex/iiinstrument_wkf.oca
new file mode 100644
index 0000000..4d4e70c
--- /dev/null
+++ b/reflex/iiinstrument_wkf.oca
@@ -0,0 +1,43 @@
+/// This first block provides a dummy classification to all files, thus overcoming the feature of the DO to stop as soon as one file has no classification.
+if (T) then
+{
+   REFLEX.CATG="UNDEFINED";
+}
+/// This block copies PRO.CATG into REFLEX.CATG to cover the case in which the latter is not assigned explicitely below.
+if PRO.CATG is string then
+{
+  REFLEX.CATG=PRO.CATG;
+}
+//Classification rules
+if DPR.CATG=="CALIB"   then 
+{
+  RAW.TYPE = "CALIB";
+  REFLEX.CATG = "CALIB";
+}
+if DPR.CATG=="SCIENCE" then
+{
+  RAW.TYPE = "SCIENCE";
+  REFLEX.CATG = "SCIENCE";
+  REFLEX.TARGET = "T"; //It indicates that Reflex should start bootstraping the Data Organizer from here.
+}
+
+//Selection rules
+select execute(ACTION_CALIB) from inputFiles where RAW.TYPE=="SCIENCE"
+  group by TPL.START as (TPL_A,tpl);
+select execute(ACTION_SCIENCE) from inputFiles where RAW.TYPE=="SCIENCE"
+  group by TPL.START as (TPL_A,tpl);
+
+//Action rules
+action ACTION_CALIB
+{
+  recipe rrrecipe_calib;
+  //Definition of a virtual product
+  product MASTER_CALIB { PRO.CATG="MASTER_CALIB"; REFLEX.CATG="MASTER_CALIB"; PRO.EXT="tpl_0000.fits";}
+}
+action ACTION_SCIENCE
+{
+  //Association of the virtual product
+  minRet = 1; maxRet = 1;
+  select file as MASTER_CALIB from calibFiles where REFLEX.CATG=="MASTER_CALIB";
+  recipe rrrecipe;
+}
diff --git a/setup b/setup
index be816a1..6a14782 100755
--- a/setup
+++ b/setup
@@ -19,7 +19,7 @@
 # $Author: yjung $
 # $Date: 2004/03/15 08:23:07 $
 # $Revision: 1.1.1.1 $
-# $Name: HEAD $
+# $Name: iiinstrument-0_0_2 $
 
 
 #   This script is the autoinstaller for the VLT instrument pipeline

-- 
Sample data reduction pipeline



More information about the debian-science-commits mailing list