diff --git a/ISSUES b/ISSUES
new file mode 100644
--- /dev/null
+++ b/ISSUES
@@ -0,0 +1,403 @@
+ISSUES
+======
+
+Issues for sifflet and sifflet-lib
+
+This is the ISSUES file for both sifflet and sifflet-lib.
+If you are editing it, be sure you are editing the original
+and not the copies in the app and lib subdirectories.
+
+O = date opened
+R = reporter
+P = priority
+C = closed
+
+OPEN ISSUES
+-----------
+
+41  next issue bug number
+
+40  Duplicate arguments in "Edit Arguments"
+
+    Adding a duplicate argument in the "Edit Arguments" dialog
+    is possible (for example, two arguments named "f").
+    It should not be.
+    O: 2012 July 2
+    R: gdw
+    P: medium
+
+39  No lambda tool
+
+    There is no lambda tool, and since partial application doesn't work
+    (issue 32), this means there is no way to have a function return a function.
+    O: 2012 jul 2
+    R: gdw
+    P: medium
+
+38  Working directory
+
+    Sifflet should have some sense of its working directory, 
+    for convenience of opening and saving files
+    O: 2012 july 2
+    R: gdw
+    P: medium
+
+37  Changing helper function definition does not affect displayed function call
+
+    See f2 and testF2 in ../examples/map.sfl
+    When testF2 is called on the workspace, and you edit and chagne f2,
+    apply the new definition, the displayed call is not re-evaluated
+    using the new definition.  In fact if you use the displayed
+    testF2 frame to call again, it still uses the old definition --
+    it seems permanently bound to it.  To use the new definition
+    of f2, you have to place a new copy of testF2 on the workspace.
+
+    O: 2012 Jun 27
+    R: gdw
+    P: low
+
+36 Cascade effect of changing kind of arguments to a function.
+
+   When we change the number of type (kind) of the arguments of
+   a function, we also change the function's type (or kind); and if
+   it's used in the definitions of other functions, then they may
+   become invalid in turn -- what should be done in this case?
+   O: 2012 Jun 27
+   R: gdw
+   P: medium
+
+33  testMapSumFromZero (see ../examples/map.sfl)
+    In testMapSumFromZero n, with n = [1,2],
+    opening the sumFromZero node displays bogus error messages
+    as though it is a call to sumFromZero with n = [1,2].
+    In fact, the node has no input, so there is no call 
+    to sumFromZero until we get into map.
+    The problem doesn't occur with recursive functions.
+    It must be because the node has an inlet that expects n,
+    and finds n in the enclosing environment although it is not called.
+    O: 2012 June 22
+    R: gdw
+    P: low
+
+32  Partial application does not work
+    (e.g., calling the + function with one argument)
+    Comment: See also #39.
+    O: 2012 Jun 21
+    R: gdw
+    P: medium
+
+31  Edit function inputs: when an argument tool is selected,
+    and you change the arity of that argument, the next click
+    of the tool puts the argument down on the canvas with its
+    *old* arity; should be the new arity.
+    Comment: A work-around is to reselect the tool to get the right arity.
+    O: 2012 Jun 21
+    R: gdw
+    P: medium
+
+26 EditArgsPanel: TAB fails to move the cursor to the next field.
+   O: 2011 Jun 23
+   R: gdw
+   P: medium-high
+
+25 Nodes lose unused inlets when applying a function definition.
+   -   Suppose the f node has two inlets, but none of them are
+   used by any f nodes in the definition.  Then when you apply the
+   definition, all the f nodes lose both of their inlets.
+   On the other hand, if one f node uses none of its two inlets
+   and another uses both, then when you apply the definition,
+   both of them keep both of their inlets.
+   O: 2011 Jun 23
+   R: gdw
+   P: lowest.
+   Comment:
+      This seems not really to be a problem.  If NONE of the f nodes
+      use their inlets, then why do they have inlets, anyway?
+      Besides, it should become irrelevant when a new UI is
+      developed without the circular inlets, as in issue 24.
+   Comment: The inlets will reappear if you reopen the "inputs"
+     dialog and then click "OK".
+
+24 Arguments are shifted when applying a function definition.
+   -   If a node has 3 inlets and connections on inlets 1 and 2,
+   but not on 0, then when "apply" is clicked the connections are
+   shifted to inlets 0 and 1, leaving 2 open.
+   O: 2011 Jun 23
+   R: gdw
+   P: lowest.
+      This should become irrelevant when and if I develop a new
+      UI that does away with the circular inlets.  Why not just
+      let the user make as many connections as they please?  And
+      that would get rid of the need for a dialog that lets you
+      change the number of inlets too.
+
+23 typeToXml fails for (TypeCons Function)
+   O: 2011 Jun 23
+   R: gdw
+   P: medium
+
+22 When you connect an input to the second (or generally not first)
+   input port of a node, and leave the first "open", then click on
+   apply, the input is reconnected to the first port instead of the
+   second.
+   -- Is this actually a bug?  
+   O: 2011 Jun 2
+   R: gdw
+   P: ???
+
+14  If two frames overlap, then clicks on the top frame
+    sometimes are interpreted as clicks on the lower (hidden) frame.
+    O: 2010 aug 16
+    P: low
+
+13  If you change any of the *example* functions and quit or open,
+    Sifflet prompts you to save changes, but it does not save
+    these particular changes, since they are not in "My Functions".
+    Probably need to re-design the whole organization of examples
+    and my functions, introduce modules associated with files,
+    and show each in its own panel.
+    Opened 2010 May 27.
+    Priority: low
+
+11  When function f, which calls function g, is on the workspace,
+    and you edit g, the changes do not propagate back to f, so that
+    calling f results in calling the *old* g.
+    Example: open test-champ.siff, place two-lovely on the workspace,
+    call it with any argument, edit lovely, apply, call two-lovely
+    again.
+    Opened 2010 May 20.  
+    Priority: medium
+
+* * *
+
+CLOSED ISSUES
+-------------
+
+
+1  After using the literal tool, etc., the program stops responding
+   to key presses in the workspace.
+   Opened ??
+   Closed 2009 Oct 5.
+
+2  Fix resize frame
+   Opened ??
+   Closed 2009 Oct 13.
+
+3  Quitting (q and File/quit) should actually quit!
+   Opened ??
+   Closed 2009 Oct 13.
+
+4  vpTypeOf fails for [].
+   Opened ??
+   Closed 2009 Oct 30.
+
+5  Deleting a node leaves its children orphans.
+   Opened ??
+   Closed 2009 Nov 4.
+
+6  After closing "My functions" window and re-opening it,
+   it should "remembers" the function tools that it had when closed,
+   instead of showing up as a blank window.
+   Opened ??
+   Closed 2009 Nov 11
+
+7  If function pad window is closed, then creating a 
+   new function results in a "key not found" error.
+   Opened ??
+   Closed 2010 March 1
+
+8  Opening a file twice put duplicate tools in
+   "My Functions" window (and toolkit, presumably).
+   Opened ??
+   Closed 2010 May 13
+
+9  After the dialog suggesting save changes before quitting or
+   opening a new file, the program crashes due to a bug in
+   Gtk2hs 0.10.0 and 0.10.1 (but fixed in gtk2hs darcs).
+   Opened ??
+   Closed 2010 May 20.
+
+10  Evaluating a call frame with zero arguments
+    opens an unnecessary dialog (there are not arguments,
+    so no values needed); moreover, it does not evaluate
+    the function call.
+
+15  In the test function list_of_2, evaluating [] results in
+    "error: unbound variable: []".  Ditto repeat_a_b.
+    O: 2010 aug 16
+    P: high
+    C: 2010 aug 16 -- fixed.
+
+16  Editing a function, if you enter the literal ["a", "b"],
+    the program crashes with this message:
+    sifflet-new-expr: makeFixedLiteralTool: 
+    non-empty list expression EList [EString "a",EString "b"]
+    O: 2010 aug 16
+    P: high
+    C: 2010 aug 16 -- fixed.
+
+
+17  There is an error in reading a non-empty list element from
+    a SiffML file, e.g., 
+          <literal>
+            <list>
+              <string>a</string>
+              <string>b</string>
+            </list>
+          </literal>
+    due to the fact that the children of the <list> element
+    directly represent values, not expressions, so they are
+    not read correctly (not read at all?) by xmlToExpr.
+    I think I need to use xmlToValue here, but how to connect
+    the two is not easy.
+    In the long run, it is desirable to change the XML doctype,
+    dropping the <literal> element so that strings would be
+    e.g. just <string>a</string>
+    and lists would be just e.g. 
+            <list>
+              <string>a</string>
+              <string>b</string>
+            </list>
+    O: 2010 aug 17
+    P: highest
+    C: 2010 aug 17 -- fixed.
+
+19  Closing all program windows leaves executable still running
+    but no way to kill it (Ctrl+C is a no-op).*
+    O: 2010 nov 3
+    R: Andrew Coppin andrewcoppin@btinternet.com
+    P: HIGH
+    C: 2010 dec 9 (actually fixed dec 3): closing the workspace window
+       now "safely" quits from the application.
+
+20  Amend documentation/home page to note that installation on
+    Windows without curl is now definitely feasible
+    O: 2010 nov 3
+    R: Andrew Coppin andrewcoppin@btinternet.com
+    P: medium
+    C: 2010 dec 9 (actually fixed dec 3)
+
+21  Define adds list =
+      if null list
+      then 0
+      else if head list
+           then + list 1
+           else tail (head list)
+    Call the function with list = [1]
+    Sifflet crashes with this error message:
+        evalTreeWithLimit (if): unexpected test result
+    O: 2010 dec 9
+    R: Charles Turner III (turnchan@iue.edu)
+    P: high
+    C: 2010 dec 9
+
+29  typedValue (in Parser.hs) has two conditions that result in
+    run-time errors.  For testing higher-order functions, it would
+    be good to be able to type in the name of a function in the global
+    environment, but we don't have access to the environment here,
+    do we?  Also in case of failure, it should fail with an error
+    message but not crash sifflet.
+    O: 2012 Jun 15
+    R: gdw
+    P: high
+       Crashes program.
+    C: 2012 June 21 -- fixed.
+
+30  typeToXml: program crashes when saving the map function definition,
+    with message:
+    sifflet-devel: typeToXml: TypeCons Function cannot be converted to XML.
+    Notes: 
+    1.  typeToXml is fixed, but now I also need to fix the corresponding
+        part of xmlToType so the file can be read back in.
+    2.  Maybe better still:
+        Why do we need the types in the XML file anyway, now that
+        we have type inference?
+    3.  Also revise schema/DTD for SiffML files.
+    O: 2012 Jun 21
+    R: gdw
+    P: highest - program crash
+    C: 2012 June 22, fixed.
+
+28 EditArgsPanel should change inlets for existing nodes when the arg's
+   kind is changed.
+   -   Suppose you change the number of parameters for argument f.
+       Then any existing f nodes on the drawing should have their
+       number of inlets changed correspondingly.
+       Currently this works if the number is increased, but
+       fails if it is decreased and there are now too many
+       connected children in the graph --> error in graphRenderTree.
+       Unfortunately, this is not the place where that can be fixed:
+       even if I reduce nto or nfrom in this context,
+       there are still the contexts in the connected children to
+       consider.
+  -   Also, when extra inputs are disconnected (as they should be)
+      they are sometimes also deleted from the canvas (shouldn't be).
+   O: 2011 Jun 23
+   R: gdw
+   P: highest.  Crashes program.
+   C: 2012 Jun 27, fixed.
+
+
+18  Sifflet crashes when applying a function if some connections
+    are missing.
+
+    "PS. I presume you know that you can crash the whole of Sifflet by
+    something as trivial as hitting the "apply" button when some
+    connections are missing, and that closing all of the program windows
+    leaves the executable still running but with no way to kill it. (I'm
+    not sure why Ctrl+C is no-op...)"
+    -- email from Andrew Coppin, 2010 Nov 01.
+
+    O: 2010 nov 3
+    R: Andrew Coppin andrewcoppin@btinternet.com
+    P: HIGH
+    C: 2012 Jun 27 -- unable to duplicate either part of this at this time;
+       must have been fixed earlier.  Though it might be that the
+       "no way to kill it" issue persists on MS Windows.
+
+35  vcCloseFrame does not remove the frame's subgraph from the canvas graph.
+
+    vcCloseFrame removes only the WFrame node, not the WSimple nodes
+    displayed in the frame.  It should remove all of them, otherwise
+    clutter builds up every time a function definition is applied,
+    since the apply command calls vcCloseFrame and then vcAddFrame.
+    O: 2012 Jun 27
+    R: gdw
+    P: high
+    C: 2012 Jun 27 fixed.
+
+12  Four tests fail in testall -u.
+    These seem to all involve issues of text node size
+    and are pretty minor, so maybe the tests need to be 
+    fine-tuned to allow for variations in what Cairo says
+    is the text's dimensions.
+    Opened 2010 May 24
+    Priority: medium
+    C: 2012 Jul 2, previously fixed but not closed; all unit tests now pass.
+
+34  In edit function / edit arguments: the edit window sometimes
+    does not sufficiently increase in size, 
+    so the edit arguments buttons (OK, cancel) 
+    are hidden by the edit function buttons (args, apply, inputs, close).
+    Comment: see darcs change:
+        Tue Jun  7 12:40:24 EDT 2011  gdweber@iue.edu
+          * Crude window resizing to fit as the EditArgsPanel grows
+          -   crude because it does not take into account the button bar
+              below the panel
+    Comment: duplicate of #27
+    O: 2012 June 26
+    R: gdw
+    P: top
+    C: 2012 jul 2, fixed
+
+27 EditArgsPanel: window resizing is bad.
+   -   Sometimes the window does not expand enough to show the 
+       panel's buttons.
+   -   Sometimes it shrinks back too much after the panel is closed.
+   -   Comment: lib/Graphics/UI/Sifflet/EditArgsPanel.hs
+                                        Workspace.hs : 138
+                                        
+   O: 2011 Jun 23
+   R: gdw
+   P: top
+    C: 2012 jul 2, fixed
diff --git a/Options.hs b/Options.hs
--- a/Options.hs
+++ b/Options.hs
@@ -14,6 +14,7 @@
                        , optionsCallFunction :: Maybe String
                        , optionsAdditionalArgs :: [String]
                        , optionsErrorMsg :: Maybe String
+                       , optionsDebug :: Bool
                        }
              deriving (Eq, Show)
 
@@ -25,6 +26,7 @@
                          , optionsCallFunction = Nothing
                          , optionsAdditionalArgs = []
                          , optionsErrorMsg = Nothing
+                         , optionsDebug = False
                          }
 
 processArgs :: [String] -> Options
@@ -43,8 +45,7 @@
                   [] -> options {optionsErrorMsg = 
                                      Just "--file: missing file name"}
                   file:args'' ->
-                      processArgsLoop (options {optionsSourceFile = Just file,
-                                                optionsShowFunPad = False})
+                      processArgsLoop (options {optionsSourceFile = Just file})
                                       args''
             "--show" ->
                 case args' of
@@ -63,6 +64,8 @@
                       options {optionsCallFunction = Just fname,
                                optionsAdditionalArgs = args'',
                                optionsShowFunPad = False}
+            "--debug" ->
+                processArgsLoop (options {optionsDebug = True}) args'
             _ ->
                 options {optionsErrorMsg = Just ("unexpected argument: " ++
                                                   arg)}
@@ -70,20 +73,16 @@
 helpText :: [String]
 helpText =
     ["Usage:",
-     "sifflet [--file SIFFLET-FILE] --show FUNCTION-NAME",
-     "sifflet [--file SIFFLET-FILE] --call FUNCTION-NAME [ARG ...]",
-     "sifflet --help",
-     "sifflet",
-     "where",
-     "1.  If --file SIFFLET-FILE is given, then the function definition is",
-     "read from that file; otherwise, it should be one of the Sifflet",
-     "examples in the Function Pad.",
-     "2.  If --show FUNCTION-NAME is used, the function is merely",
-     "displayed, ready to be called but not actually called.",
-     "3.  If --call FUNCTION-NAME [ARG ...] is used, the function",
-     "is displayed and called (with the given arguments ARG ..., if any).",
-     "4.  --help displays this message.",
-     "Any of these options suppresses the initial appearance of",
+     "sifflet [OPTIONS]",
+     "",
+     "OPTIONS:",
+     "  --file SIFFLET-FILE : loads SIFFLET-FILE at start.",
+     "  --show FUNCTION-NAME : displays function FUNCTION-NAME.",
+     "  --call FUNCTION-NAME [ARG ...] : calls function FUNCTION-NAME " ++
+     "with given arguments ARG ...",
+     "  --debug : include context menu items for debugging.",
+     "  --help : show this message.",
+     "The --help, --show, and --call options suppress the initial appearance of",
      "the Function Pad, though (except with --help) it can still be",
      "activated by the user."]
 
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
new file mode 100644
--- /dev/null
+++ b/RELEASE-NOTES
@@ -0,0 +1,159 @@
+% RELEASE NOTES
+
+Release notes for sifflet and sifflet-lib
+
+This is the RELEASE-NOTES file for both sifflet and sifflet-lib.
+If you are editing it, be sure you are editing the original
+and not the copies in the app and lib subdirectories.
+
+Release 2.0.0.0, 2012 July 5
+----------------------------
+
+-   Reorganized hierarchical modules to conform to
+    http://www.haskell.org/haskellwiki/Hierarchical_module_names
+    -   Sifflet.Data.X is now Data.Sifflet.X
+        for X in [Functoid, Geometry, Tree, TreeGraph,
+                 TreeLayout, WGraph]
+    -   Sifflet.Foreign.X is now Language.Sifflet.Export.X
+        for X in [Exporter, Haskell, Python, ToHaskell, ToPython, ToScheme]
+    -   Sifflet.Language.X is now Language.Sifflet.X
+        for X in [Expr, Parser, SiffML]
+    -   Sifflet.Rendering.X is now Graphics.Rendering.Sifflet.X
+        for X in [Draw, DrawTreeGraph]
+    -   Sifflet.Text.X is now Text.Sifflet.X
+        for X in [Pretty, Repr]
+    -   Sifflet.UI.X is now Graphics.UI.Sifflet.X
+        for X in [Callback, Canvas, Frame, GtkForeign, GtkUtil, LittleGtk,
+                 RPanel, Tool, Types, Window, Workspace]
+    -   Sifflet.UI is now Graphics.UI.Sifflet
+    -   Sifflet.Util is now Language.Sifflet.Util, and
+        Sifflet.Examples is now Language.Sifflet.Examples.
+        (not clear that this is really the best place for it;
+        maybe it hsould be split into pieces, such as 
+        Control.Monad.SuccFail, ...)
+    -   Sifflet.Examples is now Language.Sifflet.Examples.
+
+-   File menu command to save the image of the Workspace or any
+    open editor window, in SVG, PS, or PDF format.
+
+-   Implemented type checking with type inference.
+    Type inference can be used for export to languages
+    that require type declarations.
+    Type checking error messages are *not* friendly
+    for novice programmers; this needs improvement.
+
+-   Editing a function can now change its type.
+    -   It is now possible to change the arguments of a function
+        (add, rename, or remove arguments, or for functional
+        arguments, change the kind or arity).
+
+-   Bug fixes:
+    -   Fixed bug where the program crashed from incomplete 'if' trees
+    -   Various small bug fixes.
+
+-   Added RELAX NG schema for siffml version 2.0 (in datafiles).
+    This is an upwards-compatible extension of siffml 1.0,
+    which adds FunctionType to the alternatives for SiffletType.
+
+-   Added RELAX NG schema for siffml version 1.0 (in datafiles)
+
+Release 1.2.5.1, 2012 Jun 14 (or later)
+---------------------------------------
+
+-   Compatibility with mtl 2.1.1
+
+Release 1.2.5, 2012 Jun 1
+-------------------------
+
+-   Compatibility with GHC 7.4.1
+
+Release 1.2.4, 2011 Mar 18
+--------------------------
+
+-   Compatibility with HXT > 9.0
+
+Release 1.2.3, 2011 Feb 18
+--------------------------
+
+-   Compatibility with GHC 7 and Haskell Platform 2011.2
+
+Release 1.2.2, 2010 Dec 3
+-------------------------
+
+-   Offers to save changes before quitting
+
+Release 1.2.1, 2010 Nov 19
+--------------------------
+
+-   Compatibility with Haskell GTK packages 0.12
+
+Release 1.2, 2010 Oct 30
+------------------------
+
+-   Requires HXT 9.0
+-   Avoids indirect dependency on curl
+
+Release 1.1, 2010 Aug 24
+------------------------
+
+-   Improved Haskell exporter now removes most unnecessary
+    parentheses.
+-   Exported Haskell code now uses the module Data.Number.Sifflet,
+    formerly Sifflet.Data.Number.
+-   Sifflet now builds with slightly newer versions of the
+    Haskell "Gtk2hs" libraries (cairo, gtk, glib),
+    should work for versions >= 0.11.0 and < 0.12.
+
+Release 1.0, 2010 Aug 11
+------------------------
+
+-   Sifflet now has exporters to Scheme, Python, and Haskell and a small
+    supporting "library" for each of those languages.
+    This is intended for beginning students who are learning these
+    languages, not for "industrial-strength" code production.
+
+-   Although the exporters apparently generate correct code,
+    there are at present too many parentheses -- a few extra in Python,
+    many extra in Haskell; no extra parentheses in Scheme, of course.
+
+-   Sifflet has a new number type, Sifflet.Data.Number.Number, which allows
+    numbers to be exact or inexact, almost as in Scheme.
+    Originally intended for the Scheme exporter, it is now
+    also used internally by Sifflet's interpreter.
+
+-   The code is reorganized.  There is now a separate library package,
+    sifflet-lib, in addition to the sifflet package which provides
+    only the executable.  At present, the library's API is highly
+    unstable.
+
+-   Sifflet has a new parser for user inputs, made with Parsec, 
+    allowing more intuitive input
+    of numbers (liberation from Haskell number syntax:
+    for example, 0.0 can now be entered as 0.0, 0., or .0)
+    and providing more intelligible error messages
+    for some kinds of invalid input.
+
+-   Sifflet requires Gtk2hs packages (gtk, glib, cairo) version 0.11;
+    support for the 0.10 Gtk2hs packages is dropped.
+
+Release 0.1.7, 2010 June 10
+---------------------------
+
+-   Tightened upper bounds on package dependency versions, in anticipation of 
+    incompatible changes in the fgl API.
+-   No bug fixes or new features.
+-   Users who are staying with fgl == 5.4.2.2 will not benefit from upgrading 
+    to Sifflet 0.1.7.
+
+Release 0.1.6, 2010 May 27
+--------------------------
+
+-   Sifflet offers to save your work if you give the quit or 
+    open file command and have unsaved changes.
+-   Sifflet now builds with Gtk2hs 0.11.
+-   Some bug fixes and improved error checking.
+
+Release 0.1.5, 2010 May 13
+--------------------------
+
+First public release.
diff --git a/sifflet.cabal b/sifflet.cabal
--- a/sifflet.cabal
+++ b/sifflet.cabal
@@ -1,5 +1,5 @@
 name: sifflet
-version: 1.2.5.1
+version: 2.0.0.0
 cabal-version: >= 1.8
 build-type: Simple
 license: BSD3
@@ -17,19 +17,17 @@
   Sifflet show the intermediate steps of the computation
   on the diagram, and can expand function calls to show further details.
   It is intended as an aid for learning about recursion.
-  Version 1.2.5: Compatibility with GHC 7.4.1.
-  Version 1.2.4: Dependencies revised for compatibility with HXT 9.1.
-  Version 1.2.3: Dependencies revised for compatibility with GHC 7.0
-  and Haskell Platform 2011.2.
+  Version 2.0.0.0 adds partial support for higher-order functions, like map 
+  and filter.
 category: 
   Language 
   , Visual Programming
-tested-with: GHC == 7.4.1
+tested-with: GHC == 7.4.2
 -- data-files: filename list
 -- data-dir: directory
 -- extra-tmp-files: filename list
 
-extra-source-files: README
+extra-source-files: README ISSUES RELEASE-NOTES
 
 flag no-link
   description: Inhibit linking; just compile.
@@ -50,7 +48,7 @@
     hxt >= 9 && < 10.0,
     mtl >= 1.1 && < 2.2,
     process >= 1.0 && < 1.2,
-    sifflet-lib >= 1.2.3
+    sifflet-lib >= 2.0 && < 2.1
 
   if !os(windows)
     build-depends: unix >= 2.3 && < 2.6
diff --git a/sifflet.hs b/sifflet.hs
--- a/sifflet.hs
+++ b/sifflet.hs
@@ -4,13 +4,13 @@
 import Data.IORef
 import System.Exit
 
-import Sifflet.Data.Functoid
-import Sifflet.Data.TreeLayout
-import Sifflet.Examples
-import Sifflet.Language.Expr
-import Sifflet.Language.Parser
-import Sifflet.UI
-import Sifflet.Util
+import Data.Sifflet.Functoid
+import Data.Sifflet.TreeLayout
+import Language.Sifflet.Examples
+import Language.Sifflet.Expr
+import Language.Sifflet.Parser
+import Graphics.UI.Sifflet
+import Language.Sifflet.Util
 
 import Options
 
@@ -29,10 +29,10 @@
   ; let commands = processArgs args
 
     -- create the user interface
-  ; vpui <- vpuiNew wstyle initialEnv
+  ; vpui <- vpuiNew wstyle initialEnv (optionsDebug commands)
   ; let vpui' = vpui {vpuiToolkits = defaultVPUIToolkitsWithExamples}
   ; uiref <- newIORef vpui'
-    -- Create wome windows
+    -- Create some windows
   ; let cbmgr = mkCBMgr uiref
   ; vpui'' <- showWorkWin vpui' workspaceId cbmgr
   ; writeIORef uiref vpui''
@@ -65,7 +65,7 @@
 -- Return an exit code if processing should continue.
 
 performCommands :: Options -> CBMgr -> IORef VPUI -> IO (Maybe ExitCode)
-performCommands options cbmgr uiref =
+performCommands options cbmgr uiref = 
     -- Error?
     case optionsErrorMsg options of
       Just msg ->
@@ -78,14 +78,14 @@
             {
               -- show function pad?
               when (optionsShowFunPad options)
-                   (modifyIORefIO uiref (showFunctionPadWindow cbmgr))
+                   (modifyIORefIO (showFunctionPadWindow cbmgr) uiref)
 
               -- source a file?
               -- What if no such file???
             ; case optionsSourceFile options of
                 Nothing -> return ()
                 Just file ->
-                    modifyIORefIO uiref (openFilePath cbmgr file)
+                    modifyIORefIO (openFilePath cbmgr file) uiref
 
               -- show or call a function?
             ; case (optionsShowFunction options, 
