From 9163dff54aeb2596b380d6544f1e8faf9e00b199 Mon Sep 17 00:00:00 2001
From: Pat Thoyts <patthoyts@users.sourceforge.net>
Date: Fri, 13 Jun 2008 17:30:39 +0100
Subject: [PATCH] optcl-3010 import

---
 GNU_Public_Licence.html      |  525 -------------
 Images/class.gif             |  Bin 0 -> 190 bytes
 Images/copy.gif              |  Bin 0 -> 384 bytes
 Images/dispatch.gif          |  Bin 0 -> 81 bytes
 Images/down.xbm              |    6 +
 Images/enum.gif              |  Bin 0 -> 117 bytes
 Images/find.gif              |  Bin 0 -> 101 bytes
 Images/find.xbm              |    9 +
 Images/hide.xbm              |    9 +
 Images/interface.gif         |  Bin 0 -> 99 bytes
 Images/libselect.gif         |  Bin 0 -> 99 bytes
 Images/libselect.xbm         |    9 +
 Images/method.gif            |  Bin 0 -> 370 bytes
 Images/module.gif            |  Bin 0 -> 178 bytes
 Images/noselect.gif          |  Bin 0 -> 78 bytes
 Images/property.gif          |  Bin 0 -> 376 bytes
 Images/right.xbm             |    6 +
 Images/select.gif            |  Bin 0 -> 108 bytes
 Images/show.xbm              |    9 +
 Images/struct.gif            |  Bin 0 -> 181 bytes
 Images/typedef.gif           |  Bin 0 -> 107 bytes
 Images/union.gif             |  Bin 0 -> 138 bytes
 ReadMe.txt                   |   24 +-
 docs/optcl.html              |   28 +-
 docs/optcltypelibaccess.html |    1 -
 docs/optcltypes.html         |    7 +-
 install/optcl80.dll          |  Bin 204800 -> 0 bytes
 install/optcl_Install.tcl    |   88 ---
 install/optclstubs.dll       |  Bin 745539 -> 0 bytes
 license.txt                  |   38 +
 src/ComRecordInfoImpl.cpp    | 1162 ++++++++++++++++++++++++++++
 src/ComRecordInfoImpl.h      |   61 ++
 src/EventBinding.cpp         |    4 +-
 src/FixedSplitter.tcl        |   24 +
 src/ImageListBox.tcl         |  335 +++++++++
 src/ObjMap.cpp               |   54 +-
 src/ObjMap.h                 |    6 +-
 src/OptclBindPtr.h           |   16 +-
 src/OptclObj.cpp             |  340 +++++----
 src/OptclObj.h               |   27 +-
 src/Splitter.tcl             |  574 ++++++++++++++
 src/TLView.tcl               | 1380 ++++++++++++++++++++++++++++++++++
 src/Tooltip.tcl              |   68 ++
 src/Utilities.tcl            |   43 ++
 src/optcl.cpp                |    9 +-
 src/optcl.dsp                |  513 ++++++++++---
 src/optcl.dsw                |   29 +
 src/optcl.h                  |    2 +-
 src/optcl.tcl                |   10 +
 src/resource.aps             |  Bin 50364 -> 0 bytes
 src/resource.h               |    2 +-
 src/resource.rc              |   13 +-
 src/test.tcl                 |  104 +--
 src/typelib.cpp              |  523 +++++++++----
 src/typelib.h                |   64 +-
 src/typelib.tcl              |  747 ++++++------------
 src/utility.cpp              |  515 +++++++++++--
 src/utility.h                |   51 +-
 temp code/reg.tcl            |  139 ++++
 tests/calendar.tcl           |    4 +-
 tests/pdf.tcl                |    2 +-
 61 files changed, 5801 insertions(+), 1779 deletions(-)
 delete mode 100644 GNU_Public_Licence.html
 create mode 100644 Images/class.gif
 create mode 100644 Images/copy.gif
 create mode 100644 Images/dispatch.gif
 create mode 100644 Images/down.xbm
 create mode 100644 Images/enum.gif
 create mode 100644 Images/find.gif
 create mode 100644 Images/find.xbm
 create mode 100644 Images/hide.xbm
 create mode 100644 Images/interface.gif
 create mode 100644 Images/libselect.gif
 create mode 100644 Images/libselect.xbm
 create mode 100644 Images/method.gif
 create mode 100644 Images/module.gif
 create mode 100644 Images/noselect.gif
 create mode 100644 Images/property.gif
 create mode 100644 Images/right.xbm
 create mode 100644 Images/select.gif
 create mode 100644 Images/show.xbm
 create mode 100644 Images/struct.gif
 create mode 100644 Images/typedef.gif
 create mode 100644 Images/union.gif
 delete mode 100644 install/optcl80.dll
 delete mode 100644 install/optcl_Install.tcl
 delete mode 100644 install/optclstubs.dll
 create mode 100644 license.txt
 create mode 100644 src/ComRecordInfoImpl.cpp
 create mode 100644 src/ComRecordInfoImpl.h
 create mode 100644 src/FixedSplitter.tcl
 create mode 100644 src/ImageListBox.tcl
 create mode 100644 src/Splitter.tcl
 create mode 100644 src/TLView.tcl
 create mode 100644 src/Tooltip.tcl
 create mode 100644 src/Utilities.tcl
 create mode 100644 src/optcl.dsw
 create mode 100644 src/optcl.tcl
 delete mode 100644 src/resource.aps
 create mode 100644 temp code/reg.tcl

diff --git a/GNU_Public_Licence.html b/GNU_Public_Licence.html
deleted file mode 100644
index ee2d7f1..0000000
--- a/GNU_Public_Licence.html
+++ /dev/null
@@ -1,525 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>GNU General Public License - GNU Project - Free Software Foundation (FSF)</TITLE>
-<LINK REV="made" HREF="mailto:webmasters@www.gnu.org">
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD">
-<H1>GNU General Public License</H1>
-
-
-<P>
-
-<HR>
-
-<P>
-
-<H2>Table of Contents</H2>
-<UL>
-<LI><A NAME="TOC1" HREF="gpl.html#SEC1">GNU GENERAL PUBLIC LICENSE</A>
-<UL>
-<LI><A NAME="TOC2" HREF="gpl.html#SEC2">Preamble</A>
-<LI><A NAME="TOC3" HREF="gpl.html#SEC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A>
-<LI><A NAME="TOC4" HREF="gpl.html#SEC4">How to Apply These Terms to Your New Programs</A>
-
-</UL>
-</UL>
-
-<P>
-
-<HR>
-
-<P>
-
-
-
-<H2><A NAME="SEC1" HREF="gpl.html#TOC1">GNU GENERAL PUBLIC LICENSE</A></H2>
-<P>
-Version 2, June 1991
-
-</P>
-
-<PRE>
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.  
-59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-</PRE>
-
-
-
-<H2><A NAME="SEC2" HREF="gpl.html#TOC2">Preamble</A></H2>
-
-<P>
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-</P>
-<P>
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-</P>
-<P>
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-</P>
-<P>
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-</P>
-<P>
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-</P>
-<P>
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-</P>
-<P>
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-</P>
-<P>
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-</P>
-
-
-<H2><A NAME="SEC3" HREF="gpl.html#TOC3">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</A></H2>
-
-
-<P>
-
-<STRONG>0.</STRONG>
- This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-<P>
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-<P>
-
-<STRONG>1.</STRONG>
- You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-<P>
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-<P>
-
-<STRONG>2.</STRONG>
- You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-<P>
-
-<UL>
-
-<LI><STRONG>a)</STRONG>
-     You must cause the modified files to carry prominent notices
-     stating that you changed the files and the date of any change.
-
-<P>
-<LI><STRONG>b)</STRONG>
-     You must cause any work that you distribute or publish, that in
-     whole or in part contains or is derived from the Program or any
-     part thereof, to be licensed as a whole at no charge to all third
-     parties under the terms of this License.
-
-<P>
-<LI><STRONG>c)</STRONG>
-     If the modified program normally reads commands interactively
-     when run, you must cause it, when started running for such
-     interactive use in the most ordinary way, to print or display an
-     announcement including an appropriate copyright notice and a
-     notice that there is no warranty (or else, saying that you provide
-     a warranty) and that users may redistribute the program under
-     these conditions, and telling the user how to view a copy of this
-     License.  (Exception: if the Program itself is interactive but
-     does not normally print such an announcement, your work based on
-     the Program is not required to print an announcement.)
-</UL>
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-<P>
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-<P>
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-<P>
-
-<STRONG>3.</STRONG>
- You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-
-<!-- we use this doubled UL to get the sub-sections indented, -->
-<!-- while making the bullets as unobvious as possible. -->
-<UL>
-
-<LI><STRONG>a)</STRONG>
-     Accompany it with the complete corresponding machine-readable
-     source code, which must be distributed under the terms of Sections
-     1 and 2 above on a medium customarily used for software interchange; or,
-
-<P>
-<LI><STRONG>b)</STRONG>
-     Accompany it with a written offer, valid for at least three
-     years, to give any third party, for a charge no more than your
-     cost of physically performing source distribution, a complete
-     machine-readable copy of the corresponding source code, to be
-     distributed under the terms of Sections 1 and 2 above on a medium
-     customarily used for software interchange; or,
-
-<P>
-<LI><STRONG>c)</STRONG>
-     Accompany it with the information you received as to the offer
-     to distribute corresponding source code.  (This alternative is
-     allowed only for noncommercial distribution and only if you
-     received the program in object code or executable form with such
-     an offer, in accord with Subsection b above.)
-</UL>
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-<P>
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-<P>
-
-<STRONG>4.</STRONG>
- You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-
-<STRONG>5.</STRONG>
- You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-<P>
-
-<STRONG>6.</STRONG>
- Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-<P>
-
-<STRONG>7.</STRONG>
- If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-<P>
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-<P>
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-<P>
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-<P>
-
-<STRONG>8.</STRONG>
- If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-<P>
-
-<STRONG>9.</STRONG>
- The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-<P>
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-<P>
-
-
-<STRONG>10.</STRONG>
- If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-
-
-<P><STRONG>NO WARRANTY</STRONG></P>
-
-<P>
-
-<STRONG>11.</STRONG>
- BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-<P>
-
-<STRONG>12.</STRONG>
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-<P>
-
-
-<H2>END OF TERMS AND CONDITIONS</H2>
-
-
-
-<H2><A NAME="SEC4" HREF="gpl.html#TOC4">How to Apply These Terms to Your New Programs</A></H2>
-
-<P>
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-</P>
-<P>
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-</P>
-
-<PRE>
-<VAR>one line to give the program's name and an idea of what it does.</VAR>
-Copyright (C) <VAR>yyyy</VAR>  <VAR>name of author</VAR>
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-</PRE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-</P>
-<P>
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-</P>
-
-<PRE>
-Gnomovision version 69, Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR>
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
-type `show w'.  This is free software, and you are welcome
-to redistribute it under certain conditions; type `show c' 
-for details.
-</PRE>
-
-<P>
-The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show
-the appropriate parts of the General Public License.  Of course, the
-commands you use may be called something other than <SAMP>`show w'</SAMP> and
-<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever
-suits your program.
-
-</P>
-<P>
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-</P>
-
-<PRE>
-Yoyodyne, Inc., hereby disclaims all copyright
-interest in the program `Gnomovision'
-(which makes passes at compilers) written 
-by James Hacker.
-
-<VAR>signature of Ty Coon</VAR>, 1 April 1989
-Ty Coon, President of Vice
-</PRE>
-
-<P>
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
-<HR>
-
-Return to <A HREF="/home.html">GNU's home page</A>.
-<P>
-FSF &amp; GNU inquiries &amp; questions to
-<A HREF="mailto:gnu@gnu.org"><EM>gnu@gnu.org</EM></A>.
-Other <A HREF="/home.html#ContactInfo">ways to contact</A> the FSF.
-<P>
-Comments on these web pages to
-<A HREF="mailto:webmasters@www.gnu.org"><EM>webmasters@www.gnu.org</EM></A>,
-send other questions to
-<A HREF="mailto:gnu@gnu.org"><EM>gnu@gnu.org</EM></A>.
-<P>
-Copyright notice above.<BR>
-Free Software Foundation, Inc.,
-59 Temple Place - Suite 330, Boston, MA  02111,  USA
-<P>
-Updated:
-<!-- hhmts start -->
-16 Feb 1998 tower
-<!-- hhmts end -->
-<HR>
-</BODY>
-</HTML>
diff --git a/Images/class.gif b/Images/class.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5b9ab9e00f0bf018ef5f046d3e38721254bf7fec
GIT binary patch
literal 190
zcmZ?wbhEHb6l4%&c+3C-|8Hjee_Zzen9u(k>HjbITwNUU|Gdxthb32Md-YAZ_-Tvl
zmmO~ZH#z<X1I2%$&PAz-C8;S2<(VZJ3LzP(3hti10St;iSs1w(_!)FSMuH4yU<vwg
z(sT7*i`VSCzKaWRI45w;WfgcFAi|iyAX?DVA$@-3m%p41Ngj`N5}1M*1!T0k7-UZ#
m6%ncpx^8q(yJ(aCvo&n@s?-_SE?s?bwQfOgjbA4NgEatxa!;cG

literal 0
HcmV?d00001

diff --git a/Images/copy.gif b/Images/copy.gif
new file mode 100644
index 0000000000000000000000000000000000000000..849f210d6179fdf6c35caeded8ce43c60f1cfc84
GIT binary patch
literal 384
zcmV-`0e}8SNk%w1VG#fk0Hpu`00030|Nr><`}_R;_xbzt_WAw&{{H^{`uqI$`1<np
z`Stkv@%8xa^7iTP_3ZKX<?Qn0>+;~}@Z9F^*yHT)^Y`lT_2%vK;_C6;=I`6(?(p>Y
z-skVt;p@`h>d)Nh%h~3~*5v5!^yBOD-{|n$<?Ytt>(buo&D-b7+2+pN=*89K!P4Qq
z(BQev-nPoz)ZpsI*5ty|;=a(}(B0|C*X6|2<G<12yUyRY%iOZa+OEXd|NsC0|NsC0
z|NsC0A^sIZa%Ew3Wn>_CX>@2HRA^-&M@dak03rDV0SW*=04x9i000pH5dZ)NgutJ0
zNGuuw$fS{o3^)UTr4Rsx0t89rG&vv?nodJ>dO#!;O)7FR{s9(@h9hf^w*ilApo<1T
z?hz6b6aZco78e*9cN$q6NgMzjcOD-gApjyHBqb&%D0eAY5=klmD|aj{E-wHSFqSbg
eGj~}4G)c6rQUEnJH#j*uJ8ea_SyIVDK>$0aW7{kM

literal 0
HcmV?d00001

diff --git a/Images/dispatch.gif b/Images/dispatch.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3f6fe400a4266b834354a7b664eaf671b08cb37d
GIT binary patch
literal 81
zcmZ?wbhEHb6l4%&SjfO|(aDK{f#E+GDE?$&<YHiA&;g17Wd#`+n3SgUuRQ&hUzyn;
g!a173rsGZQw4;o1$8zp|@0oGr&?lekPK*rJ0RBoGK>z>%

literal 0
HcmV?d00001

diff --git a/Images/down.xbm b/Images/down.xbm
new file mode 100644
index 0000000..c867fce
--- /dev/null
+++ b/Images/down.xbm
@@ -0,0 +1,6 @@
+/* Created with The GIMP */
+#define C__Program_Files_Tcl_lib_width 12
+#define C__Program_Files_Tcl_lib_height 12
+static unsigned char C__Program_Files_Tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x00,
+   0xe0, 0x00, 0xc0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/Images/enum.gif b/Images/enum.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7e48ce067522f0450d91c33db4f835fbc49ca4a5
GIT binary patch
literal 117
zcmZ?wbhEHb6l4%&SjYeZ_V#D~gMs2dQRkx6#FEq$h4Rdj426)4R0VfW-v9>1pDc`A
z3``6<Amt#93{1LH`e!aU{$p0>qt<}WF^{x%c_utF<j+W)uUwe8^62d6PH#^fSnhqj
NsCn1cwk9S9YXDj7Ed2lg

literal 0
HcmV?d00001

diff --git a/Images/find.gif b/Images/find.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4802a6c281ea4a03ddf8c74a88fb7a7d1ff68056
GIT binary patch
literal 101
zcmZ?wbhEHb6l4%$SjYeZ2M!$g4+e@qSs1w(m>6_Gq9Az&CbKF1D^Ii4%OxoIu!rw;
xx^$<pgJoh&%G8&Vv+`1wWj{Nm_AF0j-}7^`F2uGtCU}>~ymLE!Y!L&4H301yCk6lj

literal 0
HcmV?d00001

diff --git a/Images/find.xbm b/Images/find.xbm
new file mode 100644
index 0000000..03267a1
--- /dev/null
+++ b/Images/find.xbm
@@ -0,0 +1,9 @@
+/* Created with The GIMP */
+#define C__Program_Files_Tcl_lib_width 17
+#define C__Program_Files_Tcl_lib_height 18
+static unsigned char C__Program_Files_Tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x50, 0x1c, 0x00,
+   0x50, 0x1c, 0x00, 0x70, 0x1c, 0x00, 0xf8, 0x3e, 0x00, 0xe8, 0x3a, 0x00,
+   0xfc, 0x7f, 0x00, 0x7e, 0xfb, 0x00, 0x7e, 0xfb, 0x00, 0xfe, 0xfb, 0x00,
+   0xfe, 0xfe, 0x00, 0x3a, 0xe8, 0x00, 0x3a, 0xe8, 0x00, 0x3e, 0xf8, 0x00,
+   0x3e, 0xf8, 0x00, 0x00, 0x00, 0x00 };
diff --git a/Images/hide.xbm b/Images/hide.xbm
new file mode 100644
index 0000000..11e2008
--- /dev/null
+++ b/Images/hide.xbm
@@ -0,0 +1,9 @@
+/* Created with The GIMP */
+#define C__Program_Files_Tcl_lib_width 17
+#define C__Program_Files_Tcl_lib_height 17
+static unsigned char C__Program_Files_Tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x20, 0x04, 0x00, 0x10, 0x08, 0x00,
+   0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x20, 0x04, 0x00, 0x10, 0x08, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00 };
diff --git a/Images/interface.gif b/Images/interface.gif
new file mode 100644
index 0000000000000000000000000000000000000000..40548e67785b1ee74517aabd3cffc66945b28033
GIT binary patch
literal 99
zcmZ?wbhEHb6l4%&SjYeZeN!&}2Lr`_qRvIBi6yBi3gww4844j8sS56%z5xu1KUo;L
u7?>DzK*~WH8JMJ}^shYqmVa@~0yhC8huha?vEFXZoNl`G)v0Z)4AuaOL?Uqj

literal 0
HcmV?d00001

diff --git a/Images/libselect.gif b/Images/libselect.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ded2e77b7c0aa27002dbe60244c6f3f2733588e0
GIT binary patch
literal 99
zcmZ?wbhEHb6l4%&SjfO|O;C`5f#E+GDE<?5E=o--Nlj5G&n(GM2+2rQaQE~LU{L(Y
x!pOzI#GnII3e*PF!6ZGUf92`7{S6#jqFyYy%V=L$$s5tx?N;{e)HYTIYXC=kA#MNw

literal 0
HcmV?d00001

diff --git a/Images/libselect.xbm b/Images/libselect.xbm
new file mode 100644
index 0000000..4602777
--- /dev/null
+++ b/Images/libselect.xbm
@@ -0,0 +1,9 @@
+/* Created with The GIMP */
+#define c__program_files_tcl_lib_width 17
+#define c__program_files_tcl_lib_height 17
+static unsigned char c__program_files_tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0xf4, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00 };
diff --git a/Images/method.gif b/Images/method.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4835497f04a6dead7536af3b7cc865e5c8dada69
GIT binary patch
literal 370
zcmZ?wbhEHb6l4%&SjxaKp?_vq$CS2~iR~?udb*}go-nJsb827DjB}@NpE-H!#L?@G
z^?kkF(=T7Rf8*MtTQ{DZK5_HVzDo_Yy&bJn?%aC%_|fZUPv7p{dA_=$>+PFQpFVv%
zxc6dRbx%v<g#Z8lZ`*jXs=Q<ChLdGQt((>!t0?W*vE_6_UGJ`KXEv@mR#Mp7RNoI&
zMhQ^-$->CRV9%h#00baEF|hR?m|x(bBh~Mrq@W-nFlm3&!v+rxw(bKP4`f)#^|7fa
z&6MEf^*S1~&_qPsN3ftE#Aue!(TO(-tXvp5_{F5;q{R3+1mzW6m^jNSs%oSam0Xy)
zGP85@#g$cDSeOOk5|RW}Rn%O$1-UpwxdhcUG~F15#H9tL#Z@(wwA_UyWaJeWY98^F
PRZv<JaQTY6BZD;n0c^l^

literal 0
HcmV?d00001

diff --git a/Images/module.gif b/Images/module.gif
new file mode 100644
index 0000000000000000000000000000000000000000..09b5e0b0b001af17b4f278042f0b2707697d66e2
GIT binary patch
literal 178
zcmZ?wbhEHb6l4%&c+3C-|8Hjee_Zzen9u(k>HjbITwNUU|Gdxthb32Md-YAZ_-Tvl
zmmO~ZH#z<X1I3>#j9d)-3_2j4ATt<P;y;}9T+M2c{@X#oS%K?@YmIXtO9NxbfscyK
zY31A4yW%-@v@dZkN!n?pInBo*daIDWgVuD<h{eGV+Br5jO=Qh1F!<^w`B23$=UCzu
a&2JNx+*a<=m$-FLBX&ilOp~Y}gEauv>`SNs

literal 0
HcmV?d00001

diff --git a/Images/noselect.gif b/Images/noselect.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9623a07a22471aea12d9c3d647ca153e358c2e17
GIT binary patch
literal 78
zcmZ?wbhEHb6k*_EXkcKt21bhiM4gLL6H8K46v{J8G895GQWe}ieFGR2f3h%gF)%Xd
bFaQBa3j-5RPyfo(Z}}I`*>dYO7lSnb5qlL=

literal 0
HcmV?d00001

diff --git a/Images/property.gif b/Images/property.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e0af13b7f9982e1b589fcdc87cab440b674c6b1
GIT binary patch
literal 376
zcmZ?wbhEHb6l4%&SjxaKZA#CCzLu_z>W;Rm?#{YdGbc@*(ldQ(@AWGuFP=Ym^4PZ4
z=CZo#oc5OTnbZ3pJ-qSs$(`Fb&mB9wY4`TURb}Zd4aINYJp1(V?dcOc_U&G=Y2EbV
z{Mi5h|KGfR`pn5)2llMoynaSWL0olZ=CTEC1vwGxS500#uQ@Z-f9uBCtCsf6pIMue
z5xjl#ymc!lEt%hvogP$HlsIR4Ra%mFdXjH>NfOW~{6O(13nLeUJ%bJd5P<x|z&7>3
z`~nXhseTV71qBI#N&A}~Hh5@=^&H#ypu$0JVoQqCN(o;6(?>r!BpA)|6)b3ou@Lt-
z{+Y4W#f6b0Gdnk5N?FB)iBm8xAxT(OP2Gi=i<3h(luKSiQ%l>0g<D8MPC`gtM^{hZ
zz?DZ>QeIM6Ls!|*$c<M-N<m6hQ_s-Y#9dTcQCUq(-{^#=l8U<ahJc&5+#DIK0lyEf
Ay8r+H

literal 0
HcmV?d00001

diff --git a/Images/right.xbm b/Images/right.xbm
new file mode 100644
index 0000000..9a8a5f0
--- /dev/null
+++ b/Images/right.xbm
@@ -0,0 +1,6 @@
+/* Created with The GIMP */
+#define c__program_files_tcl_lib_width 12
+#define c__program_files_tcl_lib_height 12
+static unsigned char c__program_files_tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x70, 0x00, 0xf0, 0x00,
+   0x70, 0x00, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/Images/select.gif b/Images/select.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9b6a0bfa0a6a010ad1cf2cea827b87e860f06d74
GIT binary patch
literal 108
zcmZ?wbhEHb6k*_ESjfO|je+6+|NlS|h!p>cIv1rTmZYXAlxLP?D1>CBD!6<41~4f8
zWMSlDU}Df=00NLk1}2p$yeq3~xf_cGTNIu*i@&aoO#G&L*CWg8c+H`vt*KLY=+EV1
HWv~VS=Ds3n

literal 0
HcmV?d00001

diff --git a/Images/show.xbm b/Images/show.xbm
new file mode 100644
index 0000000..e9d8548
--- /dev/null
+++ b/Images/show.xbm
@@ -0,0 +1,9 @@
+/* Created with The GIMP */
+#define C__Program_Files_Tcl_lib_width 17
+#define C__Program_Files_Tcl_lib_height 17
+static unsigned char C__Program_Files_Tcl_lib_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x02, 0x00,
+   0x80, 0x01, 0x00, 0x10, 0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x02, 0x00,
+   0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00 };
diff --git a/Images/struct.gif b/Images/struct.gif
new file mode 100644
index 0000000000000000000000000000000000000000..2b8c789cb70028097f9871fdfd3e832e37fd306b
GIT binary patch
literal 181
zcmZ?wbhEHb6l4%&c+3C-jkEvPO#K?0zrDEYadO#_xPl!~IUB>$R>tP<NGd%TU$`r^
z;uu&Vh*10|>RgnXSdyBeP@Y+mp%9Xhs^ISF8^ECWlZBCsfuBJKqzYs>1B>T}lb)+t
zEnZ9S;%5qDywA?Vuyn2ZDj`>E9=F+k2O2kQ>zdXm*T*8_RWbACTMLg9Q@rH844Zcq
ZG_&e=sm_u(z4*F_n6mDREh<b5)&TXHJ_P^(

literal 0
HcmV?d00001

diff --git a/Images/typedef.gif b/Images/typedef.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1faec02ebbb1847d33c4da937b6a37fe0b052aba
GIT binary patch
literal 107
zcmZ?wbhEHb6l4%&SjYeZcV%SE<!=1{|6lQ+sB=+jVo7R>LV0FMhC)b2s)D<xZvcbh
zPZmZl24)5wkaCbl1}5b>{VPwuJ>S66Y?htE{m@5IL#DkU!KkcVa#7Yzr%yiDzxj$Y
GSOWmA+9D(X

literal 0
HcmV?d00001

diff --git a/Images/union.gif b/Images/union.gif
new file mode 100644
index 0000000000000000000000000000000000000000..06e042f826d521450d1791dc6d6e324b420f1257
GIT binary patch
literal 138
zcmZ?wbhEHb6l4%&SjYeZ|NsBL{Zs{r6#t1j7o{eaq^2m8XO?6rgk+>DxO@5rFev_H
zVdP?9X3zmC2Wezra+=e>l5Ot|2M#4Y$t5d9G-O?`9#0K^>KJ%^!OMo7>6Z;fmM@Iv
ldK2{iwrqyOMAk!Gy+RIm(oQb<88==1D`RoO_D&`SYXEgMG4}uf

literal 0
HcmV?d00001

diff --git a/ReadMe.txt b/ReadMe.txt
index 310352f..b2ead57 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -1,19 +1,27 @@
-OpTcl v3.0 build 04
+
+OpTcl v3.0 build 10
 -------------------
+PRE PRE ALPHA RELEASE (Friends and Family only)
+
+What's New
+----------
+Areas with Bug Fixes: Reference counting, Query Interfacing, (in/)out parameters; -with optimisation.
+
+New Features: Can now call custom interfaces. Handles COM's record structures. Library browser has search and history facilities. OpTcl works with COM better than ever before! :-)
 
 Licencing
 ---------
-Use of this software indicates an agreement to the GNU Public Licence under which, 
-this software is provided.
+Ignore any references to LGPL. I hereby renounce this license for one which is in-line with the BSD license. Please read the enclosed license.txt for details.
 
 Documentation
 -------------
-Please open the default.html file in the 'docs' directory for installation instructions 
-and documentation.
+This is a beta release so the docs aren't there yet ... I've included the old ones just for comparison. A lot of the previous functionality and syntax is identical. A few things however have changed dramatically.
 
+To start things off try the following
+package require optcl
+tlview::viewlib .l
 
+I welcome any comments, suggestions and bug reports. Enjoy!
 
-I welcome any comments, suggestions and bug reports:
+Farzad.
 fuzz@sys.uea.ac.uk
-
-
diff --git a/docs/optcl.html b/docs/optcl.html
index 206a2d5..a1b76dc 100644
--- a/docs/optcl.html
+++ b/docs/optcl.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
-<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
 <title>OpTcl Documentation</title>
 </head>
 
@@ -18,12 +18,8 @@ Pezeshkpour</a></p>
 
 <p align="center">August 1999</p>
 
-<p>This software is freely distributed under the GNU Public
-Licence. I've include this in this distribution as an HTML file.</p>
-
-<p>Gosh! So much to document here, and so little time. This is a
-preliminary, and rather informal document - a better version is
-on its way!</p>
+<p>This software is freely distributed under the GNU Lesser General Public License. I've include this in this distribution as an
+<a href="../GNU_LGPL.html"> HTML file</a>.</p>
 
 <h1>The Distribution</h1>
 
@@ -33,9 +29,11 @@ the distribution:</p>
 <table border="0" cellpadding="4" cellspacing="4">
     <tr>
         <td><strong>install</strong></td>
-        <td>Holds the installer script and two versions of the
-        DLL - one for Tcl 8.0.5 (no stubs), and one with stubs
-        enabled, built for Tcl 8.2 libraries.</td>
+        <td>Holds the installer script and the debug and release versions of the
+          stubbed DLLs for Tcl8.2 and above. I also wanted to build a
+          distribution for Tcl8.0.5+ without stubs, but no matter were I
+          downloaded the Tcl installer from, it failed half way through the
+          installation.</td>
     </tr>
     <tr>
         <td><strong>docs</strong></td>
@@ -49,7 +47,8 @@ the distribution:</p>
     <tr>
         <td><strong>tests</strong></td>
         <td>A couple of test scripts using MS Word, and the
-        Calendar Control.</td>
+        Calendar Control. Need to put an example of scripting DirectX - should
+          nicely show off what OpTcl can really do! :-)</td>
     </tr>
 </table>
 
@@ -69,15 +68,14 @@ is applied to that directory.</p>
     <li>Distribute example files.</li>
     <li>Implement array parameters.</li>
     <li>Implement default parameter values.</li>
-    <li>Test <em>out</em>-flagged parameters (I haven't found a
-        server to do this, yet).</li>
     <li>Implement <em>in/out</em>-flagged parameters for events.</li>
     <li>Use Type Libraries on the type conversion of an event-handlers
         result.</li>
     <li>Test with DCOM. (does anyone have a setup that can do
         this?)</li>
     <li>Write an ActiveScripting engine interface.</li>
-    <li>In some cases perhaps, reconsider syntax.</li>
+    <li>Remove explicit reference counting - I can't do this until Scriptics
+      patch the Tcl core to enable 'precious' objects.</li>
 </ul>
 
 <h1>Known Bugs/Limitations</h1>
@@ -87,6 +85,8 @@ is applied to that directory.</p>
     <li>Can't set parameters by their name, � la Visual Basic.</li>
     <li>Microsoft Forms ActiveX objects can't be fully in-place
         activated.</li>
+    <li>Lack of reference counting means that objects within records need to be
+      explicitly unlocked.</li>
 </ul>
 
 <h1>Credits</h1>
diff --git a/docs/optcltypelibaccess.html b/docs/optcltypelibaccess.html
index f83e0b8..7527b88 100644
--- a/docs/optcltypelibaccess.html
+++ b/docs/optcltypelibaccess.html
@@ -41,7 +41,6 @@ synopsis:</p>
         <em>libname</em></dd>
     <dd><a href="#typelib::typeinfo"><strong>typelib::typeinfo</strong></a>
         <em>libname.type </em>?<em>element</em>?</dd>
-    <dt>&nbsp;</dt>
 </dl>
 
 <h3>Description</h3>
diff --git a/docs/optcltypes.html b/docs/optcltypes.html
index 55bcdb6..54dd225 100644
--- a/docs/optcltypes.html
+++ b/docs/optcltypes.html
@@ -27,10 +27,11 @@ accurrately described. </p>
 allow for the accurate type conversion between Tcl objects and
 COM types, and b) speed up an invocation on an object. </p>
 
-<p>Optcl is now type library aware - at least in terms of <a
+<p>OpTcl is now type library aware - at least in terms of <a
 href="optcltypelibaccess.html">reading</a> them and being type
-sensitive in its invocations. I hope a future version will be
-able to write out Type Libraries.</p>
+sensitive in its invocations. I have a test version that can write out new
+libraries, and wrap Tcl scripts as fully-fledged ActiveX objects - more about
+this later...</p>
 
 <p>In OpTcl, types are represented as a strings comprising of the
 programmatic name for a type library and its contained typename,
diff --git a/install/optcl80.dll b/install/optcl80.dll
deleted file mode 100644
index a45c51a768b58a4dc147d5d790f684f14e33e5d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 204800
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%0A0SNsnd;{4?qSCg**8HViAW?mdEg((k
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

diff --git a/install/optcl_Install.tcl b/install/optcl_Install.tcl
deleted file mode 100644
index 0b04ace..0000000
--- a/install/optcl_Install.tcl
+++ /dev/null
@@ -1,88 +0,0 @@
-
-# OpTcl Installer
-# Author: Fuzz
-# fuzz@sys.uea.ac.uk
-
-package require registry
-
-set piccy ../docs/optcl_medium.gif
-
-set installfolder [file join [info library] .. optcl]
-set installname optcl.dll
-
-puts "Install dir: $installfolder"
-set version [info tclversion]
-
-if {$version < 8.0} {
-	tk_messageBox -message "Sorry, but OpTcl needs Tcl version 8.0.5" -type ok
-	exit
-} elseif {$version < 8.1} {
-	set dll optcl80.dll
-} elseif {$version < 9.0} {
-	set dll optclstubs.dll
-} else {
-	tk_messageBox -message "Sorry, but OpTcl was compiled for Tcl major-version 8" -type ok
-}
-
-image create photo optclim -file $piccy
-
-proc updategui {} {
-	global installfolder installname
-	if [file exists [file join $installfolder $installname]] {
-		.uninstall config -state normal
-		.install config -text "Re-install for Tcl[info tclversion]"
-	} else {
-		.uninstall config -state disabled
-		.install config -text "Install for Tcl[info tclversion]"
-	} 
-}
-
-proc install {} {
-	global installfolder installname dll
-	set answer [tk_messageBox -title {} -message "Okay to install $dll in $installfolder\nand register as OpTcl package?" -icon question -type yesno]
-	
-	switch $answer {
-		no {}
-		yes {
-			set bad [catch {
-				file mkdir $installfolder
-				file copy -force $dll [file join $installfolder $installname]
-				pkg_mkIndex -direct $installfolder
-			} err]
-			if {$bad} {
-				tk_messageBox -type ok -message "Error: $err" -icon error
-			} else {
-				tk_messageBox -type ok -message "OpTcl successfully installed." -icon info
-			}
-			exit
-		}
-	}
-}
-
-proc uninstall {} {
-	global installfolder installname
-	set reply [tk_messageBox -type yesno -message "Delete package OpTcl located at $installfolder?" -icon question]
-	if {[string compare $reply yes] != 0} return
-	file delete [file join $installfolder $installname] [file join $installfolder pkgIndex.tcl] $installfolder
-	updategui
-}
-
-wm title . "OpTcl Installer - F2 for console"
-bind . <F2> {console show}
-bind . <Alt-F4> {exit}
-
-label .im -image optclim -relief flat -bd 0
-button .install -text Install... -command install -width 16 -height 1 -bd 2 -font {arial 8 bold}
-button .uninstall -text Uninstall -command uninstall -width 16 -height 1 -bd 2 -font {arial 8 bold}
-button .quit -text Quit -command exit -bd 2 -font {arial 8 bold} -width 5 -height 1
-
-grid .im -column 0 -row 0 -rowspan 2 -padx 2 -pady 2
-grid .install -column 1 -row 0 -padx 2 -pady 2 -sticky nsew
-grid .uninstall -column 2 -row 0 -padx 2 -pady 2 -sticky nsew
-grid .quit -column 1 -row 1 -columnspan 2 -padx 2 -pady 2 -sticky nsew
-
-
-wm resizable . 0 0 
-updategui
-raise .
-focus -force .
diff --git a/install/optclstubs.dll b/install/optclstubs.dll
deleted file mode 100644
index 516434b01076ebc7afea0f1189e12aa5a1d10100..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 745539
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%0A8WzrQkO?MNF$$&&aeGT3`n1yKn1z@7X
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
F{1>?L{^$Sz

diff --git a/license.txt b/license.txt
new file mode 100644
index 0000000..363ea12
--- /dev/null
+++ b/license.txt
@@ -0,0 +1,38 @@
+This software is copyrighted by Farzad Pezeshkpour.
+The following terms apply to all files associated with the software 
+unless explicitly disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
+
+GOVERNMENT USE: If you are acquiring this software on behalf of the
+U.S. government, the Government shall have only "Restricted Rights"
+in the software and related documentation as defined in the Federal 
+Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
+are acquiring the software on behalf of the Department of Defense, the
+software shall be classified as "Commercial Computer Software" and the
+Government shall have only "Restricted Rights" as defined in Clause
+252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
+authors grant the U.S. Government and others acting in its behalf
+permission to use and distribute the software in accordance with the
+terms specified in this license. 
diff --git a/src/ComRecordInfoImpl.cpp b/src/ComRecordInfoImpl.cpp
new file mode 100644
index 0000000..d393911
--- /dev/null
+++ b/src/ComRecordInfoImpl.cpp
@@ -0,0 +1,1162 @@
+
+
+/*
+ *-------------------------------------------------------------------------
+ * ComRecordInfoImpl.cpp
+ *	Implements an IRecordInfo, that unlike the one shipped by MS, isn't 
+ *	reliant on the presence of a GUID for any structure.
+ * Copyright (C) 2000 Farzad Pezeshkpour
+ *
+ * Email:	fuzz@sys.uea.ac.uk
+ * Date:	6th April 2000
+ *
+ * Licence:
+ *	This library is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU Lesser General Public
+ *	License as published by the Free Software Foundation; either
+ *	version 2.1 of the License, or (at your option) any later version.
+ *
+ *	This library is distributed in the hope that it will be useful,
+ *	but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *	Lesser General Public License for more details.
+ *
+ *	You should have received a copy of the GNU Lesser General Public
+ *	License along with this library; if not, write to the Free Software
+ *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *-------------------------------------------------------------------------
+ */
+
+
+
+#include "stdafx.h"
+#include <atlbase.h>
+#include <atlcom.h>
+#include "ComRecordInfoImpl.h"
+
+/*
+ *-------------------------------------------------------------------------
+ * Class CComRecordInfoImpl --
+ *	Declaration of the class that implements the new IRecord Info.
+ *-------------------------------------------------------------------------
+ */
+class CComRecordInfoImpl : 
+public CComObjectRoot, public IRecordInfo
+{
+public:
+	BEGIN_COM_MAP(CComRecordInfoImpl)
+		COM_INTERFACE_ENTRY(IRecordInfo)
+	END_COM_MAP()
+
+
+	CComRecordInfoImpl();
+	virtual ~CComRecordInfoImpl();
+
+	HRESULT SetTypeInfo (ITypeInfo *pti);
+	void FinalRelease ();
+
+	STDMETHOD(RecordInit)(PVOID pvNew);
+    STDMETHOD(RecordClear)(PVOID pvExisting);
+    STDMETHOD(RecordCopy)(PVOID pvExisting, PVOID pvNew);
+    STDMETHOD(GetGuid)(GUID  *pguid);
+	STDMETHOD(GetName)(BSTR  *pbstrName);
+    STDMETHOD(GetSize)(ULONG  *pcbSize);
+    STDMETHOD(GetTypeInfo)(ITypeInfo  * *ppTypeInfo);
+    STDMETHOD(GetField)(PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField);
+    STDMETHOD(GetFieldNoCopy)(PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField, PVOID  *ppvDataCArray);
+    STDMETHOD(PutField)(ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField);
+    STDMETHOD(PutFieldNoCopy)(ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField);
+    STDMETHOD(GetFieldNames)(ULONG  *pcNames, BSTR  *rgBstrNames);
+    BOOL STDMETHODCALLTYPE IsMatchingType(IRecordInfo  *pRecordInfo);
+    PVOID STDMETHODCALLTYPE RecordCreate(void);
+    STDMETHOD(RecordCreateCopy)(PVOID pvSource, PVOID  *ppvDest);
+    STDMETHOD(RecordDestroy)(PVOID pvRecord);
+
+protected:
+	STDMETHODIMP GetFieldNoCopy(PVOID pvData, VARDESC *pvd, VARIANT  *pvarField, PVOID  *ppvDataCArray);
+	STDMETHODIMP PutFieldNoCopy(ULONG wFlags, PVOID pvData, VARDESC *pvd, VARIANT  *pvarField);
+protected:
+	void	ReleaseTypeAttr ();
+
+protected:
+	CComPtr<ITypeInfo>	m_pti; // type info we're implementing
+	TYPEATTR *			m_pta; // type attribute for the type
+	CComBSTR			m_name; // name of the this record type 
+};
+
+
+
+/*
+ *-------------------------------------------------------------------------
+ * Class: CVarDesc
+ *	Implements a wrapper for the VARDESC data type, and its retrieval from
+ *	an ITypeInfo interface pointer.
+ *-------------------------------------------------------------------------
+ */
+class CVarDesc {
+protected:
+	CComPtr<ITypeInfo> m_pti;	// reference to the ITypeInfo parent of the VARDESC
+public:
+	VARDESC *	m_pvd;			// the vardesc itself
+public:
+	// constructor / destructor
+	CVarDesc () : m_pvd(NULL) {}
+
+	virtual ~CVarDesc () {
+		Release();
+	}
+
+
+	// operator overloads to make this object look more like a VARDESC...
+	
+	// pointer de-reference
+	VARDESC * operator-> () {
+		ATLASSERT (m_pvd != NULL);
+		return m_pvd;
+	}
+
+	// castin operator
+	operator VARDESC* () {
+		ATLASSERT (m_pvd != NULL);
+		return m_pvd;		
+	}
+
+	/*
+	 *-------------------------------------------------------------------------
+	 * Release --
+	 *	Releases the VARDESC if it has been allocated.
+	 *	Releases reference to the ITypeInfo.
+	 *
+	 * Result:
+	 *	None.
+	 *
+	 * Side Effects:
+	 *	None.	
+	 *-------------------------------------------------------------------------
+	 */
+	void Release () {
+		if (m_pvd != NULL) {
+			ATLASSERT(m_pti != NULL);
+			m_pti->ReleaseVarDesc(m_pvd);
+			m_pti.Release();
+			m_pvd = NULL;
+		}
+	}
+
+
+	/*
+	 *-------------------------------------------------------------------------
+	 * Set --
+	 *	Sets the VARDESC based on an index into the ITypeInfo parameter.
+	 *
+	 * Result:
+	 *	S_OK iff succeeded.
+	 *
+	 * Side Effects:
+	 *	Any previous VARDESC is released.	
+	 *-------------------------------------------------------------------------
+	 */
+	HRESULT Set (ITypeInfo *pti, ULONG index) {
+		Release();
+		m_pti = pti;
+		HRESULT hr;
+		hr = m_pti->GetVarDesc (index, &m_pvd);
+		return hr;
+	}
+
+
+	/*
+	 *-------------------------------------------------------------------------
+	 * Set --
+	 *	Sets the VARDESC based on the variable name within the ITypeInfo parameter.
+	 *	
+	 * Result:
+	 *	S_OK iff succeeded.
+	 *
+	 * Side Effects:
+	 *	Any previous VARDESC is released.	
+	 *-------------------------------------------------------------------------
+	 */
+	HRESULT Set (ITypeInfo *pti, LPCOLESTR name) {
+		CComPtr<ITypeComp> ptc;
+		HRESULT hr;
+		hr = pti->GetTypeComp (&ptc);
+		if (FAILED(hr))
+			return hr;
+		CComPtr<ITypeInfo> pti2;
+		DESCKIND dk;
+		BINDPTR bp;
+		hr = ptc->Bind ((LPOLESTR)name, 0, INVOKE_PROPERTYPUT | INVOKE_PROPERTYPUTREF, &pti2, &dk, &bp);
+		if (FAILED(hr))
+			return hr;
+		if (dk != DESCKIND_VARDESC) {
+			ReleaseBindPtr(dk, bp);
+			return E_FAIL;
+		} else {
+			Release();
+			m_pvd = bp.lpvardesc;
+			m_pti = pti;
+			return S_OK;
+		}
+	}
+
+
+private:
+	/*
+	 *-------------------------------------------------------------------------
+	 * ReleaseBindPtr --
+	 *	Releases the bind ptr according to its type.
+	 *
+	 * Result:
+	 *	None.
+	 *
+	 * Side Effects:
+	 *	None.	
+	 *-------------------------------------------------------------------------
+	 */
+	void ReleaseBindPtr (DESCKIND dk, BINDPTR bp) {
+		if (bp.lptcomp == NULL)
+			return;
+
+		switch (dk) {
+		case DESCKIND_FUNCDESC:
+			m_pti->ReleaseFuncDesc(bp.lpfuncdesc);
+			break;			
+		case DESCKIND_TYPECOMP:
+			bp.lptcomp->Release();
+			break;
+		default:
+			ATLASSERT(FALSE);
+			break;
+		}
+	}
+};
+
+
+//------------------ IRecordInfo Implementation ---------------------------
+
+
+/*
+ *-------------------------------------------------------------------------
+ * GetRecordInfoFromTypeInfo2 --
+ *	Creates a valid IRecordInfo interface for the give ITypeInfo interface.
+ *	The only criteria is that the type info must be of the type TKIND_RECORD
+ *	The type info does not have to provide a GUID.
+ *
+ * Result:
+ *	S_OK iff successful.
+ *
+ * Side Effects:
+ *	A CComRecordInfo object is created on the heap.
+ *
+ *-------------------------------------------------------------------------
+ */
+HRESULT GetRecordInfoFromTypeInfo2 (ITypeInfo *pti, IRecordInfo **ppri)
+{
+	ATLASSERT (pti != NULL && ppri != NULL);
+	CComObject<CComRecordInfoImpl> *pri = NULL;
+	CComPtr<IRecordInfo> ptmpri;
+	HRESULT hr = CComObject<CComRecordInfoImpl>::CreateInstance (&pri);
+	if (FAILED (hr))
+		return hr;
+	hr = pri->QueryInterface (&ptmpri);
+	if (FAILED(hr))
+		return hr;
+	hr = pri->SetTypeInfo (pti);
+	if (FAILED (hr))
+		return hr;
+	return ptmpri.CopyTo(ppri);
+}
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CComRecordInfoImpl::CComRecordInfoImpl() : m_pta(NULL)
+{
+
+}
+
+CComRecordInfoImpl::~CComRecordInfoImpl()
+{
+
+}
+
+/*
+ *-------------------------------------------------------------------------
+ * FinalRelease --
+ *	Called by the ATL framework when the object is about to be destroyed.
+ *
+ * Result:
+ *	None.
+ *
+ * Side Effects:
+ *	Releases the TYPEATTR for this Record Info.	
+ *-------------------------------------------------------------------------
+ */
+void CComRecordInfoImpl::FinalRelease () {
+	ReleaseTypeAttr();
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * SetTypeInfo --
+ *	Sets the current TypeInfo that this RecordInfo is implementing.
+ *
+ * Result:
+ *	S_OK iff successful.
+ *
+ * Side Effects:
+ *	Releases any previous type info reference and attributes.
+ *
+ *-------------------------------------------------------------------------
+ */
+HRESULT CComRecordInfoImpl::SetTypeInfo (ITypeInfo *pti)
+{
+	TYPEATTR *pta = NULL;
+	// retrieve the type attribute for the 
+	try {
+		if (FAILED(pti->GetTypeAttr(&pta)))
+			throw false;
+		if (pta->typekind != TKIND_RECORD)
+			throw false;
+		ReleaseTypeAttr();
+		m_pti = pti;
+		m_pta = pta;
+		pti->GetDocumentation(-1, &m_name, NULL, NULL, NULL);
+		return S_OK;
+	} catch (...) {
+		if (pta != NULL)
+			pti->ReleaseTypeAttr(pta);
+		return E_INVALIDARG;
+	}
+}
+
+/*
+ *-------------------------------------------------------------------------
+ * ReleaseTypeAttr --
+ *	Releases the TYPEATTR if any.
+ *
+ * Result:
+ *	None.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+void CComRecordInfoImpl::ReleaseTypeAttr ()
+{
+	ATLASSERT (m_pta == NULL || m_pti != NULL);
+
+	if (m_pta != NULL && m_pti != NULL) {
+		m_pti->ReleaseTypeAttr(m_pta);
+		m_pta = NULL;
+	}
+}
+
+
+
+
+
+
+/*
+ *-------------------------------------------------------------------------
+ * RecordInit --
+ *	Initiliases the contents of a created record structure. All existing
+ *	values are ignored.
+ *
+ * Result:
+ *	S_OK iff successfull.
+ *
+ * Side Effects:
+ *	None.
+ *
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::RecordInit(PVOID pvNew)
+{
+	HRESULT hr;
+	for (WORD iVar = 0; iVar < m_pta->cVars; iVar++) {
+
+		CVarDesc vd;
+		PVOID pvField;
+		CComPtr<ITypeInfo> pRefInfo;
+		CComPtr<IRecordInfo> pRefRecInfo;
+
+
+		hr = vd.Set(m_pti, iVar);
+		if (FAILED(hr))
+			return hr;
+		ATLASSERT ( (vd->elemdescVar.tdesc.vt & VT_BYREF) == NULL);
+
+
+		pvField = (BYTE*)pvNew + vd->oInst;
+		
+		
+		switch (vd->elemdescVar.tdesc.vt) {
+		case VT_USERDEFINED:
+			hr = m_pti->GetRefTypeInfo(vd->elemdescVar.tdesc.hreftype, &pRefInfo);
+			if (FAILED(hr)) return hr;
+
+			hr = GetRecordInfoFromTypeInfo2 (pRefInfo, &pRefRecInfo);
+			if (FAILED(hr)) return hr;
+
+			hr = pRefRecInfo->RecordInit(pvField);
+			if (FAILED(hr))
+				return hr;
+			break;
+
+		case VT_BSTR:
+			// is this correct?
+			*((BSTR*)pvField) = SysAllocString (L"");
+			break;
+
+		case VT_DATE:
+			*((DATE*)pvField) = 0;
+			break;
+
+		case VT_CY:
+			((CY*)pvField)->int64 = 0;
+			break;
+
+		// generic 8bit data types 
+		case VT_I1:
+		case VT_UI1:
+			*((BYTE*)pvField) = 0;
+			break;
+
+		// generic 16bit data types 
+		case VT_I2:
+		case VT_UI2:
+			*((SHORT*)pvField) = 0;
+			break;
+
+		// generic 32 bit data types
+		case VT_I4:
+		case VT_UI4:
+		case VT_R4:
+		case VT_UNKNOWN:
+		case VT_DISPATCH:
+		case VT_ERROR:
+			*((ULONG*)pvField) = 0;
+			break;
+
+		// platform specific: INT
+		case VT_INT:
+		case VT_UINT:
+			*((INT*)pvField) = 0;
+			break;
+
+		// boolean
+		case VT_BOOL:
+			*((VARIANT_BOOL*)pvField) = VARIANT_FALSE;
+			break;
+		
+		// double
+		case VT_R8:
+			*((DOUBLE*)pvField) = double(0);
+			break;
+
+		default:
+			// is it an array?
+			if (vd->elemdescVar.tdesc.vt & VT_ARRAY) {
+				*((SAFEARRAY**)pvField) = NULL;
+			}
+		}
+		
+	}
+	return S_OK;
+}
+
+
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::RecordClear --
+ *	Iterates through the existing record, clearing all referenced resources, 
+ *	and setting to zero.
+ *
+ * Result:
+ *	Standard COM result.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::RecordClear(PVOID pvExisting)
+{
+	HRESULT hr;
+	for (WORD iVar = 0; iVar < m_pta->cVars; iVar++) {
+
+		CVarDesc vd;
+		PVOID pvField;
+		CComPtr<ITypeInfo> pRefInfo;
+		CComPtr<IRecordInfo> pRefRecInfo;
+
+
+		hr = vd.Set(m_pti, iVar);
+		if (FAILED(hr))
+			return hr;
+		ATLASSERT ( (vd->elemdescVar.tdesc.vt & VT_BYREF) == NULL);
+
+		pvField = (BYTE*)pvExisting + vd->oInst;
+		
+		if (vd->elemdescVar.tdesc.vt & VT_ARRAY) {
+			SafeArrayDestroy (*((SAFEARRAY**)pvField));
+			*((SAFEARRAY**)pvField) = NULL;
+		} else {
+			switch (vd->elemdescVar.tdesc.vt) {
+			case VT_USERDEFINED:
+				hr = m_pti->GetRefTypeInfo(vd->elemdescVar.tdesc.hreftype, &pRefInfo);
+				if (FAILED(hr)) return hr;
+
+				hr = GetRecordInfoFromTypeInfo2 (pRefInfo, &pRefRecInfo);
+				if (FAILED(hr)) return hr;
+
+				hr = pRefRecInfo->RecordClear(pvField);
+				if (FAILED(hr))
+					return hr;
+				break;
+			/* strings */
+			case VT_BSTR:
+				SysFreeString(*( (BSTR*)pvField ));
+				*( (BSTR*)pvField ) = NULL;
+				break;
+			/* interface types */
+			case VT_DISPATCH:
+			case VT_UNKNOWN:
+				(*((IUnknown**)pvField))->Release();
+				(*((IUnknown**)pvField)) = NULL;
+				break;
+			}
+		}
+	}
+	return S_OK;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::RecordCopy --
+ *	Makes a copy of the existing record to the new record.
+ *
+ * Result:
+ *	Standard COM result.
+ *
+ * Side Effects:
+ *	Performs a deep copy on all references.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::RecordCopy(PVOID pvExisting, PVOID pvNew)
+{
+	HRESULT hr;
+	for (WORD iVar = 0; iVar < m_pta->cVars; iVar++) {
+		PVOID pvSrc, pvDst;
+		CVarDesc vd;
+		CComPtr<ITypeInfo> refInfo;
+		CComPtr<IRecordInfo> refrecInfo;
+
+		hr = vd.Set (m_pti, iVar);
+		if (FAILED(hr)) return hr;
+
+		pvSrc = (BYTE*)pvExisting + vd->oInst;
+		pvDst = (BYTE*)pvNew + vd->oInst;
+
+		ATLASSERT ( (vd->elemdescVar.tdesc.vt & VT_BYREF) == 0);
+		if (vd->elemdescVar.tdesc.vt & VT_ARRAY != 0) {
+			hr = SafeArrayCopyData (*((SAFEARRAY**)pvSrc), *((SAFEARRAY**)pvDst));
+			if (FAILED(hr)) return hr;
+		} else {
+			switch (vd->elemdescVar.tdesc.vt) {
+			// interfaces ...
+			case VT_UNKNOWN:
+			case VT_DISPATCH:
+				*((IUnknown**)pvDst) = *((IUnknown**)pvSrc);
+				(*((IUnknown**)pvDst))->AddRef();
+				break;
+			// string
+			case VT_BSTR:
+				*((BSTR*)pvDst) = SysAllocString (*((BSTR*)pvSrc));
+				break;
+			// 8 bit copy
+			case VT_I1:
+			case VT_UI1:
+				*((BYTE*)pvDst) = *((BYTE*)pvSrc);
+				break;
+			// 16 bit copy
+			case VT_I2:
+			case VT_UI2:
+				*((SHORT*)pvDst) = *((SHORT*)pvSrc);
+				break;
+			// 32 bit copy
+			case VT_I4:
+			case VT_UI4:
+			case VT_R4:
+			case VT_ERROR:
+				*((ULONG*)pvDst) = *((ULONG*)pvSrc);
+				break;
+			// doubles (64 bit)
+			case VT_R8:
+				*((DOUBLE*)pvDst) = *((DOUBLE*)pvSrc);
+				break;
+			// currency
+			case VT_CY:
+				*((CY*)pvDst) = *((CY*)pvSrc);
+				break;
+			// date
+			case VT_DATE:
+				*((DATE*)pvDst) = *((DATE*)pvSrc);
+				break;
+			// boolean
+			case VT_BOOL:
+				*((VARIANT_BOOL*)pvDst) = *((VARIANT_BOOL*)pvSrc);
+				break;
+			// decimal
+			case VT_DECIMAL:
+				*((DECIMAL*)pvDst) = *((DECIMAL*)pvSrc);
+				break;
+			// TypeLib defined
+			case VT_USERDEFINED:
+				hr = m_pti->GetRefTypeInfo(vd->elemdescVar.tdesc.hreftype, &refInfo);
+				if (FAILED(hr)) return hr;
+				hr = GetRecordInfoFromTypeInfo2 (m_pti, &refrecInfo);
+				if (FAILED(hr)) return hr;
+				hr = refrecInfo->RecordCopy (pvSrc, pvDst);
+				if (FAILED(hr)) return hr;
+				break;
+			default:
+				break;
+			}
+		}
+	}
+	return S_OK;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetGuid --
+ *	Retrieve GUID of struct. Can possibly be IID_NULL.
+ *
+ * Result:
+ *	S_OK
+ *
+ * Side Effects:
+ *	None.
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetGuid(GUID  *pguid)
+{
+	*pguid = m_pta->guid;
+	return S_OK;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetName --
+ *	Retrieve the name of the structure.
+ *
+ * Result:
+ *	S_OK;
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetName(BSTR  *pbstrName)
+{
+	*pbstrName = m_name.Copy();
+	return (pbstrName!=NULL?S_OK:E_FAIL);
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetSize --
+ *	Retrieve the size, in bytes of the structure.
+ *
+ * Result:
+ *	None.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetSize(ULONG  *pcbSize)
+{
+	ATLASSERT (m_pta != NULL);
+	*pcbSize = m_pta->cbSizeInstance;
+	return S_OK;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetTypeInfo --
+ *	Retrieve ITypeInfo for this structure.
+ *
+ * Result:
+ *	S_OK iff all ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetTypeInfo(ITypeInfo **ppTypeInfo)
+{
+	ATLASSERT(m_pti != NULL);
+	return m_pti.CopyTo(ppTypeInfo);
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetField --
+ *	Retrieve the value of a given field within a structure of this type
+ *	The value of the field is returned as a copy of the original.
+ * Result:
+ *	
+ * Side Effects:
+ *	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetField(PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField)
+{
+	VARIANT refVar;
+	PVOID pvFieldData;
+	HRESULT hr;
+
+	VariantInit (&refVar);
+	VariantClear(pvarField);
+
+	hr = GetFieldNoCopy (pvData, szFieldName, &refVar, &pvFieldData);
+	if (FAILED(hr))
+		return hr;
+	hr = VariantCopyInd(pvarField, &refVar);
+	return hr;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetFieldNoCopy --
+ *	Retrieve a direct reference to the field's value using a VARDESC to identify the
+ *	field. The caller must not free the returned variant.
+ *
+ * Result:
+ *	S_OK iff ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetFieldNoCopy(PVOID pvData, VARDESC *pvd, VARIANT  *pvarField, PVOID  *ppvDataCArray) {
+	HRESULT hr;
+	hr = VariantClear (pvarField);
+	if (FAILED(hr)) return hr;
+
+	// retrieve a pointer to the field data
+	PVOID pfield;
+	pfield = ( ((BYTE*)pvData) + pvd->oInst);
+	*ppvDataCArray = pfield;
+
+	// now crack the field type ...
+
+	// first some assertions ...
+	// not by-reference (COM Automation / Variant Declaration rules)
+	ATLASSERT ( (pvd->elemdescVar.tdesc.vt & VT_BYREF) == 0);
+
+	if (pvd->elemdescVar.tdesc.vt == VT_USERDEFINED) {
+		// resolve the referenced type
+		CComPtr<ITypeInfo> pRefInfo;
+		CComPtr<IRecordInfo> pRefRecInfo;
+		hr = m_pti->GetRefTypeInfo (pvd->elemdescVar.tdesc.hreftype, &pRefInfo);
+		if (FAILED(hr))
+			return hr;
+		hr = GetRecordInfoFromTypeInfo2 (pRefInfo, &pRefRecInfo);
+		if (FAILED(hr))
+			return hr;
+
+		// set the field reference and its record info
+		pvarField->pvRecord = pfield;
+		hr = pRefRecInfo.CopyTo(&(pvarField->pRecInfo));
+		if (FAILED(hr))
+			return hr;
+		pvarField->vt = VT_RECORD;
+	} else {
+		// in all other cases, we just set the pointer to the field member
+		pvarField->byref = pfield;
+		// the vartype of the resulting parameter will be a reference to the type of the field
+		pvarField->vt = (pvd->elemdescVar.tdesc.vt | VT_BYREF);
+	}
+	return S_OK;
+
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetFieldNoCopy --
+ *	Retrieve the value of a field as a reference, given the name of the field.
+ *
+ * Result:
+ *	S_OK iff ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetFieldNoCopy(PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField, PVOID  *ppvDataCArray)
+{
+	HRESULT hr;
+	CVarDesc vd;
+
+	hr = vd.Set(m_pti, szFieldName);
+	if (FAILED(hr)) return hr;
+
+	hr = VariantClear (pvarField);
+	if (FAILED(hr)) return hr;
+	return GetFieldNoCopy (pvData, vd, pvarField, ppvDataCArray);
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::PutField --
+ *	Places a copy of the variant to the field, applying any type coercion
+ *	as required. Rules for INVOKE_PROPERTYPUT are handled at a deeper 
+ *	level of call.
+ *
+ * Result:
+ *	S_OK iff all ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::PutField(ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField)
+{
+	CVarDesc vd;
+	HRESULT hr;
+	hr = vd.Set(m_pti, szFieldName);
+	if (FAILED(hr)) return hr;
+
+	VARIANT varCopy;
+	VariantInit (&varCopy);
+	hr = VariantCopy (&varCopy, pvarField);
+	if (FAILED(hr)) return hr;
+	return PutFieldNoCopy (wFlags, pvData, vd, &varCopy);
+}
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::PutFieldNoCopy --
+ *	Given the VARDESC for a field, this function places the value in 
+ *	pvarField to the field, without allocating any new resources.
+ *	I'm not too sure about the INVOKE_PROPERTYPUT implementation
+ *	which I've tried to follow from the MSDN documentation. As
+ *	far as I can make out, the field must be of type VT_DISPATCH
+ *	(or do I have to explicitly check for derivation from IDispatch?)
+ *	The value is either of type VT_DISPATCH (in which case it's default
+ *	property is used as the actual value), or any other valid variant
+ *	sub-type. The actual value will be set to the default property of
+ *	the field.
+ *	
+ * Result:
+ *	Standard COM result - S_OK iff all OK.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::PutFieldNoCopy(ULONG wFlags, PVOID pvData, VARDESC *pvd, VARIANT  *pvarField)
+{
+	PVOID field = (BYTE*)pvData + pvd->oInst;
+	HRESULT hr;
+
+	// perform the conversion ...
+	
+	if (wFlags == INVOKE_PROPERTYPUT) {
+
+		// if the field isn't a dispatch object or is null then we fail
+		if (pvd->elemdescVar.tdesc.vt != VT_DISPATCH)
+			return E_FAIL;
+
+		IDispatch * pdisp = *((IDispatch**)field);
+		if (pdisp == NULL)
+			return E_FAIL;
+
+		CComVariant varResult;
+		DISPPARAMS dp;
+		DISPID dispidNamed = DISPID_PROPERTYPUT;
+		dp.cArgs = 1;
+		dp.cNamedArgs = 1;
+		dp.rgdispidNamedArgs = &dispidNamed;
+		dp.rgvarg = pvarField;
+		hr = pdisp->Invoke (DISPID_VALUE, IID_NULL, 0, DISPID_PROPERTYPUT, &dp, &varResult, NULL, NULL);
+		return hr;
+	} else {
+		// do a straight conversion
+		hr = VariantChangeType (pvarField, pvarField, NULL, pvd->elemdescVar.tdesc.vt);
+		if (FAILED(hr))
+			return hr;
+
+		// now perform a shallow copy
+		if (pvd->elemdescVar.tdesc.vt & VT_ARRAY != 0) {
+			*((SAFEARRAY**)field) = pvarField->parray;
+		} else {
+			switch (pvd->elemdescVar.tdesc.vt) {
+			// interfaces ...
+			case VT_UNKNOWN:
+			case VT_DISPATCH:
+				*((IUnknown**)field) = pvarField->punkVal;
+				break;
+			// string
+			case VT_BSTR:
+				*((BSTR*)field) = pvarField->bstrVal;
+				break;
+			// 8 bit copy
+			case VT_I1:
+			case VT_UI1:
+				*((BYTE*)field) = pvarField->bVal;
+				break;
+			// 16 bit copy
+			case VT_I2:
+			case VT_UI2:
+				*((SHORT*)field) = pvarField->iVal;
+				break;
+			// 32 bit copy
+			case VT_I4:
+			case VT_UI4:
+			case VT_R4:
+			case VT_ERROR:
+				*((ULONG*)field) = pvarField->ulVal;
+				break;
+			// doubles (64 bit)
+			case VT_R8:
+				*((DOUBLE*)field) = pvarField->dblVal;
+				break;
+			// currency
+			case VT_CY:
+				*((CY*)field) = pvarField->cyVal;
+				break;
+			// date
+			case VT_DATE:
+				*((DATE*)field) = pvarField->date;
+				break;
+			// boolean
+			case VT_BOOL:
+				*((VARIANT_BOOL*)field) = pvarField->boolVal;
+				break;
+			// decimal
+			case VT_DECIMAL:
+				*((DECIMAL*)field) = pvarField->decVal;
+				break;
+			// TypeLib defined
+			case VT_USERDEFINED:
+				*((PVOID*)field) = pvarField->pvRecord;
+				break;
+			default:
+				break;
+			}
+		}
+		return S_OK;
+	}
+	
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::PutFieldNoCopy --
+ *	As the VARDESC variation above, but using the field name instead.
+ *
+ * Result:
+ *	S_O iff all ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::PutFieldNoCopy(ULONG wFlags, PVOID pvData, LPCOLESTR szFieldName, VARIANT  *pvarField)
+{
+	CVarDesc vd;
+	HRESULT hr;
+	hr = vd.Set(m_pti, szFieldName);
+	if (FAILED(hr)) return hr;
+	return PutFieldNoCopy (wFlags, pvData, vd, pvarField);
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::GetFieldNames --
+ *	Retrieves an array of fields names.
+ *
+ * Result:
+ *	S_OK iff all ok.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::GetFieldNames(ULONG  *pcNames, BSTR  *rgBstrNames)
+{
+	ULONG index = 0;
+	if (pcNames == NULL)
+		return E_INVALIDARG;
+	if (rgBstrNames == NULL) {
+		*pcNames = m_pta->cVars;
+		return S_OK;
+	}
+
+	if (*pcNames > m_pta->cVars)
+		*pcNames = m_pta->cVars;
+
+	try {
+		for (index = 0; index < *pcNames; index++) {
+			CVarDesc vd;
+			HRESULT hr;
+			hr = vd.Set (m_pti, index);
+			if (FAILED(hr))
+				throw (hr);
+			
+			UINT dummy = 1;
+			hr = m_pti->GetNames (vd->memid, rgBstrNames+index, 1, &dummy);
+			if (FAILED(hr))
+				throw(hr);
+		}
+	} catch (HRESULT hr) {
+		while (index > 0) 
+			SysFreeString (rgBstrNames[--index]);
+		return hr;
+	}
+	return S_OK;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::IsMatchingType --
+ *	Checks for equivalence of this record type and the one referenced by
+ *	the only parameter. Because we can't guarantee the use of GUIDs
+ *	I've settled for matching on the type and library name.
+ *
+ * Result:
+ *	TRUE iff the record structures match.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+BOOL STDMETHODCALLTYPE CComRecordInfoImpl::IsMatchingType(IRecordInfo  *pRecordInfo)
+{
+	BOOL result = FALSE;
+	CComBSTR bstrOtherName;
+	HRESULT hr;
+
+	hr = pRecordInfo->GetName(&bstrOtherName);
+	if (FAILED(hr)) return FALSE;
+
+	if (wcscmp(bstrOtherName, m_name) == 0) {
+		CComPtr<ITypeInfo> pOtherInfo;
+		CComPtr<ITypeLib> pOurLib, pOtherLib;
+		UINT dummy;
+		TLIBATTR * pOurAttr = NULL, *pOtherAttr = NULL;
+
+		hr = pRecordInfo->GetTypeInfo(&pOtherInfo);
+		if (FAILED (hr)) return FALSE;
+
+		hr = pOtherInfo->GetContainingTypeLib(&pOtherLib, &dummy);
+		if (FAILED(hr)) return FALSE;
+
+		hr = m_pti->GetContainingTypeLib(&pOurLib, &dummy);
+		if (FAILED(hr)) return FALSE;
+
+		hr = pOurLib->GetLibAttr (&pOurAttr);
+		hr = pOtherLib->GetLibAttr (&pOtherAttr);
+		if (pOurAttr != NULL && pOtherAttr != NULL)
+			result = (pOurAttr->guid == pOtherAttr->guid);
+		if (pOurAttr != NULL)
+			pOtherLib->ReleaseTLibAttr (pOurAttr);
+		if (pOtherAttr != NULL)
+			pOtherLib->ReleaseTLibAttr (pOtherAttr);
+	}
+	return result;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * STDMETHODCALLTYPE CComRecordInfoImpl::RecordCreate --
+ *	Allocates (using the task memory allocator) a new record, and
+ *	initialises it.
+ *
+ * Result:
+ *	Pointer to the record structure iff successfull; else NULL.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+PVOID STDMETHODCALLTYPE CComRecordInfoImpl::RecordCreate( void)
+{
+	PVOID prec = CoTaskMemAlloc(m_pta->cbSizeInstance);
+	if (FAILED(RecordInit(prec))) {
+		CoTaskMemFree(prec);
+		prec = NULL;
+	}
+	return prec;
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::RecordCreateCopy --
+ *	Creates a copy of the passed record structure.
+ *
+ * Result:
+ *	S_OK iff successfull.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::RecordCreateCopy(PVOID pvSource, PVOID  *ppvDest)
+{
+	*ppvDest = RecordCreate();
+	if (*ppvDest == NULL)
+		return E_FAIL;
+	return RecordCopy (pvSource, *ppvDest);
+}
+
+
+/*
+ *-------------------------------------------------------------------------
+ * CComRecordInfoImpl::RecordDestroy --
+ *	Clears the given record and releases the memory associated with it.
+ *
+ * Result:
+ *	S_OK iff all OK.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+STDMETHODIMP CComRecordInfoImpl::RecordDestroy(PVOID pvRecord)
+{
+	HRESULT hr;
+	if (pvRecord) {
+		hr = RecordClear(pvRecord);
+		CoTaskMemFree(pvRecord);
+	}
+	return hr;
+}
+
diff --git a/src/ComRecordInfoImpl.h b/src/ComRecordInfoImpl.h
new file mode 100644
index 0000000..78a3798
--- /dev/null
+++ b/src/ComRecordInfoImpl.h
@@ -0,0 +1,61 @@
+
+
+/*
+ *-------------------------------------------------------------------------
+ * ComRecordInfoImpl.h
+ *	Declares a IRecordInfo, that unlike the one shipped by MS, isn't 
+ *	reliant on the presence of a GUID for any structure.
+ *
+ *	Copyright (C) 2000 Farzad Pezeshkpour
+ * Email:	fuzz@sys.uea.ac.uk
+ * Date:	6th April 2000
+ *
+ * How-To:	1) Add both this file and ComRecordInfoImpl.cpp to your project
+ *			2) Include this file where-ever you wish to access a structure
+ *			   using IRecordInfo.
+ *			3) Call GetRecordInfoFromTypeInfo2 instead of 
+ *			   GetRecordInfoFromTypeInfo to retrieve an IRecordInfo.
+ * Licence:
+ *	This library is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU Lesser General Public
+ *	License as published by the Free Software Foundation; either
+ *	version 2.1 of the License, or (at your option) any later version.
+ *
+ *	This library is distributed in the hope that it will be useful,
+ *	but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *	Lesser General Public License for more details.
+ *
+ *	You should have received a copy of the GNU Lesser General Public
+ *	License along with this library; if not, write to the Free Software
+ *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ *-------------------------------------------------------------------------
+ */
+
+
+
+
+#if !defined(AFX_COMRECORDINFOIMPL_H__B3BDEDA0_FB84_11D3_9D8A_DFFCB467E034__INCLUDED_)
+#define AFX_COMRECORDINFOIMPL_H__B3BDEDA0_FB84_11D3_9D8A_DFFCB467E034__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+/*
+ *-------------------------------------------------------------------------
+ * GetRecordInfoFromTypeInfo2 --
+ *	This is a replacement for GetRecordInfoFromTypeInfo. It returns an 
+ *	instance of the new IRecordInfo.
+ *
+ * Result:
+ *	Standard COM result. S_OK iff all ok.
+ *
+ * Side Effects:
+ *	Memory allocated for the new object implementing IRecordInfo.
+ *-------------------------------------------------------------------------
+ */
+HRESULT GetRecordInfoFromTypeInfo2 (ITypeInfo *pti, IRecordInfo **ppri);
+
+#endif // !defined(AFX_COMRECORDINFOIMPL_H__B3BDEDA0_FB84_11D3_9D8A_DFFCB467E034__INCLUDED_)
diff --git a/src/EventBinding.cpp b/src/EventBinding.cpp
index d8a12bd..af64f1a 100644
--- a/src/EventBinding.cpp
+++ b/src/EventBinding.cpp
@@ -537,7 +537,7 @@ int BindingProps::Eval (OptclObj *pObj, DISPPARAMS *pDispParams, LPVARIANT pVarR
 		for (count = 0; count < pDispParams->cArgs; count++)
 		{
 			TObjPtr param;
-			if (!var2obj(m_pInterp, pDispParams->rgvarg[pDispParams->cArgs - count - 1], param, ppObjs+count))
+			if (!var2obj(m_pInterp, pDispParams->rgvarg[pDispParams->cArgs - count - 1], NULL, param, ppObjs+count))
 				break;
 			cmd.lappend(param, m_pInterp);
 		}
@@ -567,7 +567,7 @@ int BindingProps::Eval (OptclObj *pObj, DISPPARAMS *pDispParams, LPVARIANT pVarR
 
 	if (result == TCL_ERROR)
 	{
-		// do we have a exception storage
+		// do we have an exception storage
 		if (pExcepInfo != NULL)
 		{
 			// fill it in
diff --git a/src/FixedSplitter.tcl b/src/FixedSplitter.tcl
new file mode 100644
index 0000000..6bed3ae
--- /dev/null
+++ b/src/FixedSplitter.tcl
@@ -0,0 +1,24 @@
+
+namespace eval FixedSplitter {
+	variable properties
+	proc _getState {w} {
+		uplevel {
+			variable properties
+		}
+	}
+	proc create {w args} {
+		_getState $w
+		
+		frame $w -width 200 -height 200 -relief sunken -bd 1
+		
+		set properties($w-orient) horizontal
+		set properties($w-fixed) A
+		set properties($w-windowA) {}
+		set properties($w-windowB) {}
+		set properties($w-barwidth) 8
+		set properties($w-fixedsize) 100
+
+		return $w
+	}
+
+}
\ No newline at end of file
diff --git a/src/ImageListBox.tcl b/src/ImageListBox.tcl
new file mode 100644
index 0000000..3f3921f
--- /dev/null
+++ b/src/ImageListBox.tcl
@@ -0,0 +1,335 @@
+proc ImageListBox {args} {
+	return [eval ImageListBox::create $args]
+}
+
+namespace eval ImageListBox {
+	variable properties
+	array set properties {}
+
+	proc _getState {w} {
+		uplevel {variable properties}
+	}
+
+	proc create {w args} {
+		_getState $w
+		text $w -bd 0 -relief flat -width 30 -height 15 -state disabled -cursor arrow -wrap none
+		set properties($w-item) {}
+		set properties($w-nextId) 0
+		set properties($w-active) 0
+		set properties($w-anchor) 0
+		set properties($w-selectmode) browse
+		set properties($w-uiselection) 0		
+
+		$w tag configure ILB_Selection -background SystemHighlight -foreground SystemHighlightText
+		set font [$w cget -font]
+		$w tag configure ILB_Active -foreground red
+
+		setBindings $w
+		rename ::$w [namespace current]::$w
+		proc ::$w {cmd args} "return \[eval [namespace current]::_dispatch $w \$cmd \$args\]"
+
+		eval $w configure $args
+		return $w
+	}
+
+	proc setBindings {w} {
+		foreach binding [bind Text] {
+			bind $w $binding "break;"
+		}
+
+		foreach binding [bind Listbox] {
+			bind $w $binding "[bind Listbox $binding];break;"
+		}
+
+		# special bindings
+		bind $w <ButtonPress-1> "[namespace current]::OnBeginUISelection $w; [bind Listbox <ButtonPress-1>]; break;"
+		bind $w <ButtonRelease-1> "[namespace current]::OnEndUISelection $w; [bind Listbox <ButtonRelease-1>]; break;"
+		return
+	}
+
+	proc _dispatch {w cmd args} {
+		_getState $w
+		set cmds [info commands [namespace current]::$cmd*]
+		if {$cmds == {}} {
+			return [eval $w $cmd $args]
+		} else {
+			return [eval [lindex $cmds 0] $w $args]
+		}
+	}
+
+
+
+	proc insert {w index args} {
+		_getState $w
+		
+		set bEnd [string match $index end]
+		if {!$bEnd} {
+			incr index
+		} else {
+			set index [expr int([$w index end])]
+		}
+
+		$w config -state normal
+		foreach item $args {
+			$w image create $index.0 -align center -name _ILB_IMAGE_$properties($w-nextId)
+			$w insert $index.1 $item\n
+			$w tag add _ILB_TAG_$properties($w-nextId) $index.0 $index.end 
+
+			incr properties($w-nextId)
+			incr index
+		}
+		$w config -state disabled
+	}
+	
+	proc setimage {w index image} {
+		_getState $w
+		set index [index $w $index]
+		if {$index >= [index $w end]} {
+			set index [expr [index $w end] - 1]
+		}
+		set pos [expr $index + 1].0
+		$w image configure $pos -image $image
+	}
+
+	proc getimage {w index} {
+		_getState $w
+		set index [index $w $index]
+		set pos [expr $index + 1].0
+		$w image cget $pos -image
+	}
+
+	proc delete {w first {last {}} } {
+		_getState $w
+		
+		if {$last == {}} {
+			set last $first
+		}
+		set first [index $w $first]
+		set last [index $w $last]
+
+		incr first
+		incr last 2
+		$w config -state normal
+		$w delete $first.0 $last.0
+		$w config -state disabled
+	}
+
+	proc size {w} {
+		_getState $w
+		return [expr int([$w index end]) - 2]
+	}
+
+	proc get {w first {last {}} } {
+		_getState $w
+		if {$last == {}} {
+			set last $first
+		}
+		set first [index $w $first]
+		set last [index $w $last]
+		if { [catch {
+			incr first
+			incr last
+		} ]} {
+			return {}
+		} 
+		set result {}
+		while {$first <= $last} {
+			lappend result [$w get $first.0 $first.end]
+			incr first
+		}
+		return $result
+	}
+
+	proc selection {w cmd args} {
+		_getState $w
+		switch -- $cmd {
+			clear {
+				eval _selectClear $w $args
+			}
+			includes {
+				eval _selectIncludes $w $args			
+			}
+			set {
+				eval _selectSet $w $args	
+			}
+			anchor {
+				eval _selectAnchor $w $args
+			}
+			default {error "unknown selection command: $cmd"}
+		}
+	}
+
+
+	proc _selectAnchor {w index} {
+		_getState $w
+		set properties($w-anchor) [index $w $index]
+	}
+
+	proc _selectClear {w first {last {}} } {
+		
+		if {$last == {}} {
+			set last $first
+		}
+		set first [index $w $first]
+		set last [index $w $last]
+
+		incr first;
+		incr last
+
+		while {$first <= $last} {
+			$w tag remove ILB_Selection $first.0 [incr first].0
+		}
+	}
+
+	proc _selectSet {w args} {
+		_getState $w
+		$w tag remove ILB_Selection 1.0 end
+
+		foreach index $args {
+			set index [index $w $index]
+			if {$index < [size $w]} {
+				$w tag add ILB_Selection [incr index].0 [incr index].0
+			}
+		}
+
+		if {!$properties($w-uiselection)} {
+			event generate $w <<Select>>
+		}
+	}
+
+	proc _selectIncludes {w first {last {}}} {
+		if {$last == {}} {
+			set last $first
+		}
+		set first [index $w $first]
+		set last [index $w $last]
+		incr first;
+		incr last
+
+		while {$first <= $last} {
+			$w tag add ILB_Selection $first.0 [incr first].0
+		}
+
+		if {!$properties($w-uiselection)} {
+			event generate $w <<Select>>
+		}
+	}
+
+	
+	proc curselection {w} {
+		_getState $w
+		set index 0.0
+		set result {}
+		while {[set range [$w tag nextrange ILB_Selection $index]] != {}} {
+			lappend result [expr int([lindex $range 0]) - 1]
+			set index [lindex $range 1]
+		}
+		return $result
+	}
+
+	proc nearest {w y} {
+		set index [$w index @0,$y]
+		return [expr int($index) - 1]
+	}
+
+
+	proc see {w index} {
+		set index [index $w $index]
+		if {![string match $index end]} {
+			set index [expr $index + 1].0
+		}
+		$w see $index
+	}
+
+	proc index {w index} {
+		_getState $w
+		if {$index == {}} {
+			error "index can't be an empty string"
+		}
+
+		switch -regexp -- $index {
+		{^(-)?[0-9]+$} {}
+		{^@(-)?[0-9]+,(-)?[0-9]+} { return [expr int([$w index $index]) - 1]}
+		active	{return $properties($w-active)}
+		anchor	{return $properties($w-anchor)}
+		end	{return [size $w]}
+		default {error "unknown index value: $index"}
+		}
+		set size [size $w]
+		if {$index > $size} {
+			set index $size
+		} elseif {$index < 0} {
+			set index 0
+		}
+		return $index
+	}
+
+	proc activate {w index} {
+		_getState $w
+		set index [index $w $index]
+		set properties($w-active) $index
+		return
+	}
+
+	proc bbox {w index} {
+		_getState $w 
+		set index [index $w $index]
+		return [$w bbox $index.0]
+	}
+
+	proc cget {w option} {
+		_getState $w
+		switch -- $option {
+		-selectmode {return $properties($w-selectmode)}
+		default {return [$w cget $option]}
+		}
+	}
+
+	proc configure {w args} {
+		_getState $w
+		if {[llength $args]%2 != 0 && [llength $args] != 1} {
+			error "configure requires pairs"
+		}
+		set def {}
+		foreach {option value} $args {
+			switch -- $option {
+				-selectmode {return [_configSelectMode $w $value]}
+				default {
+					if {[llength $args] == 1} {
+						lappend def $option
+					} else {
+						lappend def $option $value
+					}
+				}
+			}
+		}
+		if {$def != {}} {
+			eval [namespace current]::$w configure $def
+		}
+	}
+
+
+	proc _configSelectMode {w value} {
+		_getState $w
+		if {$value == {}} {
+			return $properties($w-selectmode)
+		} else {
+			if {[regexp {^single|browse|multiple|extended$} $value]} {
+				error "invalid select mode: $value"
+			}
+			set properties($w-selectmode) $value
+		}
+	}
+
+	proc OnBeginUISelection {w} {
+		_getState $w
+		set properties($w-uiselection) 1
+	}
+
+	proc OnEndUISelection {w} {
+		_getState $w
+		set properties($w-uiselection) 0
+		event generate $w <<Select>>
+	}
+}
+
diff --git a/src/ObjMap.cpp b/src/ObjMap.cpp
index 1e9fd53..236831e 100644
--- a/src/ObjMap.cpp
+++ b/src/ObjMap.cpp
@@ -68,6 +68,10 @@ ObjMap::~ObjMap()
  */
 void ObjMap::DeleteAll ()
 {
+#ifdef _DEBUG
+	ObjDump();
+#endif // _DEBUG
+
 	ObjNameMap::iterator i;
 	for (i = m_namemap.begin(); i != m_namemap.end(); i++) {
 		OptclObj *pobj = *i;
@@ -79,8 +83,32 @@ void ObjMap::DeleteAll ()
 	m_unkmap.deltbl();
 }
 
+/*
+ *-------------------------------------------------------------------------
+ * ObjMap::ObjDump
+ *	Dumps the current contents of the object map to the Debug Stream
+ *
+ * Result:
+ *	None.
+ *
+ * Side Effects:
+ *	None.
+ *-------------------------------------------------------------------------
+ */
+void ObjMap::ObjDump () 
+{
+	TRACE("BEGIN: OpTcl Object Dump\n");
 
-
+	ObjNameMap::iterator i;
+	for (i = m_namemap.begin(); i != m_namemap.end(); i++) {
+		OptclObj *pobj = *i;
+		ASSERT (pobj != NULL);
+		TObjPtr interfacename;
+		pobj->InterfaceName(interfacename);
+		TRACE("\t%s %s %d\n", (char*)interfacename, pobj->m_name.c_str(), pobj->m_refcount);
+	}	
+	TRACE("END:   OpTcl Object Dump\n");
+}
 
 /*
  *-------------------------------------------------------------------------
@@ -119,13 +147,13 @@ OptclObj * ObjMap::Create (Tcl_Interp *pInterp, const char * id, const char * pa
 	if (m_unkmap.find(u, &ptmp) != NULL) {
 		ASSERT (ptmp != NULL);
 		delete pObj;
-		++ptmp->m_refcount;
+		Lock (ptmp);
 		return ptmp;
 	}
 
 	m_unkmap.set (u, pObj); 
 	m_namemap.set (*pObj, pObj); // implicit const char * cast
-	pObj->m_refcount = 1;
+	Lock(pObj);
 	CreateCommand (pObj);
 	return pObj;
 }
@@ -146,7 +174,7 @@ OptclObj * ObjMap::Create (Tcl_Interp *pInterp, const char * id, const char * pa
  *	None.
  *-------------------------------------------------------------------------
  */
-OptclObj *	ObjMap::Add (Tcl_Interp *pInterp, LPUNKNOWN punk)
+OptclObj *	ObjMap::Add (Tcl_Interp *pInterp, LPUNKNOWN punk, ITypeInfo *pti)
 {
 	ASSERT (punk != NULL);
 	CComPtr<IUnknown> t_unk;
@@ -162,19 +190,17 @@ OptclObj *	ObjMap::Add (Tcl_Interp *pInterp, LPUNKNOWN punk)
 
 	if (m_unkmap.find(u, &pObj) == NULL) {
 		pObj = new OptclObj();
-		if (!pObj->Attach(pInterp, punk))
+		if (!pObj->Attach(pInterp, punk, pti))
 		{
 			delete pObj;
 			pObj = NULL;
 		}
 		m_namemap.set(*pObj, pObj);
 		m_unkmap.set(u, pObj);
-		pObj->m_refcount = 1;
+		
 		CreateCommand (pObj);
-	} else {
-		++pObj->m_refcount;
 	}
-
+	Lock(pObj);
 	ASSERT (pObj != NULL);
 	return pObj;
 }
@@ -260,7 +286,7 @@ void ObjMap::DeleteCommand (OptclObj *po)
 		return;
 	
 	
-	CONST84 char * cmdname = Tcl_GetCommandName (po->m_pInterp, po->m_cmdtoken);
+	const char * cmdname = Tcl_GetCommandName (po->m_pInterp, po->m_cmdtoken);
 	if (cmdname == NULL)
 		return;
 	Tcl_CmdInfo cmdinf;
@@ -295,7 +321,8 @@ void ObjMap::DeleteCommand (OptclObj *po)
 void ObjMap::Delete (OptclObj *pObj)
 {
 	ASSERT (pObj != NULL);
-
+	TRACE("Deleting: ");
+	TRACE_OPTCLOBJ(pObj);
 	// first ensure that we delete the objects command
 	DeleteCommand(pObj);	
 	m_namemap.delete_entry (*pObj);
@@ -350,6 +377,7 @@ void ObjMap::Lock (OptclObj *po)
 {
 	ASSERT (po != NULL);
 	++po->m_refcount;
+	TRACE_OPTCLOBJ(po);
 }
 
 
@@ -370,7 +398,9 @@ void ObjMap::Lock (OptclObj *po)
 void ObjMap::Unlock(OptclObj *po)
 {
 	ASSERT (po != NULL);
-	if (--po->m_refcount == 0)
+	--(po->m_refcount);
+	TRACE_OPTCLOBJ(po);
+	if (po->m_refcount == 0)
 		Delete (po);
 }
 
diff --git a/src/ObjMap.h b/src/ObjMap.h
index ce1a58c..8796bb9 100644
--- a/src/ObjMap.h
+++ b/src/ObjMap.h
@@ -46,7 +46,7 @@ public: // constructor / destructor
 	virtual ~ObjMap ();
 
 	OptclObj *	Create (Tcl_Interp *pInterp, const char * id, const char * path, bool start);
-	OptclObj *	Add (Tcl_Interp *pInterp, LPUNKNOWN punk);
+	OptclObj *	Add (Tcl_Interp *pInterp, LPUNKNOWN punk, ITypeInfo *pti = NULL);
 	OptclObj *	Find (LPUNKNOWN punk);
 	OptclObj *	Find (const char *name);
 
@@ -68,12 +68,12 @@ protected:
 	void		Delete (OptclObj *);
 	void		CreateCommand (OptclObj *);
 	void		DeleteCommand (OptclObj *);
-
+	void		ObjDump ();
 };
 
 
 // Global Variable Declaration!!!
 
-extern ObjMap	g_objmap; // once object map per application
+extern ObjMap	g_objmap; // one object map per application
 
 #endif // !defined(AFX_OBJMAP_H__8A11BC00_616B_11D4_8004_0040055861F2__INCLUDED_)
diff --git a/src/OptclBindPtr.h b/src/OptclBindPtr.h
index da93d28..c64813b 100644
--- a/src/OptclBindPtr.h
+++ b/src/OptclBindPtr.h
@@ -76,17 +76,27 @@ public:
 
 	short		OptclBindPtr::cParamsOpt()
 	{
+		int pin;
+		int oparams = 0;
 		ASSERT (m_bp.lpfuncdesc != NULL);
 		switch (m_dk) {
 		case DESCKIND_FUNCDESC:
-			return m_bp.lpfuncdesc->cParamsOpt;
+			// this method doesn't work very well
+			// return m_bp.lpfuncdesc->cParamsOpt;
+			// so ...
+			for (pin = 0; pin < m_bp.lpfuncdesc->cParams; pin++) {
+				if (m_bp.lpfuncdesc->lprgelemdescParam[pin].paramdesc.wParamFlags & PARAMFLAG_FOPT)
+					oparams++;
+			}
+			break;
 		case DESCKIND_IMPLICITAPPOBJ:
 		case DESCKIND_VARDESC:
-			return 1;
+			oparams = 1;
+			break;
 		default:
 			ASSERT (FALSE);
-			return 0;
 		}
+		return oparams;
 	}
 
 	ELEMDESC *	OptclBindPtr::param(short param)
diff --git a/src/OptclObj.cpp b/src/OptclObj.cpp
index b2c74f6..84a6631 100644
--- a/src/OptclObj.cpp
+++ b/src/OptclObj.cpp
@@ -40,7 +40,7 @@
 //////////////////////////////////////////////////////////////////////
 
 OptclObj::OptclObj ()
-: m_refcount(0), m_cmdtoken(NULL), m_pta(NULL),
+: m_refcount(0), m_cmdtoken(NULL),
 m_destroypending(false), m_container(this)
 {
 }
@@ -67,7 +67,7 @@ bool OptclObj::Create (Tcl_Interp *pInterp, const char *strid,
 		if (!start)
 			hr = GetActiveObject(clsid, NULL, &m_punk);		
 		if (start || FAILED(hr)) 
-			hr = CoCreateInstance (clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (void**)&m_punk);
+			hr = m_punk.CoCreateInstance (clsid, NULL, CLSCTX_SERVER);
 		CHECKHR_TCL(hr, pInterp, false);
 		
 	}
@@ -100,17 +100,23 @@ bool OptclObj::Create (Tcl_Interp *pInterp, const char *strid,
  *	None.
  *-------------------------------------------------------------------------
  */
-bool OptclObj::Attach (Tcl_Interp *pInterp, LPUNKNOWN punk)
+bool OptclObj::Attach (Tcl_Interp *pInterp, LPUNKNOWN punk, ITypeInfo *pti)
 {
 	ASSERT (m_punk == NULL);
 	ASSERT (punk != NULL);
 
 	m_pInterp = pInterp;
 	try {
+		CComPtr<ITypeLib> ptl;
+		if (pti) {
+			UINT index;
+			CHECKHR(pti->GetContainingTypeLib (&ptl, &index));
+		}
+
 		CreateName (punk);
 		InitialiseUnknown(punk);
 		InitialiseClassInfo(m_punk);
-		InitialisePointers (m_punk);
+		InitialisePointers (m_punk, ptl, pti);
 	}
 	catch (HRESULT hr) {
 		m_punk = NULL;
@@ -300,9 +306,9 @@ HRESULT OptclObj::InitialisePointersFromCoClass()
  */
 HRESULT OptclObj::GetTypeAttr()
 {
-	ASSERT (m_pta == NULL);
 	ASSERT (m_pti != NULL);
-	return m_pti->GetTypeAttr(&m_pta);
+	m_pta = m_pti;
+	return (m_pta.m_pattr == NULL)?E_FAIL:S_OK;
 }
 
 
@@ -318,10 +324,7 @@ HRESULT OptclObj::GetTypeAttr()
  */
 void OptclObj::ReleaseTypeAttr()
 {
-	if (m_pti != NULL && m_pta != NULL) {
-		m_pti->ReleaseTypeAttr(m_pta);
-		m_pta = NULL;
-	}
+	m_pta.ReleaseTypeAttr();
 }
 
 
@@ -343,35 +346,51 @@ HRESULT OptclObj::SetInterfaceFromType (ITypeInfo *reftype)
 	HRESULT hr;
 	CComPtr<ITypeLib> reftypelib;
 	UINT libindex;
-	TYPEATTR *pta;
+	
+	OptclTypeAttr pta;
+	CComPtr<ITypeInfo> pRT = reftype;
 
-	hr = reftype->GetContainingTypeLib(&reftypelib, &libindex);
-	if (FAILED(hr))
-		return hr;
+	if (reftype == NULL)
+		return E_POINTER;
 
-	hr = reftype->GetTypeAttr (&pta);
+	hr = pRT->GetContainingTypeLib(&reftypelib, &libindex);
 	if (FAILED(hr))
 		return hr;
 
+	pta = pRT;
+	
+	if (pta.m_pattr == NULL)
+		return E_FAIL;
+
+	if (pta->typekind == TKIND_COCLASS) {
+		CComPtr<ITypeInfo> definterface;
+		hr = TypeLib_GetDefaultInterface(pRT, false, &definterface);
+		if (FAILED(hr)) return hr;
+		pRT = definterface;
+		pta = pRT;
+		if (pta.m_pattr == NULL)
+			return E_FAIL;
+	}
+
+	/*
 	if (pta->typekind != TKIND_DISPATCH) {
 		reftype->ReleaseTypeAttr (pta);
 		return E_NOINTERFACE;
 	}
+	*/
 
 	GUID guid = pta->guid;
-	reftype->ReleaseTypeAttr (pta);
-	
+	m_pcurrent.Release();
 	hr = m_punk->QueryInterface(guid, (void**)(&m_pcurrent));
 	if (FAILED(hr))
 		return hr;
 
-	
 	// nice! now we cache the result of all our hard work
-	ReleaseTypeAttr ();
-	m_pti = reftype;
+	m_pti = pRT;
 	m_ptl = reftypelib;
 	m_ptc = NULL;
 	m_pti->GetTypeComp (&m_ptc);
+
 	// now that we got the interface ok, retrieve the type attributes again
 	return GetTypeAttr();
 }
@@ -396,12 +415,12 @@ void OptclObj::InitialisePointers (LPUNKNOWN punk, ITypeLib *plib, ITypeInfo *pi
 {
 	HRESULT hr;
 	ASSERT (punk != NULL);
-	CComQIPtr<IDispatch> pdisp;
 
 	ASSERT ((plib!=NULL && pinfo!=NULL) || (plib==NULL && pinfo==NULL));
+	ReleaseTypeAttr();
 
 	if (plib != NULL && pinfo != NULL) {
-		m_pcurrent = punk;
+		//m_pcurrent = punk;
 		m_ptl = plib;
 		m_pti = pinfo;
 		m_ptc = NULL;
@@ -409,17 +428,13 @@ void OptclObj::InitialisePointers (LPUNKNOWN punk, ITypeLib *plib, ITypeInfo *pi
 		GetTypeAttr();
 	} 
 
-	// else, if we have the coclass information, try building on its default
-	// interface
+	// else, if we don't have coclass information, or we can't initialise
+	// from it, try building on its default ...
 	else if (m_pti_class == NULL || FAILED(InitialisePointersFromCoClass())) {
-		// failed to build using coclass information
-		// Query Interface cast to a dispatch interface
-		m_pcurrent = punk;
 		try {
-			if (m_pcurrent == NULL)
-				throw (HRESULT(0));
+			CHECKHR(punk->QueryInterface (IID_IDispatch, reinterpret_cast<void**>(&m_pcurrent)));
 			// get the type information and library.
-			hr = m_pcurrent->GetTypeInfo (0, LOCALE_SYSTEM_DEFAULT, &m_pti);
+			hr = (reinterpret_cast<IDispatch*>(m_pcurrent.p))->GetTypeInfo (0, LOCALE_SYSTEM_DEFAULT, &m_pti);
 			CHECKHR(hr);
 			UINT index;
 			hr = m_pti->GetContainingTypeLib(&m_ptl, &index);
@@ -427,10 +442,7 @@ void OptclObj::InitialisePointers (LPUNKNOWN punk, ITypeLib *plib, ITypeInfo *pi
 			m_ptc = NULL;
 			m_pti->GetTypeComp (&m_ptc);
 			GetTypeAttr();
-		}
-		
-
-		catch (HRESULT) {
+		} catch (HRESULT) {
 			// there isn't a interface that we can use
 			ReleaseTypeAttr();
 			m_pcurrent.Release();
@@ -438,8 +450,9 @@ void OptclObj::InitialisePointers (LPUNKNOWN punk, ITypeLib *plib, ITypeInfo *pi
 			m_ptl = NULL;
 			m_ptc = NULL;
 			return;
-		}
+		}		
 	}
+
 	// inform the typelibrary browser system of the library
 	g_libs.EnsureCached (m_ptl);
 }
@@ -549,26 +562,11 @@ void OptclObj::SetInterfaceName (TObjPtr &pObj)
 	TypeLib *ptl;
 	CComPtr<ITypeInfo> pti;
 	CComPtr<IUnknown> punk;
-	TYPEATTR ta, *pta = NULL;
-	HRESULT hr;
 
+	// throws an hresult
 	TypeLib_ResolveName (pObj, &ptl, &pti);
 	// we need to insert some alias type resolution here.
-
-	hr = pti->GetTypeAttr (&pta);
-	CHECKHR(hr);
-	ta = *pta;
-	pti->ReleaseTypeAttr (pta);
-
-
-	if (ta.typekind != TKIND_INTERFACE &&
-		ta.typekind != TKIND_DISPATCH)
-		throw ("type does not resolve to an interface");
-
-	
-	hr = m_punk->QueryInterface (ta.guid, (void**)(&punk));
-	CHECKHR(hr);
-	InitialisePointers (punk, ptl->m_ptl, pti);
+	CHECKHR(SetInterfaceFromType(pti));
 }
 
 
@@ -593,12 +591,12 @@ void OptclObj::SetInterfaceName (TObjPtr &pObj)
 bool OptclObj::InvokeCmd (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST objv[])
 {
 	ASSERT (pInterp != NULL);
-	CComPtr<IDispatch> pdisp;
+	CComPtr<IUnknown> punk;
 	CComPtr<ITypeComp> ptc;
 	CComPtr<ITypeInfo> pti;
 	TObjPtr name;
 	
-	int		invkind = DISPATCH_METHOD;
+	int		invkind = DISPATCH_PROPERTYGET | DISPATCH_METHOD;
 
 	char * msg = 			
 		"\n\tobj : ?-with subprop? prop ?value? ?prop value? ..."
@@ -625,13 +623,13 @@ bool OptclObj::InvokeCmd (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST objv[])
 		}
 
 		name.attach(objv[1]);
-		if (!ResolvePropertyObject (pInterp, name, &pdisp, &pti, &ptc))
+		if (!ResolvePropertyObject (pInterp, name, &punk, &pti, &ptc))
 			return false;
 		objc -= 2;
 		objv += 2;
 	}
 	else {
-		pdisp = m_pcurrent;
+		punk = m_pcurrent;
 		ptc = m_ptc;
 		pti = m_pti;
 	}
@@ -645,20 +643,20 @@ bool OptclObj::InvokeCmd (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST objv[])
 		objv++;
 
 		if (objc == 1) 
-			return GetProp (pInterp, objv[0], pdisp, pti, ptc);
+			return GetProp (pInterp, objv[0], punk, pti, ptc);
 		else {
 			if (objc % 2 != 0) {
 				Tcl_SetResult (pInterp, "property set requires pairs of parameters", TCL_STATIC);
 				return false;
 			}
-			return SetProp (pInterp, objc/2, objv, pdisp, pti, ptc);
+			return SetProp (pInterp, objc/2, objv, punk, pti, ptc);
 		}
 	}
 
 	if (ptc == NULL)
-		return InvokeNoTypeInf (pInterp, invkind, objc, objv, pdisp);
+		return InvokeNoTypeInf (pInterp, invkind, objc, objv, reinterpret_cast<IDispatch*>(punk.p));
 	else
-		return InvokeWithTypeInf (pInterp, invkind, objc, objv, pdisp, pti, ptc);
+		return InvokeWithTypeInf (pInterp, invkind, objc, objv, punk, pti, ptc);
 }
 
 
@@ -680,19 +678,8 @@ bool OptclObj::CheckInterface (Tcl_Interp *pInterp)
 	if (m_pcurrent == NULL) {
 		Tcl_SetResult (pInterp, "no interface available", TCL_STATIC);
 		return false;
-	}
-
-	/* -- not needed now that we are only working with dispatch interfaces
-
-	if (m_pta != NULL) {
-		if (m_pta->typekind == TKIND_INTERFACE && ((m_pta->wTypeFlags&TYPEFLAG_FDUAL)==0))
-		{
-			Tcl_SetResult (pInterp, "interface is a pure vtable - optcl can't call these ... yet!", TCL_STATIC);
-			return false;
-		}
-	}
-	*/
-	return true;
+	} else
+		return true;
 }
 
 
@@ -704,6 +691,7 @@ bool OptclObj::CheckInterface (Tcl_Interp *pInterp)
  *
  * Result:
  *	true iff successful - else error string in interpreter.
+ *
  * Side effects:
  *	None.
  *-------------------------------------------------------------------------
@@ -741,8 +729,6 @@ bool OptclObj::BuildParamsWithBindPtr (Tcl_Interp *pInterp, int objc, Tcl_Obj *C
 				// is it [inout]?
 				if (pdesc->paramdesc.wParamFlags  & PARAMFLAG_FOUT) {
 					obj.attach(Tcl_ObjGetVar2 (pInterp, objv[count], NULL, TCL_LEAVE_ERR_MSG));
-					if (obj.isnull()) 
-						return false;
 				}
 				else // just [in]
 					obj.attach(objv[count]);
@@ -800,9 +786,8 @@ bool OptclObj::RetrieveOutParams (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST
 		if (pdesc->paramdesc.wParamFlags & PARAMFLAG_FOUT)
 		{
 			// convert the value back to a tcl object
-			bok = (!var2obj (pInterp, dp[objc - count - 1], presult) ||
-					Tcl_ObjSetVar2 (pInterp, objv[count], NULL, 
-					                presult, TCL_LEAVE_ERR_MSG) == NULL);
+			bok = var2obj (pInterp, dp[objc - count - 1], NULL, presult) &&
+				  (Tcl_ObjSetVar2 (pInterp, objv[count], NULL, presult, TCL_LEAVE_ERR_MSG) != NULL);
 				
 		}
 	}
@@ -816,7 +801,8 @@ bool OptclObj::RetrieveOutParams (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST
 
 bool OptclObj::InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
 								  int objc, Tcl_Obj *CONST objv[], 
-								  IDispatch *pDisp, ITypeInfo *pti, ITypeComp *pCmp, VARIANT &varResult)
+								  IUnknown *pUnk, ITypeInfo *pti, ITypeComp *pCmp, 
+								  VARIANT &varResult, ITypeInfo **ppResultInfo)
 {
 	USES_CONVERSION;
 	DispParams	dp;
@@ -834,19 +820,21 @@ bool OptclObj::InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
 	static  DISPID		propput = DISPID_PROPERTYPUT;
 	OptclBindPtr	obp;
 	OptclTypeAttr	ota;
+    unsigned short wFlags = invokekind;
 
 	ASSERT (objc >= 1);
-	ASSERT (pDisp != NULL);
+	ASSERT (pUnk != NULL);
 	ASSERT (pti != NULL);
 	ASSERT (varResult.vt == VT_EMPTY);
 	ota = pti;
 
-	ASSERT (ota->typekind == TKIND_DISPATCH || (ota->wTypeFlags & TYPEFLAG_FDUAL));
+	//ASSERT (ota->typekind == TKIND_DISPATCH || (ota->wTypeFlags & TYPEFLAG_FDUAL));
 
 	try {
 		olename = A2OLE(Tcl_GetStringFromObj (objv[0], NULL));
-		hr = pCmp->Bind (olename, LHashValOfName(LOCALE_SYSTEM_DEFAULT, olename), 
-			invokekind, &obp.m_pti, &obp.m_dk, &obp.m_bp);
+        if (invokekind == DISPATCH_PROPERTYPUT)
+            wFlags |= DISPATCH_PROPERTYPUTREF;
+		hr = pCmp->Bind (olename, 0, wFlags, &obp.m_pti, &obp.m_dk, &obp.m_bp);
 		CHECKHR(hr);
 
 		if (obp.m_dk == DESCKIND_NONE) {
@@ -866,10 +854,30 @@ bool OptclObj::InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
 				dp.rgdispidNamedArgs = &propput;
 			}
 
-			// can't invoke through the typelibrary for local objects
-			//hr = pti->Invoke(pDisp, dispid, invokekind, &dp, &varResult, &ei, &ea);
-			hr = pDisp->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, invokekind, 
-				&dp, &varResult, &ei, &ea);
+            if (invokekind == DISPATCH_PROPERTYPUT
+                && (dp[0].vt == VT_UNKNOWN  || dp[0].vt == VT_DISPATCH || (dp[0].vt & VT_ARRAY) || (dp[0].vt & VT_BYREF)))
+            {
+                // Try first PUTREF then plain PUT as authors often forget to provide a putref version when they should.
+                invokekind = DISPATCH_PROPERTYPUTREF;
+                hr = E_FAIL;
+                while (FAILED(hr) && invokekind != DISPATCH_PROPERTYGET)
+                {
+			        if (m_pta->typekind == TKIND_DISPATCH || (m_pta->wTypeFlags & TYPEFLAG_FDUAL))
+				        hr = reinterpret_cast<IDispatch*>(pUnk)->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, invokekind, &dp, &varResult, &ei, &ea);
+			        else
+				        hr = DispInvoke (pUnk, pti, dispid, invokekind, &dp, &varResult, &ei, &ea);
+                    invokekind >>= 1;
+                }
+                invokekind = DISPATCH_PROPERTYPUT;
+            }
+			else
+            {
+			    if (m_pta->typekind == TKIND_DISPATCH || (m_pta->wTypeFlags & TYPEFLAG_FDUAL))
+				    hr = reinterpret_cast<IDispatch*>(pUnk)->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, invokekind, &dp, &varResult, &ei, &ea);
+			    else
+				    hr = DispInvoke (pUnk, pti, dispid, invokekind, &dp, &varResult, &ei, &ea);
+            }
+				
 
 			if (invokekind == DISPATCH_PROPERTYPUT) {
 				dp.rgdispidNamedArgs = NULL;
@@ -891,6 +899,29 @@ bool OptclObj::InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
 
 			if (!RetrieveOutParams (pInterp, objc, objv, obp, dp))
 				return false;
+			if (ppResultInfo != NULL) {
+				// caller is requesting the typeinfo for the result
+				*ppResultInfo = NULL; // make sure that we definitely return a valid pointer
+				TYPEDESC * ptdesc = NULL;
+				switch (obp.m_dk) {
+				case DESCKIND_FUNCDESC:
+					ASSERT (obp.m_bp.lpfuncdesc != NULL);
+					ptdesc = & obp.m_bp.lpfuncdesc->elemdescFunc.tdesc;
+					break;
+				case DESCKIND_VARDESC:
+					ASSERT (obp.m_bp.lpvardesc != NULL);
+					ptdesc = & obp.m_bp.lpvardesc->elemdescVar.tdesc;
+					break;
+				}
+				// resolve any pointer types ...
+				while (ptdesc != NULL && ptdesc->vt == VT_PTR)
+					ptdesc = ptdesc->lptdesc;
+
+				// if we have a user defined type, return it!
+				if (ptdesc != NULL && ptdesc->vt == VT_USERDEFINED) 
+					pti->GetRefTypeInfo (ptdesc->hreftype, ppResultInfo);
+				
+			}
 			bOk = true;
 		}
 	}
@@ -920,17 +951,17 @@ bool OptclObj::InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
  */
 bool OptclObj::InvokeWithTypeInf (Tcl_Interp *pInterp, long invokekind,
 								  int objc, Tcl_Obj *CONST objv[], 
-								  IDispatch *pDisp, ITypeInfo *pti, ITypeComp *pCmp)
+								  IUnknown *pUnk, ITypeInfo *pti, ITypeComp *pCmp)
 {
 	VARIANT varResult;
 	VariantInit(&varResult);
 	TObjPtr presult;
-
+	CComPtr<ITypeInfo> pResultInfo;
 	bool bok;
-	bok = InvokeWithTypeInfVariant (pInterp, invokekind, objc, objv, pDisp, pti, pCmp, varResult);
+	bok = InvokeWithTypeInfVariant (pInterp, invokekind, objc, objv, pUnk, pti, pCmp, varResult, &pResultInfo);
 
 	// set the result of the operation to the return value of the function
-	if (bok && (bok = var2obj(pInterp, varResult, presult)))
+	if (bok && (bok = var2obj(pInterp, varResult, pResultInfo, presult)))
 			Tcl_SetObjResult (pInterp, presult);
 	VariantClear(&varResult);
 	return bok;
@@ -964,7 +995,7 @@ bool OptclObj::InvokeNoTypeInf(	Tcl_Interp *pInterp, long invokekind,
 	bool bok;
 
 	if (bok = InvokeNoTypeInfVariant (pInterp, invokekind, objc, objv, pDisp, var)) {
-		if (bok = var2obj(pInterp, var, presult))
+		if (bok = var2obj(pInterp, var, NULL, presult))
 			Tcl_SetObjResult (pInterp, presult);
 		VariantClear(&var);
 	}
@@ -1050,9 +1081,9 @@ bool OptclObj::InvokeNoTypeInfVariant (	Tcl_Interp *pInterp, long invokekind,
  *-------------------------------------------------------------------------
  */
 bool OptclObj::GetProp (Tcl_Interp *pInterp, Tcl_Obj *name, 
-			  IDispatch *pdisp, ITypeInfo *pti, ITypeComp *ptc)
+			  IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc)
 {
-	ASSERT (pInterp != NULL && name != NULL && pdisp != NULL);
+	ASSERT (pInterp != NULL && name != NULL && punk != NULL);
 	TObjPtr params;
 	bool bok;
 
@@ -1070,10 +1101,10 @@ bool OptclObj::GetProp (Tcl_Interp *pInterp, Tcl_Obj *name,
 
 		if (pti != NULL) {
 			ASSERT (ptc != NULL);
-			bok = InvokeWithTypeInf(pInterp, DISPATCH_PROPERTYGET, length, pplist, pdisp, pti, ptc);
+			bok = InvokeWithTypeInf(pInterp, DISPATCH_PROPERTYGET, length, pplist, punk, pti, ptc);
 		}
 		else {
-			bok = InvokeNoTypeInf (pInterp, DISPATCH_PROPERTYGET, length, pplist, pdisp);
+			bok = InvokeNoTypeInf (pInterp, DISPATCH_PROPERTYGET, length, pplist, reinterpret_cast<IDispatch*>(punk));
 		}
 
 		free(pplist);
@@ -1097,9 +1128,9 @@ bool OptclObj::GetProp (Tcl_Interp *pInterp, Tcl_Obj *name,
  *-------------------------------------------------------------------------
  */
 bool OptclObj::GetIndexedVariant (Tcl_Interp *pInterp, Tcl_Obj *name, 
-			  IDispatch *pdisp, ITypeInfo *pti, ITypeComp *ptc, VARIANT &varResult)
+			  IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc, VARIANT &varResult, ITypeInfo **ppResultInfo)
 {
-	ASSERT (pInterp != NULL && name != NULL && pdisp != NULL);
+	ASSERT (pInterp != NULL && name != NULL && punk != NULL);
 	ASSERT (varResult.vt == VT_EMPTY);
 
 	TObjPtr params;
@@ -1120,22 +1151,34 @@ bool OptclObj::GetIndexedVariant (Tcl_Interp *pInterp, Tcl_Obj *name,
 
 		if (pti != NULL) {
 			ASSERT (ptc != NULL);
-			bok = InvokeWithTypeInfVariant (pInterp, invkind, length, pplist, pdisp, pti, ptc, varResult);
+			bok = InvokeWithTypeInfVariant (pInterp, invkind, length, pplist, punk, pti, ptc, varResult, ppResultInfo);
 		}
 		else {
-			bok = InvokeNoTypeInfVariant (pInterp, invkind, length, pplist, pdisp, varResult);
+			bok = InvokeNoTypeInfVariant (pInterp, invkind, length, pplist, reinterpret_cast<IDispatch*>(punk), varResult);
 		}
 		free(pplist);
 	}
 	return bok;
 }
 
+
+
+
+/*
+ *-------------------------------------------------------------------------
+ * OptclObj::SetProp --
+ *	Called to get the value of a property or the return type of method, with
+ * Result:
+ * Side effects:
+ *-------------------------------------------------------------------------
+ */
+
 bool	OptclObj::SetProp (Tcl_Interp *pInterp, 
 						   int paircount, Tcl_Obj * CONST namevalues[], 
-						   IDispatch *pdisp, ITypeInfo *pti, ITypeComp *ptc)
+						   IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc)
 {
 	bool bok = true;
-	ASSERT (pInterp != NULL && paircount > 0 && namevalues != NULL && pdisp != NULL);
+	ASSERT (pInterp != NULL && paircount > 0 && namevalues != NULL && punk != NULL);
 	for (int i = 0; bok && i < paircount; i++)
 	{
 		TObjPtr params;
@@ -1155,10 +1198,10 @@ bool	OptclObj::SetProp (Tcl_Interp *pInterp,
 
 			if (pti != NULL) {
 				ASSERT (ptc != NULL);
-				bok = InvokeWithTypeInf(pInterp, DISPATCH_PROPERTYPUT, length, pplist, pdisp, pti, ptc);
+				bok = InvokeWithTypeInf(pInterp, DISPATCH_PROPERTYPUT, length, pplist, punk, pti, ptc);
 			}
 			else {
-				bok = InvokeNoTypeInf (pInterp, DISPATCH_PROPERTYPUT, length, pplist, pdisp);
+				bok = InvokeNoTypeInf (pInterp, DISPATCH_PROPERTYPUT, length, pplist, reinterpret_cast<IDispatch*>(punk));
 			}
 			namevalues += 2;
 			free(pplist);
@@ -1240,17 +1283,17 @@ bool OptclObj::GetPropVariantDispatch (Tcl_Interp *pInterp, const char*name,
  *
  *-------------------------------------------------------------------------
  */
-bool	OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname, 
-								   IDispatch **ppdisp, ITypeInfo **ppinfo, ITypeComp **ppcmp /* = NULL*/)
+bool OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname, 
+									  IUnknown **ppunk, ITypeInfo **ppinfo, 
+									  ITypeComp **ppcmp /* = NULL*/)
 {
 	USES_CONVERSION;
-	ASSERT (pInterp != NULL && ppdisp != NULL && sname != NULL);
+	ASSERT (pInterp != NULL && ppunk != NULL && sname != NULL);
 	// copy the string onto the stack
 	char *		szname;
-	char *		seps = ".";
+	char *		seps = ".";	// seperators
 	char *		szprop = NULL;
-	_variant_t	varobj;
-	VARIANT		varResult;
+
 
 	HRESULT		hr;
 	
@@ -1258,30 +1301,34 @@ bool	OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname,
 	TObjPtr plist;
 	TObjPtr pokstring;
 
+	// copy the command string
 	szname = (char*)_alloca (strlen (sname) + 1);
 	strcpy (szname, sname);
+
+	// tokenize on the dot
+	// warning: this section will *note* quoted seperators correctly 
+	// ... *must* fix!
 	szprop = strtok(szname, seps);
-	CComQIPtr <IDispatch> current;
+	CComPtr <IUnknown> current;
 	CComPtr <ITypeInfo> pti;
 	CComPtr <ITypeComp> pcmp;
 
-	UINT	typecount = 0;
+	UINT	typecount = 0; // the total number of types in the type library
 
-	current = m_pcurrent;
-	pti = m_pti;
-	pcmp = m_ptc;
+	current	= m_pcurrent;
+	pti		= m_pti;
+	pcmp	= m_ptc;
 
 	pcmd.create();
 
-	VariantInit (&varResult);
-
 	try {
 		while (szprop != NULL)
 		{
+			CComVariant	varResult;
 			TObjPtr prop(szprop);
+			CComPtr<ITypeInfo> pResultInfo;
 
-			VariantClear(&varResult);
-			if (!GetIndexedVariant (pInterp, prop, current, pti, pcmp, varResult))
+			if (!GetIndexedVariant (pInterp, prop, current, pti, pcmp, varResult, &pResultInfo))
 				break;
 			
 			// check that it's an object
@@ -1291,37 +1338,47 @@ bool	OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname,
 				Tcl_AppendResult (pInterp, szprop, "' is not an object", NULL);
 				break;
 			}
-
 			else
 			{
-				current = varResult.punkVal;
-				if (current == NULL)
-				{
-					Tcl_SetResult (pInterp, "'", TCL_STATIC);
-					Tcl_AppendResult (pInterp, szprop, "' is not a dispatchable object", NULL);
-					break;
-				}
-				typecount = 0;
-				pti = NULL;
-				pcmp = NULL;
-
-				current->GetTypeInfoCount (&typecount);
-				if (typecount > 0) {
-					hr = current->GetTypeInfo (0, LOCALE_SYSTEM_DEFAULT, &pti);
-					if (SUCCEEDED(hr)) {
-						g_libs.EnsureCached (pti);
+				if (pResultInfo) {
+					// we have type information for this
+					pti = pResultInfo;
+					current = varResult.punkVal;
+				} else {
+					current.Release();
+					if (FAILED(varResult.punkVal->QueryInterface(IID_IDispatch, reinterpret_cast<void**>(&current)))) {
+						Tcl_SetResult (pInterp, "unknown interface for '", TCL_STATIC);
+						Tcl_AppendResult (pInterp, szprop, "'", NULL);
+						break;
+					} 
+					typecount = 0;
+					pti = NULL;
+					
+
+					IDispatch *pdisp = reinterpret_cast<IDispatch*>(current.p);
+					pdisp->GetTypeInfoCount (&typecount);
+					if (typecount > 0) {
+						hr = pdisp->GetTypeInfo (0, LOCALE_SYSTEM_DEFAULT, &pti);
+						if (FAILED(hr)) 
+							throw hr;
+							
 					}
-					pti->GetTypeComp(&pcmp);
 				}
 			}
+
+			pcmp.Release();
+			g_libs.EnsureCached (pti);
+			pti->GetTypeComp(&pcmp);
 			
-			// get the next property
+			// get the next property - warning, doesn't work with quoted seperators
 			szprop = strtok(NULL, seps);
 		}
 		
 		*ppinfo = pti.Detach();
 		*ppcmp = pcmp.Detach();
-		*ppdisp = current.Detach ();
+		*ppunk = current.Detach ();
+		if (*ppunk == NULL) 
+			Tcl_SetResult (pInterp, "value resolved to a null object", TCL_STATIC);
 	}
 
 	catch (HRESULT hr)
@@ -1333,8 +1390,7 @@ bool	OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname,
 	{
 		Tcl_SetResult (pInterp, error, TCL_STATIC);
 	}
-	VariantClear(&varResult);
-	return (szprop == NULL);
+	return (szprop == NULL && *ppunk != NULL);
 }
 
 
@@ -1843,5 +1899,3 @@ void OptclObj::ContainerWantsToDie ()
 	if (!m_destroypending)
 		g_objmap.Delete(this);
 }
-
-
diff --git a/src/OptclObj.h b/src/OptclObj.h
index 5d296f0..e80f7cb 100644
--- a/src/OptclObj.h
+++ b/src/OptclObj.h
@@ -32,6 +32,7 @@
 // forward declarations of used classes
 #include "container.h"
 #include <string>
+#include "optcltypeattr.h"
 
 class ObjMap;
 class EventBindings;
@@ -51,7 +52,7 @@ public:
 	virtual ~OptclObj ();
 
 	bool	Create (Tcl_Interp *pInterp, const char *strid, const char *windowpath, bool start);
-	bool	Attach (Tcl_Interp *pInterp, LPUNKNOWN punk);
+	bool	Attach (Tcl_Interp *pInterp, LPUNKNOWN punk, ITypeInfo *pti = NULL);
 
 	operator LPUNKNOWN();
 	operator const char * ();
@@ -59,11 +60,12 @@ public:
 	void	CoClassName (TObjPtr &pObj);
 	void	InterfaceName (TObjPtr &pObj);
 	void	SetInterfaceName (TObjPtr &pObj);
+	HRESULT SetInterfaceFromType (ITypeInfo *pinfo);
 
 	bool	InvokeCmd (Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST objv[]);
 
-	bool	OptclObj::ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname, 
-								   IDispatch **ppdisp, ITypeInfo **ppinfo, ITypeComp **ppcmp);
+	bool	ResolvePropertyObject (Tcl_Interp *pInterp, const char *sname, 
+								   IUnknown **ppunk, ITypeInfo **ppinfo, ITypeComp **ppcmp);
 
 	bool	GetBinding (Tcl_Interp *pInterp, char *name);
 	bool	SetBinding (Tcl_Interp *pInterp, char *name, Tcl_Obj *command);
@@ -79,7 +81,6 @@ protected:	// methods
 	void	InitialisePointers (LPUNKNOWN punk, ITypeLib *pLib = NULL, ITypeInfo *pinfo = NULL);
 	void	CreateCommand();
 	HRESULT InitialisePointersFromCoClass ();
-	HRESULT SetInterfaceFromType (ITypeInfo *pinfo);
 	HRESULT	GetTypeAttr();
 	void	ReleaseTypeAttr();
 	void	ReleaseBindingTable();
@@ -98,18 +99,19 @@ protected:	// methods
 
 	bool	InvokeWithTypeInfVariant (Tcl_Interp *pInterp, long invokekind,
 								  int objc, Tcl_Obj *CONST objv[], 
-								  IDispatch *pDisp, ITypeInfo *pti, ITypeComp *pCmp, VARIANT &varResult);
+								  IUnknown *pUnk, ITypeInfo *pti, ITypeComp *pCmp, 
+								  VARIANT &varResult, ITypeInfo **ppResultInfo = NULL);
 	bool	InvokeWithTypeInf (Tcl_Interp *pInterp, long ik, int objc, Tcl_Obj *CONST objv[], 
-							   IDispatch *pDisp, ITypeInfo *pti, ITypeComp *pcmp);
+							   IUnknown *pUnk, ITypeInfo *pti, ITypeComp *pcmp);
 
 	bool	CheckInterface (Tcl_Interp *pInterp);
 
 	bool	SetProp (Tcl_Interp *pInterp, int paircount, Tcl_Obj * CONST namevalues[], 
-					 IDispatch *pdisp, ITypeInfo *pti, ITypeComp *ptc);
+					 IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc);
 
-	bool	GetProp (Tcl_Interp *pInterp, Tcl_Obj *name, IDispatch *pDisp, ITypeInfo *pti, ITypeComp *ptc);
+	bool	GetProp (Tcl_Interp *pInterp, Tcl_Obj *name, IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc);
 	bool	GetIndexedVariant (Tcl_Interp *pInterp, Tcl_Obj *name, 
-			  IDispatch *pdisp, ITypeInfo *pti, ITypeComp *ptc, VARIANT &varResult);
+			  IUnknown *punk, ITypeInfo *pti, ITypeComp *ptc, VARIANT &varResult, ITypeInfo **ppResultInfo);
 
 	bool	GetPropVariantDispatch (Tcl_Interp *pInterp, const char*name, 
 									IDispatch * pcurrent, VARIANT &varResult);
@@ -121,14 +123,15 @@ protected:	// methods
 
 	void	ContainerWantsToDie ();
 protected:	// properties
-	CComQIPtr<IDispatch>	m_pcurrent;	// Current interface
+	CComPtr<IUnknown>		m_pcurrent;	// Current interface
 	CComPtr<IUnknown>		m_punk;		// the 'true' IUnknown; reference purposes only
 	CComPtr<ITypeLib>		m_ptl;		// the type library for this object
 	CComPtr<ITypeInfo>		m_pti;		// the type interface for the current interface
 	CComPtr<ITypeComp>		m_ptc;		// the type info's compiler interface
 	CComPtr<ITypeInfo>		m_pti_class;// the type interface for the this coclass
-	TYPEATTR	*			m_pta;		// the type attribute for the current typeinfo
-
+public:
+	OptclTypeAttr 			m_pta;		// the type attribute for the current typeinfo
+protected:
 	std::string				m_name;
 	unsigned long			m_refcount;	// reference count of this optcl object
 	Tcl_Interp		*		m_pInterp;	// interpreter that created this object
diff --git a/src/Splitter.tcl b/src/Splitter.tcl
new file mode 100644
index 0000000..1de9d4d
--- /dev/null
+++ b/src/Splitter.tcl
@@ -0,0 +1,574 @@
+#----------------------------------------------------------------------
+# Splitter.tcl
+#	Beautiful splitter, just the way mr fuzz likes it :-)
+#	Proportional or fixed (on one of either two panes). One window
+#	per splitter. Horizontal or vertical splits.
+#
+# Date First Completed: 2000.05.02
+# Last Updated: 2000.05.02
+# Author: fuzz@sys.uea.ac.uk
+#----------------------------------------------------------------------
+
+
+# Splitter --
+# Global level function to create a Splitter - delegates to the 
+# Splitter::create namespace command. Requires the window
+# name followed by a collection of options
+proc Splitter {w args} {
+	return [eval Splitter::create $w $args]
+}
+
+# Namespace Splitter
+# Encapsulates the Splitter functionality
+namespace eval Splitter {
+
+	namespace import -force ::optcl_utils::*
+
+	# all splitter properties are held here
+	# indexing uses the window name followed by the property in the form $window-$property
+	variable properties
+
+	# _GetState --
+	# Retrieves state information regarding window w
+	# Actually all it does for now is bring the 'properties' variable into scope
+	proc _GetState {w} {
+		uplevel {
+			variable properties
+			set bar $w._splitbar
+		}
+	}
+
+
+	# create --
+	# Give a window name and a list of options, attempts to create a splitter widget
+	proc create {w args} {
+		_GetState $w
+		frame $w -width 200 -height 200 -relief flat -bd 0
+		set properties($w-position) 0.5
+		set properties($w-orientation) horizontal
+		set properties($w-windowA)	{}
+		set properties($w-windowB)	{}
+		set properties($w-barwidth)	8
+		set properties($w-type) prop
+		set properties($w-min) 0
+		set properties($w-max) -1
+
+        frame $bar -bd 1 -relief raised -width $properties($w-barwidth) -height $properties($w-barwidth) -cursor sb_v_double_arrow
+		bind $bar <ButtonPress-1> [namespace code "_StartDrag $w"]
+		bind $bar <ButtonRelease-1> [namespace code "_FinishDrag $w"]
+		try {
+			eval configure $w $args
+		} catch {er} {
+			destroy $w
+			throw $er
+		}
+		_UpdatePosition $w
+		rename ::$w [namespace current]::$w
+		proc ::$w {command args} "eval [namespace current]::_Dispatch $w \$command \$args"
+		eval ::$w configure $args
+		return $w
+	}	
+
+	# _Dispatch --
+	# First port of call for the widget command. Attempts to find a suitable command
+	# (performing command completion), before dispatching the call.
+	proc _Dispatch {w command args} {
+		set cmd [info commands $command*]
+		if {$cmd == {}} {
+			throw "no such command: $command"
+		}
+		return [eval [lindex $cmd 0] $w $args]
+	}
+
+
+	
+	# cget --
+	# retrieves the settings for this splitter or its underlying frame
+	proc cget {w option} {
+		_GetState $w
+		switch -- $option {
+			-orient {return $properties($w-orientation)}
+			-position {return $properties($w-position)}
+			-windowA {return $properties($w-windowA)}
+			-windowB {return $properties($w-windowB)}
+			-barwidth {return $properties($w-barwidth)}
+			-type {return $properties($w-type)}
+			-min {return $properties($w-min)}
+			-max {return $properties($w-max)}
+			default {return [$w cget $option]}
+		}
+	}
+
+
+	# configure --
+	# Performs basic widget (re)configuration. Defaults to the frame configuration command
+	# if option not found. Doesn't support option value query.
+	proc configure {w args} {
+		_GetState $w
+		if { [expr [llength $args] % 2] != 0 } {
+			throw "options must be in pairs"
+		}
+     	
+		set unhandled {}   
+		set update 0
+
+		foreach {option value} $args {
+			switch -- $option {
+            -orient {
+				_SetOrientation $w $value
+				set update 1
+			}
+			-position 	{
+				set properties($w-position) $value; 
+				set update 1
+			}
+            -windowA	{
+				_SetWindow $w windowA $value
+				set update 1
+			}
+
+            -windowB	{
+				_SetWindow $w windowB $value
+				set update 1
+			}
+			-barwidth {
+				set properties($w-barwidth) $value
+				set update 1
+			}
+			-type {
+				_SetType $w $value
+				set update 1
+			}
+			-min {
+				set properties($w-min) $value
+				if {$value > $properties($w-position)} {
+					set properties($w-position) $value
+				}
+				set update 1
+			}
+			-max {
+				set properties($w-max) $value
+				if {$value < $properties($w-position) && $value >= 0} {
+					set properties($w-position) $value
+				}
+			}
+			default {lappend unhandled $option $value}
+			}
+
+			if {$unhandled != {}} {
+				eval $w config $unhandled
+				set update 1
+			}
+
+			if {$update} {
+				_UpdatePosition $w
+			}
+		}
+	}
+
+	# _UpdatePosition --
+	# This is the main proc for setting up the visual representation of the splitter
+	proc _UpdatePosition {w} {
+		_GetState $w
+		_UpdateBar $w
+		switch $properties($w-orientation) {
+			horizontal {
+				_UpdatePositionHorizontal $w
+			}
+			vertical {
+				_UpdatePositionVertical $w
+			}
+		}
+	}
+
+
+	# _UpdatePositionHorizontal --
+	# Called to set window A and B when split is horizontal
+	proc _UpdatePositionHorizontal {w} {
+        _GetState $w
+        set height [winfo height $w]
+        set pos $properties($w-position)
+
+        if {$properties($w-type) != "prop"} {
+            if {$pos < 0} {
+                set pos 0
+            } elseif {$pos > $height} {
+                set pos $height
+            }
+        }
+        set hbw [expr $properties($w-barwidth) / 2]
+        switch $properties($w-type) {
+            prop {
+                if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+                    place $properties($w-windowA) -in $w -x 0 -y 0 -relx 0 -rely 0 -relheight $pos -relwidth 1.0 -height [expr -$hbw] -width 0
+                }
+                if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+                    place $properties($w-windowB) -in $w -y $hbw -x 0 -rely $pos -relx 0 -relwidth 1.0 -relheight [expr 1.0 - $pos] -height [expr -$hbw] -width 0
+                }
+            }
+            fixA {
+                if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+                    place $properties($w-windowA) -in $w -y 0 -x 0 -rely 0 -relx 0 -relwidth 1.0 -relheight 0 -height [expr $pos - $hbw] -width 0
+                }
+                if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+                    place $properties($w-windowB) -in $w -y [expr $properties($w-position) + $hbw] -x 0 -rely 0 -relx 0 -relwidth 1.0 -relheight 0 -height [expr $height - $pos - $hbw] -width 0
+                }
+            }
+            fixB {
+                if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+                    place $properties($w-windowA) -in $w -y 0 -x 0 -rely 0 -relx 0 -relwidth 1.0 -relheight 0 -height [expr $height - $pos - $hbw] -width 0
+                }
+                if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+                    place $properties($w-windowB) -in $w -y [expr $height - $pos + $hbw] -x 0 -rely 0 -relx 0 -relwidth 1.0 -relheight 0 -height [expr $pos - $hbw] -width 0
+                }
+            }
+        }
+    }
+
+
+
+	# _UpdatePositionVertical --
+	# Called to place window A and B when split is vertical
+	proc _UpdatePositionVertical {w} {
+		_GetState $w
+		set width [winfo width $w]
+		set pos $properties($w-position)
+		if {$properties($w-type) != "prop"} {
+			if {$pos < 0} {
+				set pos 0
+			} elseif {$pos > $width} {
+				set pos $width
+			}	
+		}
+		set hbw [expr $properties($w-barwidth) / 2]
+		switch $properties($w-type) {
+			prop {
+				if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+                    place $properties($w-windowA) -in $w -x 0 -y 0 -relx 0 -rely 0 -relheight 1.0 -relwidth $pos -width [expr -$hbw] -height 0
+				}
+				if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+					place $properties($w-windowB) -in $w -x $hbw -y 0 -relx $pos -rely 0 -relheight 1.0 -relwidth [expr 1.0 - $pos] -width [expr -$hbw] -height 0
+				}
+			}
+			fixA {
+				if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+                    place $properties($w-windowA) -in $w -x 0 -y 0 -relx 0 -rely 0 -relheight 1.0 -relwidth 0 -width [expr $pos - $hbw] -height 0
+				}
+				if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+                    place $properties($w-windowB) -in $w -x [expr $pos + $hbw] -y 0 -relx 0 -rely 0 -relheight 1.0 -relwidth 0 -width [expr $width - $pos - $hbw] -height 0
+				}
+			}
+			fixB {
+				if {$properties($w-windowA) != {} && [winfo exists $properties($w-windowA)]} {
+					place $properties($w-windowA) -in $w -x 0 -y 0 -relx 0 -rely 0 -relheight 1.0 -relwidth 0 -width [expr $width - $pos - $hbw] -height 0
+				}
+				if {$properties($w-windowB) != {} && [winfo exists $properties($w-windowB)]} {
+					place $properties($w-windowB) -in $w -x [expr $width - $pos + $hbw] -y 0 -relx 0 -rely 0 -relheight 1.0 -relwidth 0 -width [expr $pos - $hbw] -height 0
+				}
+			}
+		}
+	}
+
+
+	# _UpdateBar --
+	# Main proc for the visual setting of the split bar.
+	proc _UpdateBar {w} {
+		_GetState $w
+		
+		switch $properties($w-orientation) {
+			horizontal {
+				_UpdateBarHorizontal $w
+			}
+			vertical {
+				_UpdateBarVertical $w
+			}
+		}
+	}
+
+	# _UpdateBarHorizontal --
+	# Called to set the bar when the split is horizontal
+	proc _UpdateBarHorizontal {w} {
+        _GetState $w
+        set bd [$w cget -bd]
+        
+        if {$bd >= 1} {
+            $bar config -bd $bd
+        } else {
+            set bd 1
+        }
+        
+        set height [winfo height $w]
+        set pos $properties($w-position)
+        if {$properties($w-type) != "prop"} {
+            if {$pos < 0} {
+                set pos 0
+            } elseif {$pos > $height} {
+                set pos $height
+            }
+        }
+        
+        switch $properties($w-type) {
+            prop {
+                place $bar -y 0 -rely $pos -x [expr -2*$bd] -relx 0 -height $properties($w-barwidth) -relheight 0 -width [expr 4 * $bd] -relwidth 1.0 -anchor w
+            }
+            fixA {
+                place $bar -y $pos -rely 0 -x [expr -2*$bd] -relx 0 -height $properties($w-barwidth) -relheight 0 -width [expr 4 * $bd] -relwidth 1.0 -anchor w
+            }
+            fixB {
+                place $bar -y [expr $height - $pos] -rely 0 -x [expr -2*$bd] -relx 0 -height $properties($w-barwidth) -relheight 0 -width [expr 4 * $bd] -relwidth 1.0 -anchor w
+            }
+        }
+	}
+
+	# _UpdateBarVertical --
+	# Called to set the bar when split is vertical.
+	proc _UpdateBarVertical {w} {
+		_GetState $w
+		set bd [$w cget -bd]
+
+		if {$bd >= 1} {
+  	  		$bar config -bd $bd
+		} else {
+			set bd 1
+		}
+
+		set width [winfo width $w]
+		set pos $properties($w-position)
+		if {$properties($w-type) != "prop"} {
+			if {$pos < 0} {
+				set pos 0
+			} elseif {$pos > $width} {
+				set pos $width
+			}
+		}
+
+		switch $properties($w-type) {
+			prop {
+				place $bar -x 0 -relx $pos -y [expr -2*$bd] -rely 0 -width $properties($w-barwidth) -relwidth 0 -height [expr 4 * $bd] -relheight 1.0 -anchor n
+			}
+			fixA {
+
+				place $bar -x $pos -relx 0 -y [expr -2*$bd] -rely 0 -width $properties($w-barwidth) -relwidth 0 -height [expr 4 * $bd] -relheight 1.0 -anchor n
+			}
+			fixB {
+				place $bar -x [expr $width - $pos] -relx 0 -y [expr -2*$bd] -rely 0 -width $properties($w-barwidth) -relwidth 0 -height [expr 4 * $bd] -relheight 1.0 -anchor n
+			}
+		}
+	}
+
+
+	# destroy --
+	# Proc to destroy this object
+	proc destroy {w} {
+		_GetState $w
+		destroy $w
+	}
+
+	# _SetOrientation --
+	# Called to set the orientation (vertical or horizontal) on this splitter.
+	proc _SetOrientation {w orientation} {	
+		_GetState $w
+        if {![regexp ^(vertical|horizontal)$ $orientation]} {
+			throw "bad orientation - should be either horizontal or vertical"
+		}
+		set properties($w-orientation) $orientation
+		
+		if {[string match $orientation "vertical"]} {
+			$bar config -cursor sb_h_double_arrow
+		} else {
+			$bar config -cursor sb_v_double_arrow
+		}  
+	}
+
+	# _SetWindow --
+	# Called to set the window for pane A or B.
+	# w is the splitter window. winX is either windowA or windowB
+	# child is the child-window to be placed.
+	proc _SetWindow {w winX child} {
+		_GetState $w
+		if {$properties($w-$winX) != {} && [winfo exists $properties($w-$winX)]} {
+			place forget $properties($w-$winX)
+		}
+		if {$child != {}} {
+			lower $child $bar
+		}
+		set properties($w-$winX) $child
+	}
+
+	# _StartDrag --
+	# Called when the user clicks on the bar.
+	proc _StartDrag {w} {
+		_GetState $w
+		# create a proxy 
+		set proxy [frame $w._proxysplitbar -bd [$bar cget -bd] -relief raised]
+		eval place $proxy [place info $bar]
+		lower $proxy $bar
+		focus $bar
+		bind $bar <Motion> [namespace code "_Move $w %X %Y"]	
+		bind $bar <KeyPress-Escape> [namespace code "set properties($w-position) $properties($w-position); _FinishDrag $w"]
+	}
+
+	# _FinishDrag --
+	# Called when the user releases the mouse button from the bar.
+	proc _FinishDrag {w} {
+		_GetState $w
+		bind $bar <Motion> {}
+		bind $bar <KeyPress-Escape> {}
+		_UpdatePosition $w
+		::destroy $w._proxysplitbar
+	}
+	
+	# _Move --
+	# Called when 
+	proc _Move {w x y} {
+		_GetState $w
+		
+		if {$properties($w-type) == "prop"} {		
+			set x [expr double($x - [winfo rootx $w] + 2) / double([winfo width $w])]
+			set y [expr double($y - [winfo rooty $w] + 2) / double([winfo height $w])]
+		
+			if {$x < 0.0} {
+				set x 0.0
+			} elseif {$x > 1.0} {
+				set x 1.0
+			}
+
+			if {$y < 0.0} {
+				set y 0.0
+			} elseif {$y > 1.0} {
+				set y 1.0
+			}
+		} elseif {$properties($w-type) == "fixA"} {
+			set x [expr $x - [winfo rootx $w]]
+			set y [expr $y - [winfo rooty $w]]
+		} else {
+			set x [expr [winfo width $w] - ($x - [winfo rootx $w])]
+			set y [expr [winfo height $w] - ($y - [winfo rooty $w])]
+		}
+		if {$x < $properties($w-min)} {
+			set x $properties($w-min)
+		} elseif {$x > $properties($w-max) && $properties($w-max) >= 0} {
+			set x $properties($w-max)
+		}
+		if {$y < $properties($w-min)} {
+			set y $properties($w-min)
+		} elseif {$y > $properties($w-max) && $properties($w-max) >= 0} {
+			set y $properties($w-max)
+		}
+
+		switch $properties($w-orientation) {
+		horizontal {set properties($w-position) $y}
+		vertical {set properties($w-position) $x}
+		}
+
+		_UpdateBar $w
+	}
+
+	proc _SetType {w value} {
+		_GetState $w
+		if {![regexp {^(fixA)|(fixB)|(prop)$} $value]} {
+			throw "bad position type '$value': should be fixA, fixB or prop"
+		}
+
+		
+		if {![string match $properties($w-type) $value]} {
+			
+			if {[string match $properties($w-orientation) "vertical"]} {
+				set d [winfo width $w]
+			} else {
+				set d [winfo height $w]
+			}
+			
+			
+			if {$properties($w-type) == "prop"} {
+				# going from prop to fix*
+				set v [expr int(double($d) * $properties($w-position))]
+				set min [expr int(double($d) * $properties($w-min))]
+				set max [expr int(double($d) * $properties($w-max))]
+				if {$value == "fixB"} {
+					set v [expr $d - $v]
+					set min [expr $d - $min]
+					set max [expr $d - $max]
+				}
+				set properties($w-position) $v
+				set properties($w-min) $min
+				if {$properties($w-max) >= 0} {
+					set properties($w-max) $max
+				}
+			} elseif { ($value == "fixA" && $properties($w-type) == "fixB") ||
+					   ($value == "fixB" && $properties($w-type) == "fixA") } {
+				# going from fixA to fixB or vice versa
+				set properties($w-position) [expr $d - $properties($w-position)]
+				set properties($w-min) [expr $d - $properties($w-min)]
+				if {$properties($w-max) >= 0} {
+					set properties($w-max) [expr $d - $properties($w-max)]
+				}
+			} else {
+				# going from fix* to prop
+				if {$properties($w-type) == "fixB"} {
+					set properties($w-position) [expr $d - $properties($w-position)]
+					set properties($w-min) [expr $d - $properties($w-min)]
+					if {$properties($w-max) >= 0} {
+						set properties($w-max) [expr $d - $properties($w-max)]
+					}
+				}
+				set properties($w-position) [expr double($properties($w-position)) / double($d)]
+				set properties($w-min) [expr double($properties($w-min)) / double($d)]
+				if {$properties($w-max) >= 0} {
+					set properties($w-max) [expr double($properties($w-max)) / double($d)]
+				}
+			}
+			set properties($w-type) $value
+		}
+
+		
+		if {$value == "prop"} {
+			# we're not interested in window resize events any more 
+			bind $w <Configure> {}
+		} else {
+			# bind to Configure event to watch window size changes
+			bind $w <Configure> [namespace code {_OnConfigure %W}]
+		}
+	}
+
+	proc _OnConfigure {w} {
+		_UpdatePosition $w
+	}
+
+}
+set type prop      
+    
+proc MakeHorizontal {w b} {
+	$w config -orient horizontal
+	$b config -command [namespace code "MakeVertical $w $b"]
+}
+
+proc MakeVertical {w b} {
+	$w config -orient vertical
+	$b config -command [namespace code "MakeHorizontal $w $b"]
+}
+
+proc ChangeType {w} {
+	variable type
+	$w config -type $type
+}
+
+if {0} {
+frame .f -bd 2 -relief groove
+pack .f -side bottom -fill x
+button .f.orient -text H/V -width 5 -command [namespace code "MakeVertical .s .f.orient"]
+checkbutton .f.prop -text prop -variable type -onvalue prop -indicatoron 0 -width 5 -command [namespace code "ChangeType .s"]
+checkbutton .f.fixA -text fixA -variable type -onvalue fixA -indicatoron 0 -width 5 -command [namespace code "ChangeType .s"]
+checkbutton .f.fixB -text fixB -variable type -onvalue fixB -indicatoron 0 -width 5 -command [namespace code "ChangeType .s"]
+pack .f.orient .f.prop .f.fixA .f.fixB -side left
+
+Splitter .s -orient horizontal -type fixB -min 40
+pack .s -fill both -expand 1 
+Splitter .s.l1 -orient vertical -type fixA -position 100
+label .s.l2 -text Two -bg green
+.s config -windowA .s.l1 -windowB .s.l2
+label .s.l1.l1 -text One.One -bg red
+label .s.l1.l2 -text One.Two -bg blue -fg white
+.s.l1 config -windowA .s.l1.l1 -windowB .s.l1.l2
+console show
+}
\ No newline at end of file
diff --git a/src/TLView.tcl b/src/TLView.tcl
new file mode 100644
index 0000000..4f0c673
--- /dev/null
+++ b/src/TLView.tcl
@@ -0,0 +1,1380 @@
+#--------------------------------------------------------------------
+# File: TLView.tcl
+#	Implements the GUI for Type Library management
+# Author:	Farzad Pezeshkpour fuzz@sys.uea.ac.uk
+# Date:		May 25th 2000
+#--------------------------------------------------------------------
+
+image create bitmap ::tlview::downarrow_img -data {
+	#define down_arrow_width 12
+	#define down_arrow_height 12
+	static char down_arrow_bits[] = {
+		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+		0xfc,0xf1,0xf8,0xf0,0x70,0xf0,0x20,0xf0,
+		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;
+	}
+}
+image create bitmap ::tlview::leftarrow_img -data {
+	#define left_width 12
+	#define left_height 12
+	static unsigned char down_bits[] = {
+	   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x00,
+	   0xe0, 0x00, 0xc0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+}
+
+image create bitmap ::tlview::rightarrow_img -data {
+	#define right_width 12
+	#define right_height 12
+	static unsigned char right_bits[] = {
+	   0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x70, 0x00, 0xf0, 0x00,
+	   0x70, 0x00, 0x30, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+}
+
+image create bitmap ::tlview::find_img -data {
+	#define find_width 17
+	#define find_height 17
+	static char find_bits[] = {
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x50, 0x1c, 0x00,
+		0x50, 0x1c, 0x00, 0x70, 0x1c, 0x00, 0xf8, 0x3e, 0x00, 0xe8, 0x3a, 0x00,
+		0xfc, 0x7f, 0x00, 0x7e, 0xfb, 0x00, 0x7e, 0xfb, 0x00, 0xfe, 0xfb, 0x00,
+		0xfe, 0xfe, 0x00, 0x3a, 0xe8, 0x00, 0x3a, 0xe8, 0x00, 0x3e, 0xf8, 0x00,
+		0x3e, 0xf8, 0x00, 0x00, 0x00, 0x00;
+	}
+}
+
+image create bitmap ::tlview::show_img -data {
+	#define show_width 17
+	#define show_height 17
+	static char show_bits[] = {
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x02, 0x00,
+		0x80, 0x01, 0x00, 0x10, 0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x02, 0x00,
+		0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00 
+	};
+}
+image create bitmap ::tlview::hide_img -data {
+	#define hide_width 17
+	#define hide_height 17
+	static char hide_bits[] = {
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	   0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x20, 0x04, 0x00, 0x10, 0x08, 0x00,
+	   0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x20, 0x04, 0x00, 0x10, 0x08, 0x00,
+	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	   0x00, 0x00, 0x00
+   };
+}
+
+image create photo ::tlview::class_img -file [file join $env(OPTCL_LIBRARY) images class.gif]
+image create photo ::tlview::interface_img -file [file join $env(OPTCL_LIBRARY) images interface.gif]
+image create photo ::tlview::dispatch_img -file [file join $env(OPTCL_LIBRARY) images dispatch.gif]
+image create photo ::tlview::module_img -file [file join $env(OPTCL_LIBRARY) images module.gif]
+image create photo ::tlview::struct_img -file [file join $env(OPTCL_LIBRARY) images struct.gif]
+image create photo ::tlview::union_img -file [file join $env(OPTCL_LIBRARY) images union.gif]
+image create photo ::tlview::enum_img -file [file join $env(OPTCL_LIBRARY) images enum.gif]
+image create photo ::tlview::typedef_img -file [file join $env(OPTCL_LIBRARY) images typedef.gif]
+image create photo ::tlview::property_img -file [file join $env(OPTCL_LIBRARY) images property.gif]
+image create photo ::tlview::method_img -file [file join $env(OPTCL_LIBRARY) images method.gif]
+image create photo ::tlview::copy_img -file [file join $env(OPTCL_LIBRARY) images copy.gif]
+image create photo ::tlview::select_img -file [file join $env(OPTCL_LIBRARY) images select.gif]
+image create photo ::tlview::noselect_img -file [file join $env(OPTCL_LIBRARY) images noselect.gif]
+image create photo ::tlview::libselect_img -file [file join $env(OPTCL_LIBRARY) images libselect.gif]
+
+
+namespace eval tlview {
+	namespace import -force ::optcl_utils::*
+
+	catch {font delete tlviewertext}
+	catch {font delete tlviewerhigh}
+	catch {font delete tlviewerbold}
+	catch {font delete tlvieweritalic}
+
+	font create tlviewertext -family Arial -size 9
+	font create tlviewerhigh -family Arial -size 9 -weight bold
+	font create tlviewerbold -family Arial -size 9 -weight bold
+	font create tlvieweritalic -family Arial -size 9 -slant italic
+
+	variable colors
+	
+	set colors(bgcolor) SystemWindow
+	set colors(textcolor) SystemWindowText
+	set colors(highlightcolor) blue
+	set colors(selectcolor) red
+	set colors(labelcolor) brown
+
+	variable navigation_history
+	variable search_history
+	variable properties
+	variable libs
+
+	array set viewedtypes {}
+	array set navigation_history {}
+	array set search_history {}
+	array set properties {}
+	array set libs {}
+
+
+	proc TlviewScrolledListBox {w args} {
+		return [eval TlviewScrolledListBox::create $w $args]
+	}
+
+
+
+
+	namespace eval TlviewScrolledListBox {
+		proc create {w args} {
+			frame $w
+			label $w.label -text {}
+			scrollbar $w.h -orient horizontal -command [namespace code "$w.listbox xview"]
+			scrollbar $w.v -orient vertical -command [namespace code "$w.listbox yview"]
+			ImageListBox $w.listbox -yscrollcommand "$w.v set" -xscrollcommand "$w.h set"
+			grid $w.label -col 0 -row 0 -sticky nw
+			grid $w.listbox -col 0 -row 1 -sticky nsew
+			grid $w.v -col 1 -row 1 -sticky ns
+			grid $w.h -col 0 -row 2 -sticky ew
+			grid columnconfigure $w 0 -weight 1
+			grid rowconfigure $w 1 -weight 1
+			return $w
+		}
+	}
+
+
+	namespace eval TlviewPopup {
+		variable popupstate
+		
+		proc Create {w} {
+			toplevel $w
+			wm withdraw $w
+			wm overrideredirect $w 1
+			return $w
+		}
+
+		proc Show {w x y} {
+			
+			set parent [winfo parent $w]
+			wm geometry $w [join [list +$x $y] +]
+			wm deiconify $w
+			wm transient $w [winfo toplevel $w]
+
+			#raise $w $parent
+			#focus -force $w
+			bind $w <ButtonPress-1> [namespace code "Click $w %W"]
+			bind $w <KeyPress-Escape> "destroy $w"
+			bind $w <FocusOut> "destroy $w"
+			grab $w
+			return $w
+		}
+		
+		proc Click {pw w} {
+			if	{[string compare $pw $w] == 0} {
+				destroy $pw
+			}
+		}
+	}
+
+
+
+
+	namespace eval ScrolledList {
+		proc Create {w {callback {}}} {
+			frame $w -borderwidth 0 -highlightthickness 1 -highlightbackground black
+			listbox $w.lb -yscrollcommand "$w.s set" -borderwidth 0 -relief flat -background SystemWindow -fg SystemWindowText -highlightthickness 0 -height 5
+			bind $w.lb <ButtonRelease-1> [namespace code "OnSelect $w.lb $callback"]
+			scrollbar $w.s -orient vertical -command "$w.lb yview"
+			pack $w.s -side right -fill y
+			pack $w.lb -side left -fill both -expand 1
+			return $w
+		}
+		
+		proc OnSelect {w args} {
+			set cs [$w curselection]
+			if {$cs != {}} {
+				if {$args != {}} {
+					eval $args [$w get $cs]
+				}
+					after 50 "destroy [winfo toplevel $w]"
+			}
+		}
+	}
+
+
+
+
+	namespace eval TlViewDropList {
+		proc Create {w contents callback} {
+			::tlview::TlviewPopup::Create $w
+			set sl [::tlview::ScrolledList::Create $w.sl $callback]
+			eval $sl.lb insert end $contents
+			pack $sl -fill both -expand 1
+		}
+
+		proc Show {w x y} {
+			::tlview::TlviewPopup::Show $w $x $y
+		}
+	}
+
+	namespace eval TlviewCombo {
+		proc Ondropdown {w contentsfn} {
+			set x [winfo rootx $w]
+			set y [expr [winfo rooty $w] + [winfo height $w]]
+			set contents [eval $contentsfn]
+			::tlview::TlViewDropList::Create $w.dropdown $contents [namespace code "Callback $w"]
+
+			set height [winfo reqheight $w.dropdown.sl.lb]
+			set width [winfo width $w]
+			wm geometry $w.dropdown [join "$width $height" x]
+			if {[expr $y + $height + 20] >= [winfo screenheight $w.dropdown]} {
+				set y [expr [winfo rooty $w] - $height]
+			}
+			::tlview::TlViewDropList::Show $w.dropdown $x $y
+		}
+
+		proc Create {w contents args} {
+			frame $w -borderwidth 2 -relief sunken -height 10
+			eval entry $w.e -borderwidth 0 -relief flat -font {{arial 8}} $args
+			label $w.b -image ::tlview::downarrow_img -font {arial 8} -borderwidth 1 -relief raised
+			pack $w.b -side right -fill y
+			pack $w.e -side left -fill both -expand 1
+
+			bind $w.b <ButtonPress-1> [namespace code [list Ondropdown $w $contents]]
+			bind $w.e <KeyPress-Down> [namespace code [list Ondropdown $w $contents]]
+			return $w
+		}
+
+
+		proc Callback {w value} {
+			set state [$w.e cget -state]
+			$w.e config -state normal
+			$w.e delete 0 end
+			$w.e insert end $value
+			$w.e config -state $state
+		}
+	}
+
+
+
+
+	
+
+	
+	proc search_history_add {w item} {
+		variable search_history
+		set pairs [array get search_history $w]
+		if {$pairs == {}} {
+			set search_history($w) $item
+			return
+		}
+
+		set searches [lindex $pairs 1]
+		set found [lsearch $searches $item]
+		if {$found >= 0} {
+			set searches [concat $item [lreplace $searches $found $found]]
+		} else {
+			set searches [concat $item $searches]
+		}
+		set search_history($w) $searches
+	}
+
+	proc search_history_getlist {w} {
+		variable search_history
+		set pairs [array get search_history $w]
+		if {$pairs == {}} {
+			return ""
+		} else {
+			return [lindex $pairs 1]
+		}
+	}
+
+	proc history_init {w} {
+		variable navigation_history
+		
+		set navigation_history($w) {}
+		set navigation_history($w-index) -1
+		set navigation_history($w-changing) 0
+	}
+
+	proc history_erase {w} {
+		variable navigation_history
+		array unset navigation_history $w
+		array unset navigation_history $w-*
+	}
+
+	proc history_add {w lib {type {}} {elem {}}} {
+		variable navigation_history
+
+		if {[history_locked? $w]} return
+
+		set index $navigation_history($w-index)
+		set history [lrange $navigation_history($w) 0 $index]
+
+
+		# check that this isn't already the current item
+		set lastitem [lindex $history end]
+		if { [string match [lindex $lastitem 0] $lib] &&
+			 [string match [lindex $lastitem 1] $type] &&
+			 [string match [lindex $lastitem 2] $elem]} {
+			
+			# we'll just quietly return
+			return
+		}
+
+		lappend history [list $lib $type $elem]
+		set navigation_history($w) $history
+		incr navigation_history($w-index)
+		viewlib_updatenav $w
+	}
+
+	proc history_addwindowstate {w} {
+		variable properties
+		history_add $w $properties($w-viewedlibrary) $properties($w-type) $properties($w-element)
+	}
+			
+	proc history_back {w} {
+		variable navigation_history
+		if {![history_back? $w]} return
+
+		incr navigation_history($w-index) -1
+		history_current $w
+	}
+
+	proc history_forward {w} {
+		variable navigation_history
+		if {![history_forward? $w]} return
+		incr navigation_history($w-index)
+		history_current $w
+	}
+
+	proc history_current {w} {
+		variable navigation_history
+		history_lock $w
+		set item [lindex $navigation_history($w) $navigation_history($w-index)]
+		tlview::viewlib_select $w [lindex $item 0] [lindex $item 1] [lindex $item 2]
+		viewlib_updatenav $w
+		history_unlock $w
+	}
+
+	proc history_last {w} {
+		variable navigation_history
+		set navigation_history($w-index) [expr [llength navigation_history($w) - 1]
+		history_current $w
+	}
+
+	proc history_back? {w} {
+		variable navigation_history
+		return [expr $navigation_history($w-index) > 0] 
+	}
+
+	proc history_forward? {w} {
+		variable navigation_history
+		return [expr $navigation_history($w-index) < ([llength $navigation_history($w)] - 1)]
+	}
+	
+	proc history_lock {w} {
+		variable navigation_history
+		incr navigation_history($w-changing)
+	}
+
+	proc history_unlock {w} {
+		variable navigation_history
+		if {[incr navigation_history($w-changing) -1] < 0} {
+			set navigation_history($w-changing) 0
+		}
+	}
+
+	proc history_locked? {w} {
+		variable navigation_history
+		return [expr $navigation_history($w-changing) > 0]
+	}
+
+	proc history_clean {} {
+		variable navigation_history
+		set loadedlibs [typelib::loadedlibs]
+
+		foreach item [array names navigation_history] {
+			if {[regexp -- - $item]} continue
+			
+			if {![winfo exists $item]} {
+				history_erase $item
+				continue
+			}
+
+			set newhistory {}
+			foreach history_item $navigation_history($item) {
+				set lib [lindex $history_item 0]
+				if {[lsearch -exact $loadedlibs $lib] >= 0} {
+					lappend newhistory $history_item
+				}
+			}
+			set navigation_history($item) $newhistory
+			if {$navigation_history($item-index) >= [llength $newhistory]} {
+				set navigation_history($item-index) [expr [llength $newhistory] - 1]
+			}
+			set history_item [lindex $newhistory $navigation_history($item-index)]
+			history_lock $item
+			viewlib_select $item [lindex $history_item 0] [lindex $history_item 1] [lindex $history_item 2] false
+			history_unlock $item
+		}
+	}
+
+	#------------------------------------------------------------------------------
+	proc scrltxt {w {sb {x y}}} {
+		variable colors
+
+		frame $w -bd 2 -relief sunken;
+
+		text $w.t -bg $colors(bgcolor) -bd 0 -relief flat -cursor arrow -width 40 -height 20
+		grid $w.t -column 0 -row 0 -sticky nsew;
+
+		if {[lsearch $sb x] >= 0} {
+			scrollbar $w.x -orient horizontal -command [list $w.t xview]
+			$w.t config -xscrollcommand [list $w.x set] -wrap none
+			grid $w.x -column 0 -row 1 -sticky ew;
+		}
+		if {[lsearch $sb y] >= 0} {
+			scrollbar $w.y -orient vertical -command [list $w.t yview]
+			$w.t config -yscrollcommand [list $w.y set] 
+			grid $w.y -column 1 -row 0 -sticky ns;
+		}
+		
+		grid columnconfigure $w 0 -weight 1;
+		grid rowconfigure $w 0 -weight 1;
+		return $w
+	}
+
+
+
+
+
+	proc libs {w} {
+		toplevel $w -class TLLoadedTypeLibs -height 250 -width 450
+		wm transient $w [winfo parent $w]
+		wm title $w "Referenced Type Libraries"
+
+		grab set $w
+
+		set closecmd "destroy $w"
+		set browsecmd "[namespace current]::libs_browse $w"
+		set savecmd {puts [typelib::persistLoaded]}
+		button $w.close -text Close -padx 5 -underline 0 -width 10 -command $closecmd
+		place $w.close -anchor ne -relx 1.0 -x -10 -y 10
+
+		button $w.browse -text "Browse ..." -padx 5 -underline 0 -width 10 -command $browsecmd
+		place $w.browse -anchor ne -relx 1.0 -x -10 -y 50
+
+		button $w.save -text "Save" -padx 5 -underline 0 -width 10 -command $savecmd 
+		place $w.save -anchor ne -relx 1.0 -x -10 -y 90
+
+
+		set liblist [::tlview::TlviewScrolledListBox $w.liblist]
+		$liblist config -bd 2 -relief sunken
+		
+		destroy $liblist.label
+		
+		label $w.label1 -text "Available Libraries:"
+		place $w.label1 -anchor nw -x 10 -y 10
+		
+
+		set lb $liblist.listbox
+		$lb config -spacing1 3 -takefocus 1
+		place $w.liblist -anchor nw -x 10 -y 30 -relheight 1.0 -height -100 -relwidth 1.0 -width -120
+		
+		frame $w.details -bd 2 -relief groove
+		place $w.details -anchor sw -x 10 -rely 1.0 -y -10 -height 50 -relwidth 1.0 -width -20
+		label $w.details_label -text {Lib Details}
+		place $w.details_label -anchor nw -x 15 -rely 1.0 -y [expr -60 - [winfo reqheight $w.details_label] / 2]
+		
+		label $w.details.path -text "Path: " -justify left -font {Arial 8 {}}
+		place $w.details.path -anchor nw -x 5 -y 10
+		
+		bind $lb <Double-ButtonPress-1> [namespace code "libs_ondblselect $w %x %y; break;"]
+		bind $lb <<Select>> [namespace code "libs_onselect $w"]
+
+		bind $lb <B1-Motion> {break;}
+		bind $lb <KeyPress> [namespace code "libs_onkeypress $w %K; continue"]
+		
+		bind $lb <KeyPress-space> [namespace code "libs_onenterkey $w"]
+		
+		
+		bind $lb <Alt-c> "$closecmd; break"
+		bind $lb <Alt-b> $browsecmd
+		bind $lb <Alt-s> $savecmd
+
+		bind $lb <Escape> $closecmd
+		bind $lb <KeyPress-Return> $closecmd
+		bind $w <Destroy> [namespace code "libs_close %W $w"]
+		
+		focus $lb
+		$lb activate 0
+		$lb selection set 0
+
+		wm geometry $w 600x300
+		wm minsize $w 600 300
+		optcl_utils::center_window $w
+		libs_update $w
+
+		return $w
+	}
+
+	proc libs_close {W w} {
+		if {[string match $w $W]} {
+			viewlib_clean
+		}
+	}
+
+	proc libs_update {w} {
+		variable libs
+		set libs($w) {}
+
+		set loaded {}
+		set notloaded {}
+		set loadednames {}
+		set notloadednames {}
+		$w.liblist.listbox delete 0 end
+
+		foreach lib [array names ::typelib::typelibraries] {
+			mset {guid maj min} $lib
+			mset {name path} $typelib::typelibraries($lib)
+			if {[typelib::isloaded $guid $maj $min] != {}} {
+				lappend loaded [list $name $guid $maj $min $path]
+			} else {
+				lappend notloaded [list $name $guid $maj $min $path]
+			}
+		}
+
+		foreach lib [lsort -dictionary -index 0 $loaded ] {
+			$w.liblist.listbox insert end [lindex $lib 0]
+			$w.liblist.listbox setimage end ::tlview::select_img
+			lappend libs($w) $lib
+		}
+
+		foreach lib [lsort -dictionary -index 0 $notloaded ] {
+			$w.liblist.listbox insert end [lindex $lib 0]
+			$w.liblist.listbox setimage end ::tlview::noselect_img
+			lappend libs($w) $lib
+		}
+		$w.liblist.listbox selection set 0
+		libs_onselect $w
+	}
+	
+	proc libs_onkeypress {w key} {
+		set lb $w.liblist.listbox
+		set key [string tolower $key]
+		if {![regexp {^[a-z]$} $key]} return
+		
+		set currentindex [$lb index active]
+
+		set liblist [$lb get 0 end]
+		set searchlist [concat [lrange $liblist [expr $currentindex + 1] end] [lrange $liblist 0 $currentindex]]
+		
+		set nextindex [lsearch -regexp $searchlist ^($key|[string toupper $key]).*$]
+		
+		if {$nextindex>=0} {
+			if {$nextindex < [expr [llength $liblist] - $currentindex - 1]} {
+				set nextindex [expr $nextindex + $currentindex + 1]
+			} else {
+				set nextindex [expr $nextindex - ([llength $liblist] - $currentindex) + 1]
+			}
+			$lb selection clear 0 end
+			$lb activate $nextindex
+			$lb selection set $nextindex
+			$lb see active
+		}
+	}
+
+	proc libs_onenterkey {w} {
+		set lb $w.liblist.listbox
+		set index [lindex [$lb curselection] 0]
+		libs_loader $w $index
+	}
+
+	proc libs_loader {w index} {
+		variable libs
+		set lib [lindex $libs($w) $index]
+		mset {name guid maj min path} $lib
+		
+		set lb $w.liblist.listbox
+		set progname [typelib::isloaded $guid $maj $min]
+		if {$progname != {}} {
+			typelib::unload $progname
+			$lb setimage $index ::tlview::noselect_img
+		} else {
+			if {[catch {typelib::load $path} e]} {
+				tk_messageBox -title "Type Library Error" -message $e -icon error -parent $w -type ok
+			} else {
+				$lb setimage $index ::tlview::select_img
+			}
+		}
+		$lb activate $index
+		$lb selection clear 0 end
+		$lb selection set $index
+	}
+
+	proc libs_ondblselect {w x y} {
+		set lb $w.liblist.listbox
+		set index [$lb index @$x,$y]
+		if {$index == {}} return
+		libs_loader $w $index
+	}
+
+	proc libs_onselect {w} {
+		variable libs
+		set lb $w.liblist.listbox
+		set index [$lb curselection]
+
+		set lib [lindex $libs($w) $index]
+		mset {name guid maj min path} $lib
+		$w.details_label config -text $name
+		$w.details.path config -text "Path: $path"
+	}
+
+
+
+	proc libs_browse {w} {
+		variable libs
+
+		set types {
+			{{Type Libraries} {.tlb .olb .dll}}
+			{{Executable Files} {.exe .dll}}
+			{{ActiveX Controls} {.ocx}}
+			{{All Files} {*}}
+		}
+		set fname [tk_getOpenFile -filetypes $types -parent $w -title "Add Type Library Reference"]
+		if {$fname != {}} {
+			try {
+				set progname [typelib::load $fname]
+				mset {guid maj min path fullname} [typelib::loadedlib_details $progname]
+				libs_update $w
+				set index [lsearch -exact $libs($w) [list $fullname $guid $maj $min $path]]
+				puts $index
+				if {$index >= 0} {
+					after 50 "$w.liblist.listbox selection set $index; $w.liblist.listbox see $index"
+				} 
+			} catch {er} {
+				tk_messageBox -title "Error in loading library" -message $er -type ok -icon error
+			}
+		}
+	}
+
+
+	#------------------------------------------------------------------------------
+
+
+	proc viewlib_clean {} {
+		variable properties
+
+		history_clean
+
+		set loadedlibs [typelib::loadedlibs]
+		
+		foreach item [array names properties] {
+			
+			if {[regexp -- - $item]} continue
+			if {![winfo exists $item]} {
+				array unset properties $item
+				array unset properties $item-*
+				continue
+			}
+
+			if {[lsearch -exact $loadedlibs $properites($item-viewedlibrary)] < 0} {
+				# library is not loaded ... so revert to the current index of the history
+				history_current $item
+			}
+		}
+
+	}
+
+	proc viewlib_onenter {txt tag} {
+		$txt config -cursor hand2
+		 $txt tag configure $tag -underline 1
+	}
+
+	proc viewlib_onleave {txt tag} {
+		$txt config -cursor arrow
+		$txt tag configure $tag -underline 0
+	}
+
+	
+	proc viewlib_updatenav {w} {
+		set topbar $w.topbar
+		if {[history_back? $w]} {
+			$topbar.back config -state normal
+		} else {
+			$topbar.back config -state disabled
+		}
+
+		if {[history_forward? $w]} {
+			$topbar.forward config -state normal
+		} else {
+			$topbar.forward config -state disabled
+		}
+	}
+	
+
+
+	proc viewlib_select {w lib {type {}} {element {}} {raise true}} {
+		variable properties
+
+		history_lock $w
+		if {![string match $properties($w-viewedlibrary) $lib]} {
+			# try to find a window that is already viewing this library
+			foreach tlviewer [array names properties *-viewedlibrary] {
+				if {[string match $properties($tlviewer) $lib]} {
+					set w [lindex [split $tlviewer -] 0]; break
+				}
+			}
+		}
+
+		set types_lb $w.sp1.sp2.types.listbox
+		set elements_lb $w.sp1.sp2.elements.listbox
+		
+		
+		# raise the window and instruct it to view the library
+		if {$raise} {
+			raise $w
+		}
+
+		viewlib_showlibrary $w $lib
+		
+
+		if {$type != {}} {
+			# now find the type
+			set index [lsearch -exact [$types_lb get 0 end] $type]
+			if {$index >= 0} {
+				$types_lb selection set $index
+				$types_lb see $index
+			}
+		}
+
+		if {$type != {} && $element != {}} {
+			set index [lsearch -regexp [$elements_lb get 0 end] "^($element)( .+)?"]
+			if {$index >= 0} {
+				$elements_lb selection set $index
+				$elements_lb see $index
+			}
+		}
+		history_unlock $w
+		history_addwindowstate $w
+	}
+
+	# browse to a specific library
+	proc viewlib_showlibrary {w lib} {
+		variable colors
+		variable properties
+
+		set types_lb	$w.sp1.sp2.types.listbox
+		set elements_lb	$w.sp1.sp2.elements.listbox
+		set description	$w.sp1.description.desc.t
+
+
+		$elements_lb delete 0 end
+		#$description config -state normal
+		$description delete 1.0 end
+		#$description config -state disabled
+
+		# if the viewed library is being changed, redirect through the 
+		# $w-library property change event handler
+		if {![string match $properties($w-viewedlibrary) $lib] && $lib != {}} {
+			set properties($w-viewedlibrary) $lib
+			return
+		} elseif {[string match $properties($w-library) $lib] || $lib == {}} {
+			if {$properties($w-type) != {}} {
+				set properties($w-type) {}
+				$types_lb selection clear 0 end
+			}
+			return
+		}
+
+		set properties($w-library) $lib
+		set properties($w-type) {}
+		set properties($w-element) {}
+
+		history_addwindowstate $w
+					
+		$types_lb delete 0 end
+		foreach tdesc [lsort [typelib::types $lib]] {
+			set typetype [lindex $tdesc 0]
+			set full [lindex $tdesc 1]
+			set type [lindex [split $full .] 1] 
+			$types_lb insert end $type
+			
+			switch -- $typetype {
+				class {$types_lb setimage end ::tlview::class_img}
+				dispatch {$types_lb setimage end ::tlview::dispatch_img}
+				interface {$types_lb setimage end ::tlview::interface_img}
+				module {$types_lb setimage end ::tlview::module_img}
+				struct {$types_lb setimage end ::tlview::struct_img}
+				union  {$types_lb setimage end ::tlview::union_img}
+				enum  {$types_lb setimage end ::tlview::enum_img}
+				typedef {$types_lb setimage end ::tlview::typedef_img}
+
+			}
+
+		}
+		bind $types_lb <<Select>> [namespace code "viewlib_showelements_byindex $w $lib \[$types_lb curselection\]"]
+		wm title $w "Type Library: $lib"
+	}
+
+	
+
+	proc viewlib_writetype {txt fulltype} {
+		variable colors
+		set split [split $fulltype .]
+		set lib [lindex $split 0]
+		set type [lindex $split 1]
+		set element [lindex $split 2]
+
+		if {[llength [split $fulltype .]] > 1} {
+			$txt tag configure tag$fulltype -foreground $colors(highlightcolor) -font tlviewertext -underline 0
+			$txt tag bind tag$fulltype <Enter> [namespace code "viewlib_onenter $txt tag$fulltype"]
+			$txt tag bind tag$fulltype <Leave> [namespace code "viewlib_onleave $txt tag$fulltype"]
+			$txt tag bind tag$fulltype <1> [namespace code "viewlib_select [winfo toplevel $txt] $lib $type $element"]
+			if {$element == {}} {
+				$txt insert end "$fulltype" tag$fulltype
+			} else {
+				$txt insert end "$lib.$type   $element" tag$fulltype
+			}
+		} else {
+			$txt insert end "$fulltype"
+		}
+	}
+
+
+	###
+	# displays the elements for a type of some library
+	# a gives a brief description of the type
+	# This function is by the type index
+	#
+	proc viewlib_showelements_byindex {w lib typeindex} {
+		set lb $w.sp1.sp2.elements.listbox
+		
+		if {[string trim $typeindex] == {}} {
+			viewlib_showlibrary $w $lib 
+		} else {
+			set type [$w.sp1.sp2.types.listbox get $typeindex]
+			return [viewlib_showelements $w $lib $type]
+		}
+	}
+
+
+	proc viewlib_getProgIDs {classid} {
+		set key "HKEY_CLASSES_ROOT\\CLSID\\$classid\\ProgID"
+		set result {}
+		if {[catch {registry get $key {}} e]} {return {}}
+		lappend result $e
+		set key "HKEY_CLASSES_ROOT\\CLSID\\$classid\\VersionIndependentProgID"
+		if {[catch {registry get $key {}} e]} {return $result}
+		lappend result $e
+		return $result
+	}
+
+	###
+	# displays the elements for a type of some library
+	# a gives a brief description of the type
+	#
+	proc viewlib_showelements {w lib type} {
+		variable colors
+		variable properties
+
+		set elements_lb $w.sp1.sp2.elements.listbox
+
+
+		set desc $w.sp1.description.desc.t
+		#$desc config -state normal
+		$desc delete 1.0 end			
+
+		set properties($w-element) {}
+		set elements [typelib::typeinfo $lib.$type]
+		set typedesc [lindex $elements 0]
+		$desc insert end "$typedesc $type "
+		$desc tag add DescriptionLabel 1.[string length $typedesc] 1.end
+		$desc insert end "\n"
+		set line 2
+		if {[lindex $elements 4] != {}} {
+			$desc insert end \"[lindex $elements 4]\"\n
+			$desc tag add MemberDocumentation $line.0 $line.end
+			incr line
+		}
+
+		if {[lindex $elements 0] == "class"} {
+			set classid [lindex $elements 5]
+			$desc insert end "ClassID: [lindex $elements 5]\n"
+			$desc tag add MemberDocumentation $line.0 $line.end
+			incr line
+			set pids [viewlib_getProgIDs $classid]
+			if {$pids != {}} {
+				$desc insert end "ProgID: [lindex $pids 0]\n"
+				$desc tag add MemberDocumentation $line.0 $line.end
+				incr line
+				$desc insert end "VersionIndependentID: [lindex $pids 1]\n"
+				$desc tag add MemberDocumentation $line.0 $line.end
+				incr line
+			}
+		}
+
+		if {[string match "typedef" [lindex $elements 0]]} {
+			# --- we are working with a typedef
+			set t [lindex $elements 3]
+			viewlib_writetype $desc $t
+		} 
+		if {![string match $properties($w-type) $type] && $type != {}} {
+			$elements_lb delete 0 end
+			
+
+			set properties($w-type) $type
+			history_addwindowstate $w
+
+			if {![string match "typedef" [lindex $elements 0]]} {
+				foreach method [lsort [lindex $elements 1]] {
+					$elements_lb insert end $method
+					$elements_lb setimage end ::tlview::method_img
+				}
+
+				foreach prop [lsort [lindex $elements 2]] {
+					$elements_lb insert end $prop
+					$elements_lb setimage end ::tlview::property_img
+				}				
+				foreach impl [lsort -index 1 [lindex $elements 3]] {
+					set t [lindex $impl 1]
+					set flags [lindex $impl 0]
+					set item $t
+					if {[lsearch -exact $flags default] != -1} {
+						lappend item "*"
+					}
+
+					if {[lsearch -exac $flags source] != -1} {
+						lappend item (event source)
+					}
+					
+					$elements_lb insert end $item
+					$elements_lb setimage end ::tlview::typedef_img
+				}
+			}
+			bind $elements_lb <<Select>> [namespace code "viewlib_showelement_description_byindex $w $lib $type \[$elements_lb curselection\]"]
+		}
+		#$desc config -state disabled
+	}
+
+	
+
+	proc viewlib_showelement_description_byindex {w lib type elemindex} {
+
+
+		set elements_lb $w.sp1.sp2.elements.listbox
+		if {$elemindex == {}} {
+			viewlib_showelements $w $lib $type
+			return
+		} else {
+			set element [$elements_lb get $elemindex]
+			# because we tend to mark up default and source interfaces 
+			# with appended symbols and names, we'll strip these off
+			set element [lindex [lindex $element 0] 0]
+		
+			# but in fact, any implemented type needs not an element 
+			# description, but a jump to that types description
+			if {[regexp {^.+\..+$} $element]} {
+				set split [split $element .]
+				set newlib [lindex $split 0]
+				set newtype [lindex $split 1]
+				viewlib_select $w $newlib $newtype
+			} else {
+				viewlib_showelement_description $w $lib $type $element
+			}
+		}
+	}
+
+	###
+	# retrieves the description for an element
+	proc viewlib_showelement_description {w lib type elem} {
+		variable colors
+		variable properties
+
+		set txt $w.sp1.description.desc.t
+		#$txt config -state normal
+
+		$txt tag bind element <1> [namespace code "viewlib_select $lib.$type $elem"]
+
+		# if we're not viewing this element already			
+		if {$elem != {} && ![string match $properties($w-element) $elem]} {
+			$txt delete 1.0 end
+			set properties($w-element) $elem
+			history_addwindowstate $w
+
+			set elementdesc [typelib::typeinfo $lib.$type $elem]
+			set elementkind [lindex $elementdesc 0]
+
+			switch $elementkind {
+				property {
+					$txt insert end "property "
+
+					set propertydesc [lindex $elementdesc 1]
+					# insert the flags
+					set flags [lindex $propertydesc 0]
+					if {[lsearch -exact $flags read] < 0} {
+						set flags {(write only)}
+					} elseif {[lsearch -exact $flags write] < 0} {
+						set flags {(read only)}
+					} elseif {$flags != {}} {
+						set flags {(read+write)}
+					}
+					$txt insert end "$flags\n" FlagDescription
+					
+					# the property type
+					viewlib_writetype $txt [lindex $propertydesc 1]
+					$txt insert end " "
+
+					# the property name
+					$txt insert end "[lindex $propertydesc 2]" DescriptionLabel
+
+					# now do the params
+					set params [lrange $propertydesc 3 end]
+
+					foreach param $params {
+						$txt insert end "\n\t"
+
+						if {[llength $param] == 3} {
+							$txt insert end "[lindex $param 0]\t"
+							set param [lrange $param 1 end]
+						}
+						viewlib_writetype $txt [lindex $param 0]
+						$txt insert end "  [lrange $param 1 end]"
+					}
+					# the documentation for the property
+					set documentation [lindex $elementdesc 2]
+					if {$documentation != {}} {
+						$txt insert end "\n\n\"$documentation\"" MemberDocumentation
+					}
+				}
+
+				method	{
+					set methodesc [lindex $elementdesc 1]
+					$txt insert end "method\n"
+					
+					# the return type
+					viewlib_writetype $txt [lindex $methodesc 0]
+					$txt insert end " "
+					$txt insert end "[lindex $methodesc 1]" DescriptionLabel
+					set params [lrange $methodesc 2 end]
+
+					foreach param $params {
+						$txt insert end "\n\t"
+
+						if {[llength $param] == 3} {
+							$txt insert end "[lindex $param 0]\t"
+							set param [lrange $param 1 end]
+						}
+						viewlib_writetype $txt [lindex $param 0]
+						$txt insert end "  [lrange $param 1 end]"
+					}
+					set documentation [lindex $elementdesc 2]
+					if {$documentation != {}} {
+						$txt insert end "\n\n\"$documentation\"" MemberDocumentation
+					}
+				}
+			}
+		}
+		#$txt config -state disabled				
+
+	}
+
+
+	proc viewlib_copy {w} {
+		variable properties
+		
+		set str $properties($w-viewedlibrary)
+		if {$properties($w-type) != {}} {
+			set str "$str.$properties($w-type)"
+			if {$properties($w-element)!={}} {
+				set str "$str $properties($w-element)"
+			}
+		}
+		clipboard clear
+		clipboard append -format STRING -- $str
+	}
+
+	####
+	# Creates a viewer for library
+	proc viewlib {{w {}} {lib {}}} {
+		variable colors
+		variable properties
+
+		if {$w == {}} {
+
+			# iterate over the current windows to find one that is viewing this library
+			foreach viewedlib [array names properties *-viewedlibrary] {
+				if {[string match $properties($viewedlib) $lib]} {
+					set w [lindex [split $viewedlib -] 0]
+					break;
+				}
+			}
+		}
+
+		if {$w == {}} {
+			# make a unique name
+			set count 0
+			
+			set w ._tlview_$count
+			while {[winfo exists $w]} {
+				set w ._tlview_[incr count]
+			}
+		}
+
+
+		if [winfo exists $w] {
+			raise $w
+			return $w
+		}
+
+		toplevel $w -class TypeLibraryViewer -width 400 -height 300
+		wm title $w "Type Library:"
+
+		# top bar - search stuff 
+		set topbar [frame $w.topbar]
+		pack $topbar -side top -fill x -pady 2
+		pack [label $topbar.liblabel -text Library -underline 0 -width 6] -side left -anchor nw
+		
+		::tlview::TlviewCombo::Create $topbar.libs {::typelib::loadedlibs} -textvariable [namespace current]::properties($w-viewedlibrary)
+
+		$topbar.libs.e config -state disabled
+		pack $topbar.libs -side left -padx 3
+		pack [button $topbar.back -image ::tlview::leftarrow_img -bd 1 -height 16 -width 16 -command [namespace code "history_back $w"]] -side left 
+		pack [button $topbar.forward -image ::tlview::rightarrow_img -bd 1 -height 16 -width 16 -command [namespace code "history_forward $w"]] -side left 
+		pack [button $topbar.copy -image ::tlview::copy_img -bd 1 -height 16 -width 16 -command [namespace code "viewlib_copy $w"]] -padx 3 -side left 
+		pack [button $topbar.libselect -image ::tlview::libselect_img -bd 1 -height 16 -width 16 -command [namespace code "libs $w.selectlibs"]] -padx 0 -side left 
+		
+		TlviewTooltip::Set $topbar.libs "Loaded Libraries"
+		TlviewTooltip::Set $topbar.back "Previous in History"
+		TlviewTooltip::Set $topbar.forward "Next in History"
+		TlviewTooltip::Set $topbar.copy "Copy"
+		TlviewTooltip::Set $topbar.libselect "Referenced Type Libraries"
+
+		searchbox $w.searchbox
+		pack $w.searchbox -side top -fill x -pady 2
+
+		# splitters
+		set sp1 [Splitter $w.sp1 -orient horizontal -type fixB -position 160 -barwidth 5 -width 460 -height 380]
+		set sp2 [Splitter $w.sp1.sp2 -orient vertical -type fixA -position 200 -barwidth 5]
+		pack $sp1 -fill both -expand 1 -side bottom
+		$sp1 config -windowA $sp2
+		
+		# description frame
+		set desc [frame $sp1.description]
+		$sp1 config -windowB $desc
+		pack [label $desc.label -text Description] -side top -anchor nw
+		pack [scrltxt $desc.desc] -side top -anchor nw -fill both -expand 1
+		$desc.desc.t tag configure DescriptionLabel -foreground $colors(labelcolor) -font tlviewerbold
+		$desc.desc.t tag configure FlagDescription -font tlvieweritalic
+		$desc.desc.t tag configure MemberDocumentation -font tlvieweritalic -foreground $colors(labelcolor)
+		$desc.desc.t config -exportselection 1 -cursor xterm -insertontime 0 -selectforeground SystemHighlightText
+		bind $desc.desc.t <Alt-F4> {continue}
+		bind $desc.desc.t <KeyPress> "break;"
+		
+		# types frame
+		set types [::tlview::TlviewScrolledListBox $sp2.types]
+		$types.listbox config -font {Arial 10 {}}
+		$sp2 config -windowA $types
+		$types.label config -text Types
+
+		set elements [::tlview::TlviewScrolledListBox $sp2.elements]
+		$elements.listbox config -font {Arial 10 {}}
+		$sp2 config -windowB $elements
+		$elements.label config -text "Elements"
+
+		if {$lib == {}} {
+			set lib [lindex [typelib::loadedlibs] 0]
+		}
+
+		trace vdelete [namespace current]::properties($w-viewedlibrary) w [namespace code viewlib_libchanged]
+		set properties($w-viewedlibrary) {}
+		set properties($w-library) {}
+		set properties($w-type) {}
+		set properties($w-element) {}
+		trace variable [namespace current]::properties($w-viewedlibrary) w [namespace code viewlib_libchanged]
+
+		bind $w <Destroy> [namespace code "viewlib_ondestroy %W"]
+		history_init $w
+		viewlib_showlibrary $w $lib
+		
+		return $w
+	}
+
+	proc viewlib_ondestroy {w} {
+		variable properties
+
+		if {[winfo toplevel $w] == $w} {
+			history_erase $w
+			array unset properties $w
+			array unset properties $w-*
+		}
+	}
+
+	proc viewlib_libchanged {n1 n2 command} {
+		variable properties
+		set lib $properties($n2)
+		set w [lindex [split $n2 -] 0]
+		viewlib_showlibrary $w $lib
+	}
+
+	proc viewtype {fullname {elem {}} {history 1}} {
+		set split [split $fullname .]
+		set lib [lindex $split 0]
+		set type [lindex $split 1]
+
+		viewlib_select $lib $type $elem $history
+	}
+
+	### -- Search box code
+	
+
+	proc searchbox {w} {
+		variable properties
+
+		destroy $w 
+
+		frame $w 
+		set splitter [winfo parent $w]
+
+		frame $w.top 
+		pack [label $w.top.searchlabel -text Search -underline 0 -width 6] -side left -anchor nw
+		::tlview::TlviewCombo::Create $w.top.searchterm [namespace code "search_history_getlist $w"]
+		bind $w.top.searchterm.e <Return> [namespace code "searchbox_search $w"]
+
+		button $w.top.search -image ::tlview::find_img -borderwidth 1 -command [namespace code "searchbox_search $w"]
+		button $w.top.showhide -image ::tlview::show_img -borderwidth 1 -command [namespace code "searchbox_showhide $w"]
+		pack $w.top.showhide $w.top.search -side right -padx 2
+		pack $w.top.searchterm  -side left -fill x -expand 1 -padx 3
+
+		TlviewTooltip::Set $w.top.showhide "Show/Hide Search Results"
+		TlviewTooltip::Set $w.top.searchterm "Search String"
+		TlviewTooltip::Set $w.top.search "Search for String"
+
+		scrltxt $w.searchresults
+		$w.searchresults.t config -height 10 -tabs 5c -state disabled
+
+		grid $w.top -sticky nsew
+		grid rowconfigure $w 1 -weight 1
+		grid columnconfigure $w 0 -weight 1
+		update
+		set properties($w-collapsed) [expr [winfo reqheight $w] + 2]
+		set properties($w-expanded) 200
+		set properties($w-min) 90
+
+		#$splitter config -windowB $w -type fixB -position $properties($w-collapsed) -min $properties($w-collapsed) -max $properties($w-collapsed)
+		return $w
+	}
+
+	proc searchbox_show {w} {
+		variable properties
+		if {[lsearch [grid slaves $w] $w.searchresults] >= 0} return
+
+		set toplevel [winfo toplevel $w]
+		set windowheight [winfo height $toplevel]
+		set windowheight [expr $windowheight + [winfo reqheight $w.searchresults] + 5]
+
+		grid $w.searchresults -row 1 -column 0 -sticky nsew -pady 5
+		wm geometry $toplevel [winfo width $toplevel]x$windowheight
+		$w.top.showhide config -image ::tlview::hide_img -relief sunken
+	}
+
+	proc searchbox_search {w} {
+		variable properties
+		set query [$w.top.searchterm.e get]
+		set lib $properties([winfo toplevel $w]-viewedlibrary)
+
+		search_history_add $w $query
+		search $w $query
+		$w.top.searchterm.e selection clear 
+		$w.top.searchterm.e selection range 0 end
+	}
+
+	proc searchbox_hide {w} {
+		variable properties
+
+		if {[lsearch [grid slaves $w] $w.searchresults] < 0} return
+
+		set textheight [winfo reqheight $w.searchresults] 
+		set toplevel [winfo toplevel $w]
+		set windowheight [expr [winfo height $toplevel] - $textheight - 5]
+		grid forget $w.searchresults
+		
+		wm geometry $toplevel [winfo width $toplevel]x$windowheight
+		$w.top.showhide config -image ::tlview::show_img -relief raised
+	}
+
+	proc searchbox_showhide {w} {
+		if {[lsearch [grid slaves $w] $w.searchresults] < 0} {
+			searchbox_show $w
+		} else {
+			searchbox_hide $w
+		}
+	}
+
+	proc search {w query} {
+		variable properties
+		
+		# ensure that the search window exists
+
+		set w [winfo toplevel $w]
+		set lib $properties($w-viewedlibrary)
+		set searchbox $w.searchbox
+		set sr $searchbox.searchresults.t 
+
+		# set up the text box
+		$sr config -state normal
+		$sr delete 1.0 end
+		
+		searchbox_show $searchbox
+
+		set query [join [list * $query *] {}]
+
+		foreach desc [typelib::types $lib] {
+			set fulltype [lindex $desc 1]
+			set reflib [lindex [split $fulltype .] 0]
+			set reftype [lindex [split $fulltype .] 1]
+			
+			# perform search on the type name
+			if {[string match -nocase $query $reftype]} {
+				viewlib_writetype $sr $fulltype
+				$sr insert end "\n"
+			}
+
+			# now iterate through its members
+			set typeinfo [typelib::typeinfo $fulltype]
+			foreach item [lindex $typeinfo 1] {
+				if {[string match -nocase $query $item]} {
+					viewlib_writetype $sr $fulltype.$item
+					$sr insert end "\n"
+				}
+			}
+
+			foreach item [lindex $typeinfo 2] {
+				if {[string match -nocase $query $item]} {
+					viewlib_writetype $sr $fulltype.$item
+					$sr insert end "\n"
+				}
+			}
+		}
+		$sr config -state disabled
+	}
+
+	proc viewtype {fulltype {element {}}} {
+		variable properties
+		set w {}
+		set split [split $fulltype .]
+		set lib [lindex $split 0]
+		set type [lindex $split 1]
+
+
+		set w [viewlib {} $lib]
+		update
+		viewlib_select $w $lib $type $element
+	}
+
+
+	proc class {obj} {
+		viewtype [optcl::class $obj]
+	}
+
+	proc interface {obj} {
+		viewtype [optcl::interface $obj]
+	}
+}
diff --git a/src/Tooltip.tcl b/src/Tooltip.tcl
new file mode 100644
index 0000000..8f1ebbc
--- /dev/null
+++ b/src/Tooltip.tcl
@@ -0,0 +1,68 @@
+
+# public interface 
+namespace eval TlviewTooltip {
+	proc Set {w text} {
+		variable properties
+		set properties($w-text) $text
+		bind $w <Enter> [namespace code "Pending $w %X %Y"]
+		bind $w <Leave> [namespace code "Hide"]
+		Hide
+	}
+
+	proc Unset {w} {
+		bind $w <Enter> {}
+		bind $w <Leave> {}
+		Hide
+	}
+}
+
+
+# private stuff
+namespace eval TlviewTooltip {
+	variable properties
+	set properties(window)	.__tlview__tooltip
+	set properties(showbh)	1
+	set properties(pending) {}
+	
+
+	destroy $properties(window)
+	toplevel $properties(window) -bg SystemInfoText
+	label $properties(window).l -text "Tooltip" -bg SystemInfoBackground -fg SystemInfoText
+	pack $properties(window).l -padx 1 -pady 1
+
+	
+	wm overrideredirect $properties(window) 1
+	wm withdraw $properties(window)
+	
+
+	proc Pending {w x y} {
+		variable properties
+		Cancel
+		set properties(pending) [after 1000 [namespace code "Show $w $x $y"]]
+	}
+
+	proc Cancel {} {
+		variable properties
+		if {$properties(pending) != {}} {
+			after cancel $properties(pending)
+			set properties(pending) {}
+		}
+	}
+
+	proc Show {w x y} {
+		variable properties
+
+		$properties(window).l configure -text $properties($w-text)
+		wm deiconify $properties(window)
+		incr x 8
+		incr y 8
+		wm transient $properties(window) $w
+		wm geometry $properties(window) +$x+$y
+	}
+
+	proc Hide {} {
+		variable properties
+		Cancel
+		wm withdraw $properties(window)
+	}
+}
diff --git a/src/Utilities.tcl b/src/Utilities.tcl
new file mode 100644
index 0000000..7fdcb39
--- /dev/null
+++ b/src/Utilities.tcl
@@ -0,0 +1,43 @@
+
+namespace eval optcl_utils {
+namespace export *
+# nice and simple error catching
+proc try {body catch errvarname catchblock} {
+	upvar $errvarname errvar
+
+	if {![string match $catch catch]} {
+		error "invalid syntax - should be: try {body} catch {catchblock}"
+	}
+	if { [catch [list uplevel $body] errvar] } {
+		uplevel $catchblock
+	} else {
+		return $errvar
+	}
+}
+
+proc throw {errmsg} {
+	uplevel [list error $errmsg]
+}
+
+
+proc center_window {w} {
+	set width [winfo reqwidth $w]
+	set height [winfo reqheight $w]
+	set swidth [winfo screenwidth $w]
+	set sheight [winfo screenheight $w]
+
+	set x [expr ($swidth - $width) /2 ]
+	set y [expr ($sheight - $height) /2 ]
+	wm geometry $w +$x+$y
+}
+
+# set multiple variables with the contents of the list
+proc mset {vars values} {
+	foreach var $vars value $values {
+		if {$var == {}} {error "not enough variables for mset operation"}
+		upvar $var myvar
+		set myvar $value
+	}
+}
+
+}
\ No newline at end of file
diff --git a/src/optcl.cpp b/src/optcl.cpp
index d2fa2e1..941b689 100644
--- a/src/optcl.cpp
+++ b/src/optcl.cpp
@@ -38,7 +38,7 @@
 HINSTANCE			ghDll = NULL;
 CComModule			_Module;
 CComPtr<IMalloc>	g_pmalloc;
-
+bool				g_bTkInit = false;
 //----------------------------------------------------------------
 
 // Function declarations
@@ -394,7 +394,7 @@ TCL_CMDEF(OptclInvokeLibFunction)
 					CHECKHR_TCL(hr, pInterp, TCL_ERROR);
 				if (FAILED(hr))
 					return TCL_ERROR;
-				if (bOk = var2obj(pInterp, varResult, presult))
+				if (bOk = var2obj(pInterp, varResult, NULL, presult))
 					Tcl_SetObjResult (pInterp, presult);
 				VariantClear(&varResult);
 			}
@@ -623,6 +623,7 @@ int Optcl_Init (Tcl_Interp *pInterp)
 		// initialise the Tk stubs - failure 
 		if (Tk_InitStubs (pInterp, "8.0", 0) == NULL)
 			return TCL_ERROR;
+		g_bTkInit = true;
 	}
 #else
 #error Wrong Tcl version for Stubs
@@ -630,11 +631,14 @@ int Optcl_Init (Tcl_Interp *pInterp)
 #endif // USE_TCL_STUBS
 
 	HRESULT hr;
+	Tcl_PkgProvide(pInterp, "optcl", "3.0");
+
 	OleInitialize(NULL);
 	hr = CoGetMalloc(1, &g_pmalloc);
 	CHECKHR_TCL(hr, pInterp, TCL_ERROR);
 
 	Tcl_CreateExitHandler (Optcl_Exit, NULL);
+	/*
 	HRSRC hrsrc = FindResource (ghDll, MAKEINTRESOURCE(IDR_TYPELIB), _T("TCL_SCRIPT"));
 	if (hrsrc == NULL) {
 		Tcl_SetResult (pInterp, "failed to locate internal script", TCL_STATIC);
@@ -652,6 +656,7 @@ int Optcl_Init (Tcl_Interp *pInterp)
 	ASSERT (szscript != NULL);
 	if (Tcl_GlobalEval (pInterp, szscript) == TCL_ERROR)
 		return TCL_ERROR;
+	*/
 
 	Tcl_CreateObjCommand (pInterp, "optcl::new", OptclNewCmd, NULL, NULL);
 	Tcl_CreateObjCommand (pInterp, "optcl::lock", OptclLockCmd, NULL, NULL);
diff --git a/src/optcl.dsp b/src/optcl.dsp
index c4407bd..bc1dfd3 100644
--- a/src/optcl.dsp
+++ b/src/optcl.dsp
@@ -4,7 +4,7 @@
 
 # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
 
-CFG=optcl - Win32 Debug_NoStubs
+CFG=optcl - Win32 Debug
 !MESSAGE This is not a valid makefile. To build this project using NMAKE,
 !MESSAGE use the Export Makefile command and run
 !MESSAGE 
@@ -13,14 +13,13 @@ CFG=optcl - Win32 Debug_NoStubs
 !MESSAGE You can specify a configuration when running NMAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
 !MESSAGE 
-!MESSAGE NMAKE /f "optcl.mak" CFG="optcl - Win32 Debug_NoStubs"
+!MESSAGE NMAKE /f "optcl.mak" CFG="optcl - Win32 Debug"
 !MESSAGE 
 !MESSAGE Possible choices for configuration are:
 !MESSAGE 
 !MESSAGE "optcl - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
 !MESSAGE "optcl - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "optcl - Win32 Release_NoStubs" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "optcl - Win32 Debug_NoStubs" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "optcl - Win32 Release Static" (based on "Win32 (x86) Dynamic-Link Library")
 !MESSAGE 
 
 # Begin Project
@@ -41,11 +40,11 @@ RSC=rc.exe
 # PROP Use_MFC 0
 # PROP Use_Debug_Libraries 0
 # PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
+# PROP Intermediate_Dir "Release\Objects"
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "c:\progra~1\tcl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /FR /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /Ob2 /I "c:\opt\tcl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /D TCL_THREADS=1 /D USE_THREAD_ALLOC=1 /D _REENTRANT=1 /D _THREAD_SAFE=1 /FR /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -55,23 +54,24 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tclstub82.lib tkstub82.lib /nologo /dll /machine:I386 /out:"../install/optclstubs.dll" /libpath:"c:\progra~1\tcl\lib"
+# ADD LINK32 tclstub84.lib tkstub84.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /debug /machine:I386 /out:"Release/optcl30.dll" /libpath:"c:\opt\tcl\lib"
+# SUBTRACT LINK32 /incremental:yes
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
 # PROP BASE Use_MFC 0
 # PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "optcl___Win32_Debug"
-# PROP BASE Intermediate_Dir "optcl___Win32_Debug"
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
 # PROP BASE Target_Dir ""
 # PROP Use_MFC 0
 # PROP Use_Debug_Libraries 1
 # PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
+# PROP Intermediate_Dir "Debug\Objects"
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /Gi /GX /ZI /Od /I "c:\progra~1\tcl\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "c:\opt\tcl\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /D "ATL_DEBUG_INTERFACES" /FR /YX"stdafx.h" /FD /GZ /c
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -81,24 +81,22 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tclstub84.lib tkstub84.lib /nologo /dll /debug /machine:I386 /out:"../install/optclstubs.dll" /pdbtype:sept /libpath:"c:\progra~1\tcl\lib"
+# ADD LINK32 tclstub84.lib tkstub84.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /dll /debug /machine:I386 /out:"Debug/optcl30g.dll" /pdbtype:sept /libpath:"c:\opt\tcl\lib"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
 # PROP BASE Use_MFC 0
 # PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "optcl___Win32_Release_NoStubs"
-# PROP BASE Intermediate_Dir "optcl___Win32_Release_NoStubs"
-# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release\Static"
 # PROP BASE Target_Dir ""
 # PROP Use_MFC 0
 # PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_NoStubs"
-# PROP Intermediate_Dir "Release_NoStubs"
-# PROP Ignore_Export_Lib 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release\Static"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "c:\progra~1\tcl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /FR /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "c:\progra~1\tcl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /FR /Yu"stdafx.h" /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /Ob2 /I "c:\opt\tcl\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "OPTCL_EXPORTS" /D TCL_THREADS=1 /D USE_THREAD_ALLOC=1 /D _REENTRANT=1 /D _THREAD_SAFE=1 /FR /YX /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -107,35 +105,8 @@ BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tclstub82.lib tkstub82.lib /nologo /dll /machine:I386 /libpath:"c:\progra~1\tcl\lib"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tcl80.lib tk80.lib /nologo /dll /machine:I386 /out:"../install/optcl80.dll" /libpath:"c:\progra~1\tcl\lib"
-
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "optcl___Win32_Debug_NoStubs"
-# PROP BASE Intermediate_Dir "optcl___Win32_Debug_NoStubs"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_NoStubs"
-# PROP Intermediate_Dir "Debug_NoStubs"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /Gi /GX /ZI /Od /I "c:\progra~1\tcl\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /D "USE_TCL_STUBS" /D "USE_TK_STUBS" /FR /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /Gi /GX /ZI /Od /I "c:\progra~1\tcl\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "OPTCL_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x809 /d "_DEBUG"
-# ADD RSC /l 0x809 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tclstub82.lib tkstub82.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:\progra~1\tcl\lib"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tcl80.lib tk80.lib /nologo /dll /debug /machine:I386 /out:"../install/optcl80.dll" /pdbtype:sept /libpath:"c:\progra~1\tcl\lib"
+# ADD BASE LINK32 /nologo /machine:IX86
+# ADD LINK32 /nologo /machine:IX86 /out:"Release\optcl30s.lib" /lib
 
 !ENDIF 
 
@@ -143,27 +114,30 @@ LINK32=link.exe
 
 # Name "optcl - Win32 Release"
 # Name "optcl - Win32 Debug"
-# Name "optcl - Win32 Release_NoStubs"
-# Name "optcl - Win32 Debug_NoStubs"
-# Begin Group "Source"
+# Name "optcl - Win32 Release Static"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
 
-# PROP Default_Filter "cpp"
+SOURCE=.\ComRecordInfoImpl.cpp
+# End Source File
 # Begin Source File
 
 SOURCE=.\Container.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"StdAfx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+# ADD CPP /YX
 
-# ADD BASE CPP /Yu"StdAfx.h"
-# ADD CPP /Yu"StdAfx.h"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
@@ -174,21 +148,16 @@ SOURCE=.\DispParams.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-# ADD CPP /Yu"StdAfx.h"
-
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
-
-# ADD BASE CPP /Yu"stdafx.h"
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-# ADD BASE CPP /Yu"StdAfx.h"
-# ADD CPP /Yu"StdAfx.h"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
@@ -199,16 +168,16 @@ SOURCE=.\EventBinding.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+# ADD CPP /YX
 
-# ADD BASE CPP /Yu"stdafx.h"
-# ADD CPP /Yu"stdafx.h"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
@@ -216,7 +185,22 @@ SOURCE=.\EventBinding.cpp
 # Begin Source File
 
 SOURCE=.\initonce.cpp
-# SUBTRACT CPP /YX /Yc /Yu
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# ADD CPP /YX"stdafx.h"
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# SUBTRACT CPP /YX
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
+
+!ENDIF 
+
 # End Source File
 # Begin Source File
 
@@ -224,21 +208,16 @@ SOURCE=.\ObjMap.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-# ADD CPP /Yu"StdAfx.h"
-
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+# ADD CPP /YX
 
-# ADD BASE CPP /Yu"stdafx.h"
-# ADD CPP /Yu"stdafx.h"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
-
-# ADD BASE CPP /Yu"StdAfx.h"
-# ADD CPP /Yu"StdAfx.h"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
@@ -249,21 +228,16 @@ SOURCE=.\optcl.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-# ADD CPP /Yu"StdAfx.h"
-
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+# ADD CPP /YX
 
-# ADD BASE CPP /Yu"stdafx.h"
-# ADD CPP /Yu"stdafx.h"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
-
-# ADD BASE CPP /Yu"StdAfx.h"
-# ADD CPP /Yu"StdAfx.h"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
@@ -271,6 +245,22 @@ SOURCE=.\optcl.cpp
 # Begin Source File
 
 SOURCE=.\OptclBindPtr.cpp
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# ADD CPP /YX"stdafx.h"
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# ADD CPP /YX
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
+
+!ENDIF 
+
 # End Source File
 # Begin Source File
 
@@ -278,48 +268,97 @@ SOURCE=.\OptclObj.cpp
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# ADD CPP /Yu"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-# ADD CPP /Yu"StdAfx.h"
+# ADD CPP /YX
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-# ADD BASE CPP /Yu"stdafx.h"
-# ADD CPP /Yu"stdafx.h"
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
+!ENDIF 
 
-# ADD BASE CPP /Yu"StdAfx.h"
-# ADD CPP /Yu"StdAfx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\OptclTypeAttr.cpp
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# ADD CPP /YX"stdafx.h"
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# ADD CPP /YX
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
 
 !ENDIF 
 
 # End Source File
 # Begin Source File
 
-SOURCE=.\OptclTypeAttr.cpp
+SOURCE=.\resource.rc
 # End Source File
 # Begin Source File
 
 SOURCE=.\StdAfx.cpp
-# ADD CPP /Yc"StdAfx.h"
+# ADD CPP /Yc"stdafx.h"
 # End Source File
 # Begin Source File
 
 SOURCE=.\typelib.cpp
-# ADD CPP /Yu"StdAfx.h"
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# ADD CPP /YX"stdafx.h"
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# ADD CPP /YX
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
+
+!ENDIF 
+
 # End Source File
 # Begin Source File
 
 SOURCE=.\utility.cpp
-# ADD CPP /Yu"StdAfx.h"
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# ADD CPP /YX"stdafx.h"
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# ADD CPP /YX
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# ADD BASE CPP /YX"stdafx.h"
+# ADD CPP /YX"stdafx.h"
+
+!ENDIF 
+
 # End Source File
 # End Group
-# Begin Group "Header"
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
 
-# PROP Default_Filter "h"
+SOURCE=.\ComRecordInfoImpl.h
+# End Source File
 # Begin Source File
 
 SOURCE=.\Container.h
@@ -373,42 +412,272 @@ SOURCE=.\typelib.h
 SOURCE=.\utility.h
 # End Source File
 # End Group
-# Begin Group "Resource"
+# Begin Group "Resource Files"
 
-# PROP Default_Filter ""
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
 # Begin Source File
 
-SOURCE=.\resource.rc
+SOURCE=.\ImageListBox.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\ImageListBox.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\ImageListBox.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\ImageListBox.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\optcl.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\optcl.tcl
+
+"c:\progra~1\tcl\lib\optcl\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\optcl.tcl
+
+"c:\progra~1\tcl\lib\optcl\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\optcl.tcl
+
+"c:\progra~1\tcl\lib\optcl\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\Splitter.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\Splitter.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\Splitter.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\Splitter.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\TLView.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\TLView.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\TLView.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\TLView.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\Tooltip.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\Tooltip.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\Tooltip.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\Tooltip.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
 # End Source File
 # Begin Source File
 
 SOURCE=.\typelib.tcl
+
+!IF  "$(CFG)" == "optcl - Win32 Release"
+
+# Begin Custom Build
+InputPath=.\typelib.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
+
+# Begin Custom Build
+InputPath=.\typelib.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
+
+# Begin Custom Build
+InputPath=.\typelib.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
+
+!ENDIF 
+
 # End Source File
-# End Group
 # Begin Source File
 
-SOURCE=.\test.tcl
+SOURCE=.\Utilities.tcl
 
 !IF  "$(CFG)" == "optcl - Win32 Release"
 
-# PROP Exclude_From_Build 1
+# Begin Custom Build
+InputPath=.\Utilities.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
 
 !ELSEIF  "$(CFG)" == "optcl - Win32 Debug"
 
-# PROP Exclude_From_Build 1
+# Begin Custom Build
+InputPath=.\Utilities.tcl
+
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Release_NoStubs"
+# End Custom Build
 
-# PROP BASE Exclude_From_Build 1
-# PROP Exclude_From_Build 1
+!ELSEIF  "$(CFG)" == "optcl - Win32 Release Static"
 
-!ELSEIF  "$(CFG)" == "optcl - Win32 Debug_NoStubs"
+# Begin Custom Build
+InputPath=.\Utilities.tcl
 
-# PROP BASE Exclude_From_Build 1
-# PROP Exclude_From_Build 1
+"c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+	copy $(InputPath) c:\progra~1\tcl\lib\optcl\scripts\$(InputPath)
+
+# End Custom Build
 
 !ENDIF 
 
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\test.tcl
 # End Source File
 # End Target
 # End Project
diff --git a/src/optcl.dsw b/src/optcl.dsw
new file mode 100644
index 0000000..1b00bbc
--- /dev/null
+++ b/src/optcl.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "optcl"=.\optcl.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/src/optcl.h b/src/optcl.h
index 7e21c66..e50e25e 100644
--- a/src/optcl.h
+++ b/src/optcl.h
@@ -41,5 +41,5 @@ int		TypeLib_Init (Tcl_Interp *pInterp);
 
 
 extern CComPtr<IMalloc> g_pmalloc;
-
+extern bool g_bTkInit;
 #endif// _OPTCL_H_B229D2A0_616A_11d4_8004_0040055861F2
\ No newline at end of file
diff --git a/src/optcl.tcl b/src/optcl.tcl
new file mode 100644
index 0000000..c92fd71
--- /dev/null
+++ b/src/optcl.tcl
@@ -0,0 +1,10 @@
+package provide optcl 3.0
+set env(OPTCL_LIBRARY) [file dirname [info script]]
+source [file join $env(OPTCL_LIBRARY) scripts Utilities.tcl]
+source [file join $env(OPTCL_LIBRARY) scripts Splitter.tcl]
+source [file join $env(OPTCL_LIBRARY) scripts TypeLib.tcl]
+source [file join $env(OPTCL_LIBRARY) scripts ImageListBox.tcl]
+source [file join $env(OPTCL_LIBRARY) scripts Tooltip.tcl]
+if {[info commands tk] != {}} {source [file join $env(OPTCL_LIBRARY) scripts TLView.tcl]}
+load [file join $env(OPTCL_LIBRARY) bin optcl.dll]
+typelib::updateLibs
\ No newline at end of file
diff --git a/src/resource.aps b/src/resource.aps
deleted file mode 100644
index 28c86bbdf75aa430c38699f694c1c75fd8320e97..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50364
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
X!<PLkk4(diuxxDie*|gf+5P_qj7em>

diff --git a/src/resource.h b/src/resource.h
index d253af9..74f1227 100644
--- a/src/resource.h
+++ b/src/resource.h
@@ -9,7 +9,7 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        103
+#define _APS_NEXT_RESOURCE_VALUE        104
 #define _APS_NEXT_COMMAND_VALUE         40001
 #define _APS_NEXT_CONTROL_VALUE         1000
 #define _APS_NEXT_SYMED_VALUE           101
diff --git a/src/resource.rc b/src/resource.rc
index 52e366d..54e4d81 100644
--- a/src/resource.rc
+++ b/src/resource.rc
@@ -21,13 +21,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
 #pragma code_page(1252)
 #endif //_WIN32
 
-/////////////////////////////////////////////////////////////////////////////
-//
-// TCL_SCRIPT
-//
-
-IDR_TYPELIB             TCL_SCRIPT DISCARDABLE  "typelib.tcl"
-
 #ifdef APSTUDIO_INVOKED
 /////////////////////////////////////////////////////////////////////////////
 //
@@ -80,15 +73,15 @@ BEGIN
             VALUE "Comments", "Requires Tcl/Tk major version 8, minor version >= 1\0"
             VALUE "CompanyName", "University of East Anglia\0"
             VALUE "FileDescription", "A Tcl extension for manipulating COM objects.\0"
-            VALUE "FileVersion", "3,0,0,2\0"
+            VALUE "FileVersion", "3,0,1,0\0"
             VALUE "InternalName", "optcl\0"
             VALUE "LegalCopyright", "Copyright � 1999\0"
             VALUE "LegalTrademarks", "-\0"
             VALUE "OriginalFilename", "optcl.dll\0"
             VALUE "PrivateBuild", "-\0"
             VALUE "ProductName", "OpTcl\0"
-            VALUE "ProductVersion", "3,0,0,2\0"
-            VALUE "SpecialBuild", "-\0"
+            VALUE "ProductVersion", "3,0,1,0\0"
+            VALUE "SpecialBuild", "threaded\0"
         END
     END
     BLOCK "VarFileInfo"
diff --git a/src/test.tcl b/src/test.tcl
index 86b8d60..278d3b3 100644
--- a/src/test.tcl
+++ b/src/test.tcl
@@ -1,100 +1,8 @@
 console show
-load optcl
+package require optcl
 
-
-
-proc ie_test {} {
-	global ie
-	set ie [optcl::new -window .ie {{8856F961-340A-11D0-A96B-00C04FD705A2}}]
-	pack .ie
-	$ie navigate www.wired.com
-}
-
-proc vrml_test {} {
-	global vrml
-	set vrml [optcl::new -window .vrml {{4B6E3013-6E45-11D0-9309-0020AFE05CC8}}]
-	pack .vrml
-}
-
-proc tree_test {} {
-	global tv
-	set tv [optcl::new -window .tv {{C74190B6-8589-11D1-B16A-00C0F0283628}}]
-	pack .tv
-	set n1 [$tv -with nodes add]
-	$n1 : text "Node 1" key "1 Node"
-	optcl::unlock $n1
-	set n2 [$tv -with nodes add "1 Node" 4 "2 Node" "Node 2"]
-	$n2 : text "Node 2.5"
-	optcl::unlock $n2
-}
-
-proc dp_test {} {
-	global dp
-	destroy .date
-	set dp [optcl::new -window .date MSComCtl2.DTPicker]
-	.date config -width 100 -height 20
-	pack .date
-	tlview::viewtype [optcl::class $dp]
-}
-
-proc cal_test {} {
-	global cal
-	destroy .cal
-	set cal [optcl::new -window .cal MSCAL.Calendar]
-	pack .cal
-}
-
-
-proc pb_test {} {
-	global pb mousedown
-
-	proc PBMouseDown {obj args} {
-		global mousedown
-		set mousedown $obj
-	}	
-
-	proc PBMouseUp {args} {
-		global mousedown
-		set mousedown {}
-	}
-
-	proc PBMouseMove {obj button shift x y} {
-		global mousedown
-		if {$mousedown == {}} return
-		if {[string compare $mousedown $obj]==0} {
-			$obj : value $x
-		}
-	}
-	destroy .pb
-	set pb [optcl::new -window .pb MSComctlLib.ProgCtrl]
-	pack .pb
-	.pb config -width 100 -height 10
-	optcl::bind $pb MouseDown PBMouseDown
-	optcl::bind $pb MouseUp PBMouseUp
-	optcl::bind $pb MouseMove PBMouseMove
-}
-
-
-
-
-proc word_test {} {
-	global word
-
-	set word [optcl::new word.application]
-	$word : visible 1
-}
-
-
-proc tl_test {} {
-	typelib::load {Microsoft Shell Controls And Automation (Ver 1.0)}
-	tlview::refview .r
-	tlview::loadedlibs .l
-}
-
-
-
-proc cosmo_test {} {
-	global co
-	set co [optcl::new -window .co SGI.CosmoPlayer.2]
-	pack .co
-}
+set xl [optcl::new Excel.Application]
+$xl : visible 1
+$xl -with workbooks add
+$xl -with workbooks.item(1).worksheets.item(1).range(a1,d4) : value 16
+set r [$xl -with workbooks.item(1).worksheets.item(1) range a1 d4]
diff --git a/src/typelib.cpp b/src/typelib.cpp
index 4e2ec52..916ea4b 100644
--- a/src/typelib.cpp
+++ b/src/typelib.cpp
@@ -32,7 +32,8 @@
 #include "typelib.h"
 #include "objmap.h"
 #include "optclbindptr.h"
-
+#include "optcltypeattr.h"
+#include <strstream>
 
 //----------------------------------------------------------------
 //				\/\/\/\/\/\ Declarations /\/\/\/\/\/\/
@@ -63,7 +64,9 @@ TCL_CMDEF(TypeLib_UnloadLib);
 TCL_CMDEF(TypeLib_IsLibLoaded);
 TCL_CMDEF(TypeLib_TypesInLib);
 TCL_CMDEF(TypeLib_TypeInfo);
-
+TCL_CMDEF(TypeLib_GetRegLibPath);
+TCL_CMDEF(TypeLib_GetLoadedLibPath);
+TCL_CMDEF(TypeLib_GetDetails);
 
 //// TEST CODE ////
 TCL_CMDEF(TypeLib_ResolveConstantTest);
@@ -102,65 +105,35 @@ void TypeLibsTbl::DeleteAll ()
 	deltbl();
 }
 
-
-ITypeLib * TypeLibsTbl::LoadLib (Tcl_Interp *pInterp, const char *fullname)
+/*
+ *-------------------------------------------------------------------------
+ * TypeLibsTbl::LoadLib --
+ *	Load a Type Library by it's pathname.
+ *
+ * Result:
+ *	Pointer to the TypeLib object iff successful.
+ * Side Effects:
+ *	Library is added to the cache
+ *-------------------------------------------------------------------------
+ */
+TypeLib * TypeLibsTbl::LoadLib (Tcl_Interp *pInterp, const char *pathname)
 {
 	USES_CONVERSION;
 	CComPtr<ITypeLib> pLib;
-	CComPtr<ITypeComp> pComp;
-
-	TObjPtr		cmd,	// used to build up a command string
-				result, // attaches to the result of the above commands' execution
-				progname; // the programmatic name of the library
-	GUID guid;
-	int maj, min;
-	HRESULT hr;
-
-	Tcl_HashEntry *pEntry = NULL;
-	TypeLib *ptl;
-
-	if (m_loadedlibs.find(fullname, &pEntry) != NULL) {
-		ASSERT (pEntry != NULL);
-		ptl = (TypeLib *)Tcl_GetHashValue (pEntry);
-		ASSERT (ptl != NULL);
-		Tcl_SetResult (pInterp, Tcl_GetHashKey (&m_tbl, pEntry), TCL_VOLATILE);
-		pLib = ptl->m_ptl;
-		ASSERT (pLib != NULL);
-		return pLib;
-	}
-
-
+	
 	try {
-		// get the guid, max and min version numbers
-		cmd.create();
-		cmd = "typelib::libdetail";
-		cmd.lappend (fullname);
-		if (Tcl_GlobalEvalObj (pInterp, cmd) == TCL_ERROR) return NULL;
-		result.attach(Tcl_GetObjResult(pInterp), false);
-		if (result.llength() != 3)
-			throw ("expected three elements in the library description");
-
-		maj = result.lindex (1);
-		min = result.lindex (2);
-		hr = CLSIDFromString (A2OLE(result.lindex(0)), &guid);
-		if (FAILED(hr)) 
-			throw ("failed to convert identifier");
-
-		// load the library
-		hr = LoadRegTypeLib (guid, maj, min, LOCALE_SYSTEM_DEFAULT, &pLib);
+		CComPtr<ITypeComp> pComp;
+		TObjPtr progname, fullname;
+		Tcl_HashEntry *pEntry = NULL;
+		HRESULT hr;
+
+		hr = LoadTypeLibEx(A2OLE(pathname), REGKIND_NONE, &pLib);
 		CHECKHR(hr);
+		ASSERT(pLib != NULL);
 		if (pLib == NULL)
 			throw ("failed to bind to a type library");
 
-		// get the programmatic name of the library
-		TypeLib_GetName (pLib, NULL, progname);
-
-		hr = pLib->GetTypeComp(&pComp);
-		if (FAILED(hr))
-			throw ("failed to get the compiler interface for library");
-		
-		Cache (progname, fullname, pLib, pComp);
-		Tcl_SetResult (pInterp, (char*)(const char*)progname, TCL_VOLATILE);
+		return Cache (pInterp, pLib, pathname);
 	} 
 
 	catch (char *error) {
@@ -170,7 +143,7 @@ ITypeLib * TypeLibsTbl::LoadLib (Tcl_Interp *pInterp, const char *fullname)
 		Tcl_SetResult (pInterp, (char*)HRESULT2Str(hr), TCL_DYNAMIC);
 	}
 
-	return pLib;
+	return NULL;
 }
 
 
@@ -188,32 +161,107 @@ ITypeLib * TypeLibsTbl::LoadLib (Tcl_Interp *pInterp, const char *fullname)
  *	None.
  *-------------------------------------------------------------------------
  */
-TypeLib* TypeLibsTbl::Cache (const char *szname, const char *szfullname, ITypeLib *ptl, ITypeComp *ptc)
+TypeLib* TypeLibsTbl::Cache (Tcl_Interp *pInterp, ITypeLib *ptl, const char * path /* = NULL */)
 {
-	ASSERT(szname != NULL && szfullname != NULL);
-	ASSERT (ptl != NULL && ptc != NULL);
+	TLIBATTR * ptlattr = NULL;
+	CComPtr<ITypeComp> ptc;
 	TypeLib *pLib = NULL;
 	Tcl_HashEntry *pEntry = NULL;
 
-	pLib = new TypeLib (ptl, ptc);
-	pEntry = set(szname, pLib);
-	ASSERT (pEntry != NULL);
 
-	m_loadedlibs.set (szfullname, pEntry);
+	if (FAILED(ptl->GetLibAttr(&ptlattr))) {
+		if (pInterp)
+			Tcl_SetResult (pInterp, "couldn't retrieve type library attributes", TCL_STATIC);
+		return NULL;
+	}
+
+	ASSERT(ptlattr != NULL);
+
+	TypeLibUniqueID uid (ptlattr->guid, ptlattr->wMajorVerNum, ptlattr->wMinorVerNum);
+
+
+	ptl->ReleaseTLibAttr(ptlattr);
+	
+	// search for this guid
+	if (m_loadedlibs.find(&uid, &pEntry) != NULL) {
+		ASSERT (pEntry != NULL);
+		pLib = (TypeLib *)Tcl_GetHashValue (pEntry);
+		return pLib;
+	} 
+
+	// now generate the names, and do a search on the programmatic name
+	TObjPtr progname, fullname;
+	GenerateNames(progname, fullname, ptl);
+
+	if (g_libs.find((char*)progname, &pLib) != NULL) {
+		if (pInterp)
+			Tcl_SetResult (pInterp, "library already loaded with the same programmatic name", TCL_STATIC);
+		return NULL;
+	} 
+
+	if (FAILED(ptl->GetTypeComp(&ptc))) {
+		if (pInterp)
+			Tcl_SetResult (pInterp, "failed to retrieve the ITypeComp interface", TCL_STATIC);
+		return NULL;
+	}
+
+	pLib = new TypeLib ();
+	if (FAILED(pLib->Init(ptl, ptc, progname, fullname, path))) {
+		delete pLib;
+		pLib = NULL;
+	} else {
+		pEntry = set(progname, pLib);
+		ASSERT (pEntry != NULL);
+		m_loadedlibs.set (&uid, pEntry);
+	}
+
 	return pLib;
 }
 
 
-bool TypeLibsTbl::IsLibLoaded (const char *fullname)
+TypeLib * TypeLibsTbl::TypeLibFromUID (const GUID &guid, WORD maj, WORD min)
 {
-	ASSERT (fullname != NULL);
-	return (m_loadedlibs.find (fullname) != NULL);
+	TypeLibUniqueID uid(guid, maj, min);
+	TypeLib *plib = NULL;
+	Tcl_HashEntry *pEntry = NULL;
+	m_loadedlibs.find(&uid, &pEntry);
+	if (pEntry)
+		plib = (TypeLib*)Tcl_GetHashValue (pEntry);
+	return plib;
 }
 
+
+char * TypeLibsTbl::GetFullName (char * szProgName)
+{
+	ASSERT (szProgName != NULL);
+	TypeLib * pLib = NULL;
+	char * result = NULL;
+	if (find(szProgName, &pLib) != end()) {
+		ASSERT (pLib != NULL);
+		result = pLib->m_fullname;
+	}
+	return result;
+}
+
+
+
+GUID * TypeLibsTbl::GetGUID (char * szProgName)
+{
+	ASSERT (szProgName != NULL);
+	TypeLib * pLib = NULL;
+	GUID * result = NULL;
+	if (find(szProgName, &pLib) != end()) {
+		ASSERT (pLib != NULL && pLib->m_libattr != NULL);
+		result = &(pLib->m_libattr->guid);
+	}
+	return result;
+}
+
+
 /*
  *-------------------------------------------------------------------------
  * TypeLibsTbl::UnloadLib --
- *	Given the fullname of a library, the routine unloads it, if it is 
+ *	Given the programmatic name of a library, the routine unloads it, if it is 
  *	loaded.
  *
  * Result:
@@ -223,22 +271,73 @@ bool TypeLibsTbl::IsLibLoaded (const char *fullname)
  *	None.
  *-------------------------------------------------------------------------
  */
-void TypeLibsTbl::UnloadLib (Tcl_Interp *pInterp, const char *fullname)
+void TypeLibsTbl::UnloadLib (Tcl_Interp *pInterp, const char *szprogname)
 {
 	Tcl_HashEntry *pEntry = NULL;
 	TypeLib *ptl  = NULL;
+	pEntry = g_libs.find(szprogname, &ptl);
 
-	if (!m_loadedlibs.find (fullname, &pEntry)) 
+	if (pEntry == NULL) 
 		return;
 
-	ASSERT (pEntry != NULL);
-	ptl = (TypeLib*)Tcl_GetHashValue (pEntry);
-	ASSERT (ptl != NULL);
+	ASSERT (ptl != NULL && ptl->m_ptl != NULL);
+
+	TObjPtr progname, fullname;
+	HRESULT hr = GenerateNames(progname, fullname, ptl->m_ptl);
+
+	if (FAILED(hr)) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+		return;
+	}
+	ASSERT (fullname != (Tcl_Obj*)(NULL));
+	TypeLibUniqueID uid (ptl->m_libattr->guid, ptl->m_libattr->wMajorVerNum, ptl->m_libattr->wMinorVerNum);
+	m_loadedlibs.delete_entry(&(uid));
 	delete ptl;
-	m_loadedlibs.delete_entry(fullname);
 	Tcl_DeleteHashEntry (pEntry);
 }
 
+/*
+ *-------------------------------------------------------------------------
+ * TypeLibsTbl::GenerateNames --
+ *	Given a type library, generates the programmatic and full name for the
+ *	library.
+ *
+ * Result:
+ *	S_OK iff successful.
+ *
+ * Side Effects:
+ *	The objects, progname and username allocate memory to store the 
+ *	names.
+ *-------------------------------------------------------------------------
+ */
+HRESULT TypeLibsTbl::GenerateNames (TObjPtr &progname, TObjPtr &username, ITypeLib *pLib)
+{
+	USES_CONVERSION;
+	ASSERT (pLib != NULL);
+	CComBSTR bprogname, busername;
+	HRESULT hr;
+	hr = pLib->GetDocumentation(-1, &bprogname, &busername, NULL, NULL);
+	if (FAILED(hr)) return hr;
+
+	TLIBATTR * pattr = NULL;
+	hr = pLib->GetLibAttr (&pattr);
+	if (FAILED(hr)) return hr;
+
+	ASSERT (pattr != NULL);
+	TDString str;
+	if (busername != NULL)
+		str << OLE2A(busername);
+	else
+		str << OLE2A(bprogname);
+	str << " (Ver " << pattr->wMajorVerNum << "." << pattr->wMinorVerNum << ")";
+	pLib->ReleaseTLibAttr(pattr);
+
+	username.create();
+	username = str;
+	progname.create();
+	progname = OLE2A(bprogname);
+	return hr;
+}
 
 
 
@@ -256,42 +355,7 @@ void TypeLibsTbl::UnloadLib (Tcl_Interp *pInterp, const char *fullname)
  */
 TypeLib *TypeLibsTbl::EnsureCached (ITypeLib  *ptl)
 {
-	USES_CONVERSION;
-
-	ASSERT (ptl != NULL);
-	TDString verfullname;
-	TypeLib *pLib = NULL;
-	TLIBATTR *pattr = NULL;
-	HRESULT hr;
-	BSTR name = NULL, 
-		 fullname = NULL;
-	char *szname, *szfullname;
-	Tcl_HashEntry *pEntry = NULL;
-	CComPtr<ITypeComp> ptc;
-
-	// get the libraries different names
-	hr = ptl->GetDocumentation(-1, &name, &fullname, NULL, NULL);
-	CHECKHR(hr);
-	szname = W2A(name);
-	szfullname = W2A(fullname);
-	FreeBSTR(name);
-	FreeBSTR(fullname);
-	if (find(szname, &pLib))
-		return pLib; // cached already
-
-	// build the fullname+version string
-	hr = ptl->GetLibAttr(&pattr);
-	CHECKHR(hr);
-	verfullname.set (szfullname) << " (Ver " << short(pattr->wMajorVerNum) << "." << 
-		short(pattr->wMinorVerNum) << ")";
-	ptl->ReleaseTLibAttr (pattr); pattr = NULL;
-
-	// get the compiler interface
-	hr = ptl->GetTypeComp (&ptc);
-	CHECKHR(hr);
-	// now cache the lot
-	pLib = Cache (szname, verfullname, ptl, ptc);
-	return pLib;
+	return Cache(NULL, ptl);
 }
 
 
@@ -314,7 +378,7 @@ TypeLib *TypeLibsTbl::EnsureCached (ITypeInfo *pInfo)
 	UINT tmp;
 	HRESULT hr;
 	hr = pInfo->GetContainingTypeLib(&pLib, &tmp);
-	CHECKHR(hr);
+	if (FAILED(hr)) return NULL;
 	return EnsureCached (pLib);
 }
 
@@ -329,13 +393,17 @@ int TypeLib_Init (Tcl_Interp *pInterp)
 {
 	OleInitialize(NULL);
 	Tcl_CreateExitHandler (TypeLib_Exit, NULL);
-	Tcl_CreateObjCommand (pInterp, "typelib::loaded", TypeLib_LoadedLibs, NULL, NULL);
-	Tcl_CreateObjCommand (pInterp, "typelib::load", TypeLib_LoadLib, NULL, NULL);
+	Tcl_CreateObjCommand (pInterp, "typelib::loadedlibs", TypeLib_LoadedLibs, NULL, NULL);
+	Tcl_CreateObjCommand (pInterp, "typelib::_load", TypeLib_LoadLib, NULL, NULL);
 	Tcl_CreateObjCommand (pInterp, "typelib::unload", TypeLib_UnloadLib, NULL, NULL);
 	Tcl_CreateObjCommand (pInterp, "typelib::types", TypeLib_TypesInLib, NULL, NULL);
 	Tcl_CreateObjCommand (pInterp, "typelib::typeinfo", TypeLib_TypeInfo, NULL, NULL);
 	Tcl_CreateObjCommand (pInterp, "typelib::isloaded", TypeLib_IsLibLoaded, NULL, NULL);
+	Tcl_CreateObjCommand (pInterp, "typelib::reglib_path", TypeLib_GetRegLibPath, NULL, NULL);
+	Tcl_CreateObjCommand (pInterp, "typelib::loadedlib_path", TypeLib_GetLoadedLibPath, NULL, NULL);
+	Tcl_CreateObjCommand (pInterp, "typelib::loadedlib_details", TypeLib_GetDetails, NULL, NULL);
 
+	
 	//// TESTS ////
 	Tcl_CreateObjCommand (pInterp, "typelib::resolveconst", TypeLib_ResolveConstantTest, NULL, NULL);
 	
@@ -599,6 +667,8 @@ void	TypeLib_GetName (ITypeLib *pLib, ITypeInfo *pInfo, TObjPtr &pname)
 		bLibcreate = true;
 	}
 	// get the library programmatic name
+
+	
 	hr = pLib->GetDocumentation (-1, &progname, NULL, NULL, NULL);
 	CHECKHR(hr);
 
@@ -1203,10 +1273,30 @@ int TypeLib_DescribeTypeInfo (Tcl_Interp *pInterp, ITypeInfo *pti)
 			default:
 				presult = "???"; break;
 			}
+
 			
 			presult.lappend(methods).lappend(properties).lappend(inherited);
-			cmdresult = TCL_OK;
+
+			
+			if (SUCCEEDED(pti->GetDocumentation (MEMBERID_NIL, NULL, &bdoc, NULL, NULL)) && bdoc != NULL)
+			{
+				presult.lappend (OLE2A(bdoc));
+				SysFreeString (bdoc);
+			}
+			else
+				presult.lappend ("");
+
+			LPOLESTR lpsz;
+			CHECKHR(StringFromCLSID (pta->guid, &lpsz));
+			ASSERT (lpsz != NULL);
+			if (lpsz != NULL) {
+				presult.lappend(OLE2A (lpsz));
+				CoTaskMemFree (lpsz); lpsz = NULL;
+			}
 		}
+		Tcl_SetObjResult (pInterp, presult);
+		cmdresult = TCL_OK;
+
 		ReleaseTypeAttr (pti, pta);
 	}
 	catch (HRESULT hr) {
@@ -1218,18 +1308,6 @@ int TypeLib_DescribeTypeInfo (Tcl_Interp *pInterp, ITypeInfo *pti)
 		throw (error);
 	}
 
-	if (cmdresult == TCL_OK) {
-		if (SUCCEEDED(pti->GetDocumentation (MEMBERID_NIL, NULL, &bdoc, NULL, NULL)) && bdoc != NULL)
-		{
-			presult.lappend (OLE2A(bdoc));
-			SysFreeString (bdoc);
-		}
-		else
-			presult.lappend ("");
-
-		Tcl_SetObjResult (pInterp, presult);
-	}
-
 	return cmdresult;
 }
 
@@ -1522,7 +1600,7 @@ TCL_CMDEF(TypeLib_LoadedLibs)
  *-------------------------------------------------------------------------
  * TypeLib_LoadLib --
  *	Ensures that a given library is loaded. A library is described in terms
- *	of its full human-readable name.
+ *	of its filename.
  *
  * Result:
  *	TCL_OK iff successful.
@@ -1534,14 +1612,16 @@ TCL_CMDEF(TypeLib_LoadedLibs)
 TCL_CMDEF(TypeLib_LoadLib)
 {
 	if (objc != 2) {
-		Tcl_WrongNumArgs (pInterp, 1, objv, "full_libname");
+		Tcl_WrongNumArgs (pInterp, 1, objv, "library_path");
 		return TCL_ERROR;
 	}
 	TObjPtr libname;
 	libname.attach(objv[1], false);
-	if (g_libs.LoadLib (pInterp, libname) != NULL)
+	TypeLib * pLib = g_libs.LoadLib (pInterp, libname);
+	if (pLib) {
+		Tcl_SetResult (pInterp, pLib->m_progname, TCL_VOLATILE);
 		return TCL_OK;
-	else
+	} else
 		return TCL_ERROR;
 }
 
@@ -1585,16 +1665,34 @@ TCL_CMDEF(TypeLib_UnloadLib)
  */
 TCL_CMDEF(TypeLib_IsLibLoaded)
 {
-	if (objc != 2) {
-		Tcl_WrongNumArgs (pInterp, 1, objv, "fullname_library");
+	USES_CONVERSION;
+	if (objc != 4) {
+		Tcl_WrongNumArgs (pInterp, 1, objv, "lib_guid majorver minorver");
 		return TCL_ERROR;
 	}
-	TObjPtr name;
-	TObjPtr value;
-	value.create(false);
-	name.attach(objv[1]);
-	value = g_libs.IsLibLoaded(name);
-	Tcl_SetObjResult (pInterp, value);
+	GUID guid;
+	long maj, min;
+
+	char * szguid = Tcl_GetStringFromObj (objv[1], NULL);
+	ASSERT (szguid != NULL);
+	if (FAILED(CLSIDFromString(A2OLE(szguid), &guid))) {
+		Tcl_SetResult (pInterp, "string isn't a guid", TCL_STATIC);
+		return TCL_ERROR;
+	}
+	
+	if (Tcl_GetLongFromObj(pInterp, objv[2], &maj) == TCL_ERROR)
+		return TCL_ERROR;
+
+	if (Tcl_GetLongFromObj(pInterp, objv[3], &min) == TCL_ERROR)
+		return TCL_ERROR;
+
+	TypeLib * pLib = NULL;
+
+	pLib = g_libs.TypeLibFromUID(guid, maj, min);
+	Tcl_ResetResult (pInterp);
+	if (pLib) 
+		Tcl_SetObjResult(pInterp, pLib->m_progname);
+	
 	return TCL_OK;
 }
 
@@ -1687,7 +1785,62 @@ TCL_CMDEF (TypeLib_TypesInLib)
 
 
 
+HRESULT TypeLib_GetDefaultInterface (ITypeInfo *pti, bool bEventSource, ITypeInfo ** ppdefti) {
+	ASSERT (pti != NULL && ppdefti != NULL);
 
+	OptclTypeAttr attr;
+	attr = pti;
+	ASSERT (attr.m_pattr != NULL);
+	if (attr->typekind != TKIND_COCLASS)
+		return E_FAIL;
+	HRESULT hr;
+	WORD selected = -1;
+
+	for (WORD index = 0; index < attr->cImplTypes; index++) {
+
+		INT implflags;
+		hr = pti->GetImplTypeFlags(index, &implflags);
+		if (FAILED(hr)) return hr;
+		
+		if ( ((implflags & IMPLTYPEFLAG_FDEFAULT) == IMPLTYPEFLAG_FDEFAULT) &&
+			 ((bEventSource && (implflags & IMPLTYPEFLAG_FSOURCE) == IMPLTYPEFLAG_FSOURCE) ||
+			 (!bEventSource && (implflags & IMPLTYPEFLAG_FSOURCE) != (IMPLTYPEFLAG_FSOURCE)))
+		   ) {
+			break;
+		}
+	}
+	if (index == attr->cImplTypes)
+		return E_FAIL;
+
+	CComPtr<ITypeInfo> pimpl;
+	HREFTYPE hreftype;
+
+	// retrieve the referenced typeinfo
+	hr = pti->GetRefTypeOfImplType(index, &hreftype);
+	if (FAILED(hr)) return hr;
+
+	hr = pti->GetRefTypeInfo(hreftype, &pimpl);
+	if (FAILED(hr)) return hr;
+	OptclTypeAttr pimplattr;
+	pimplattr = pimpl;
+
+	// resolve typedefs 
+	while (pimplattr->typekind == TKIND_ALIAS) {
+		CComPtr<ITypeInfo> pref;
+		hr = pimpl->GetRefTypeInfo(pimplattr->tdescAlias.hreftype, &pref);
+		if (FAILED(hr)) return hr;
+		pimpl = pref;
+		pimplattr = pimpl;
+	}
+
+	// if this isn't an interface forget it
+	if ((pimplattr->typekind != TKIND_DISPATCH) &&
+		(pimplattr->typekind != TKIND_INTERFACE))
+		return E_FAIL;
+
+	// okay - return the typeinfo to the caller
+	return pimpl.CopyTo(ppdefti);
+}
 
 
 
@@ -1747,6 +1900,102 @@ TCL_CMDEF(TypeLib_TypeInfo)
 }
 
 
+
+
+
+
+
+TCL_CMDEF(TypeLib_GetRegLibPath)
+{
+	USES_CONVERSION;
+	if (objc != 4) {
+		Tcl_WrongNumArgs (pInterp, 1, objv, "lib_id majver minver");
+		return TCL_ERROR;
+	}
+
+	char * szGuid = Tcl_GetStringFromObj (objv[1], NULL);
+	long maj, min;
+
+	if (Tcl_GetLongFromObj(pInterp, objv[2], &maj) == TCL_ERROR)
+		return TCL_ERROR;
+
+	if (Tcl_GetLongFromObj(pInterp, objv[3], &min) == TCL_ERROR)
+		return TCL_ERROR;
+
+	GUID guid;
+	if (FAILED(CLSIDFromString(A2OLE(szGuid), &guid))) {
+		Tcl_SetResult (pInterp, "failed to convert to a guid: ", TCL_STATIC);
+		Tcl_AppendResult (pInterp, szGuid, NULL);
+		return TCL_ERROR;
+	}
+
+	CComBSTR path;
+	HRESULT hr = QueryPathOfRegTypeLib(guid, maj, min, LOCALE_SYSTEM_DEFAULT, &path);
+	if (FAILED(hr)) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+		return TCL_ERROR;
+	}
+	Tcl_SetResult (pInterp, W2A(path), TCL_VOLATILE);
+	return TCL_OK;
+}
+
+TCL_CMDEF(TypeLib_GetLoadedLibPath)
+{
+	if (objc != 2) {
+		Tcl_WrongNumArgs (pInterp, 1, objv, "progname");
+		return TCL_ERROR;
+	}
+	char * szProgName = Tcl_GetStringFromObj(objv[1], NULL);
+	ASSERT (szProgName);
+
+	TypeLib * plib = NULL;
+	g_libs.find(szProgName, &plib);
+	if (plib==NULL) {
+		Tcl_SetResult (pInterp, "couldn't find loaded library: ", TCL_STATIC);
+		Tcl_AppendResult (pInterp, szProgName, NULL);
+		return TCL_ERROR;
+	}
+	Tcl_SetObjResult (pInterp, plib->m_path);
+	return TCL_OK;
+}
+
+
+TCL_CMDEF(TypeLib_GetDetails)
+{
+	USES_CONVERSION;
+	if (objc != 2) {
+		Tcl_WrongNumArgs (pInterp, 1, objv, "progname");
+		return TCL_ERROR;
+	}
+	char * szProgName = Tcl_GetStringFromObj (objv[1], NULL);
+	ASSERT(szProgName);
+	TypeLib * plib = NULL;
+	g_libs.find(szProgName, &plib);
+	if (plib == NULL) {
+		Tcl_SetResult (pInterp, "couldn't find loaded library: ", TCL_STATIC);
+		Tcl_AppendResult (pInterp, szProgName, NULL);
+		return TCL_ERROR;
+	}
+	TObjPtr obj;
+	obj.create();
+	LPOLESTR pstr;
+	HRESULT hr;
+	hr = StringFromCLSID(plib->m_libattr->guid, &pstr);
+	if (FAILED(hr)) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+		return TCL_ERROR;
+	}
+	obj.lappend(OLE2A(pstr));
+	CoTaskMemFree(pstr);
+	obj.lappend(plib->m_libattr->wMajorVerNum);
+	obj.lappend(plib->m_libattr->wMinorVerNum);
+	obj.lappend(plib->m_path);
+	obj.lappend(plib->m_fullname);
+	Tcl_SetObjResult (pInterp, obj);
+	return TCL_OK;
+}
+
+
 /*
  *-------------------------------------------------------------------------
  * TypeLib_ResolveName --
@@ -1761,6 +2010,7 @@ TCL_CMDEF(TypeLib_TypeInfo)
  *
  *-------------------------------------------------------------------------
  */
+
 void TypeLib_ResolveName (const char * lib, const char * type, 
 						  TypeLib **pptl, ITypeInfo **ppinfo)
 {
@@ -1884,7 +2134,7 @@ bool TypeLib_ResolveConstant (Tcl_Interp *pInterp, ITypeInfo *pti,
 		ASSERT (bp.lpvardesc->lpvarValue != NULL);
 		if (bp.lpvardesc->lpvarValue == NULL)
 			throw ("constant didn't have a associated value!");
-		var2obj (pInterp, *(bp.lpvardesc->lpvarValue), pObj);
+		var2obj (pInterp, *(bp.lpvardesc->lpvarValue), NULL, pObj);
 		pti->ReleaseVarDesc (bp.lpvardesc);
 		return true;
 	}
@@ -2006,3 +2256,4 @@ TCL_CMDEF(TypeLib_ResolveConstantTest)
 		return TCL_ERROR;
 }
 
+
diff --git a/src/typelib.h b/src/typelib.h
index 907709a..8e1610b 100644
--- a/src/typelib.h
+++ b/src/typelib.h
@@ -34,14 +34,55 @@
 struct TypeLib {
 	CComPtr<ITypeLib>	m_ptl; 
 	CComPtr<ITypeComp>	m_ptc;
+	TLIBATTR	*		m_libattr;
+
+	TObjPtr				m_progname, m_fullname, m_path;
+
+
+	TypeLib () {
+		m_progname.create();
+		m_fullname.create();
+		m_path.create();
+		m_libattr = NULL;
+	}
+
+	~TypeLib () {
+		if (m_libattr != NULL) {
+			ASSERT (m_ptl != NULL);
+			m_ptl->ReleaseTLibAttr(m_libattr);
+		}	
+	}
+
+	HRESULT Init (ITypeLib *ptl, ITypeComp *ptc, const char * progname, 
+				  const char * fullname, const char * path) {
+		ASSERT (progname != NULL && fullname != NULL);
 
-	TypeLib (ITypeLib *ptl, ITypeComp *ptc) {
 		m_ptl = ptl;
 		m_ptc = ptc;
+
+		m_progname = progname;
+		m_fullname = fullname;
+		if (path)
+			m_path = path;
+		else
+			m_path = "???";
+		return ptl->GetLibAttr(&m_libattr);
 	}
 };
 
 
+struct TypeLibUniqueID {
+	TypeLibUniqueID (const GUID & guid, WORD maj, WORD min) {
+		m_guid = guid;
+		m_majorver = maj;
+		m_minorver = min;
+	}
+
+	GUID	m_guid;
+	WORD	m_majorver;
+	WORD	m_minorver;
+};
+
 
 // TypeLibsTbl - a hash table mapping library programmatic name to a TypeLib structure
 // Internally it also holds a mapping from the a libraries human readable name to
@@ -51,19 +92,28 @@ class TypeLibsTbl : public THash<char, TypeLib*>
 public:
 				TypeLibsTbl ();
 	virtual		~TypeLibsTbl ();
+
 	void		DeleteAll ();
-	ITypeLib*	LoadLib (Tcl_Interp *pInterp, const char *fullname);
-	void		UnloadLib (Tcl_Interp *pInterp, const char *fullname);
-	bool		IsLibLoaded (const char *fullname);
+
+	TypeLib*	LoadLib (Tcl_Interp *pInterp, const char * fullpath);
+	void		UnloadLib (Tcl_Interp *pInterp, const char * progname);
+	TypeLib*	TypeLibFromUID (const GUID & guid, WORD maj, WORD min);
+
 	TypeLib*	EnsureCached (ITypeLib  *pLib);
 	TypeLib*	EnsureCached (ITypeInfo *pInfo);
+
+	char*		GetFullName (char * szProgName);
+	GUID*		GetGUID (char * szProgName);
+
 protected: // methods
-	TypeLib*	Cache (const char *szname, const char *szfullname, ITypeLib *ptl, ITypeComp *ptc);
+	TypeLib*	Cache (Tcl_Interp * pInterp, ITypeLib *ptl, const char * path = NULL);
+	HRESULT		GenerateNames (TObjPtr &progname, TObjPtr &username, ITypeLib *pLib);
 
 protected: // properties
-	THash <char, Tcl_HashEntry*>	m_loadedlibs; // by name
+	THash <TypeLibUniqueID, Tcl_HashEntry*>		m_loadedlibs;	// by unique and full descriptor
 };
 
+
 // globals
 extern TypeLibsTbl g_libs;
 
@@ -76,6 +126,6 @@ bool	TypeLib_ResolveConstant (Tcl_Interp *pInterp, char *fullformatname,
 								 TObjPtr &pObj, ITypeInfo *pInfo = NULL);
 bool	TypeLib_ResolveConstant (Tcl_Interp *pInterp, ITypeInfo *pti, 
 								 const char *member, TObjPtr &pObj);
-
+HRESULT TypeLib_GetDefaultInterface (ITypeInfo *pti, bool bEventSource, ITypeInfo ** ppdefti);
 
 #endif // _TYPELIB_H_62518A80_624A_11d4_8004_0040055861F2
\ No newline at end of file
diff --git a/src/typelib.tcl b/src/typelib.tcl
index ac19136..7d8b00c 100644
--- a/src/typelib.tcl
+++ b/src/typelib.tcl
@@ -1,26 +1,78 @@
 package require registry
-package provide optcl 3.0
 
 namespace eval typelib {
-	variable syslibs
-	variable syslibguids
-	array set syslibs {}
-	array set syslibguids {}
 
+	variable typelibraries
+	array set typelibraries {}
+
+
+	namespace export *
+	namespace import -force ::optcl_utils::*
 
 	# -----------------------------------------------------------------------------
 
-	# updatelibs -- called to enumerate and store the system libraries
-	proc updatelibs {} {
 
-		variable syslibs;
-		catch {unset syslibs}
-		array set syslibs {}
+	# latest_typelib_version --
+	#	For a given registered type library guid, it retrieves the most recent version
+	#	number of the library, and returns a string giving a version qualified string
+	#	description for the library. Returns {} iff failed.
+	#
+	proc latest_typelib_version {typelib_guid} {
+		set typelibpath HKEY_CLASSES_ROOT\\TypeLib\\$typelib_guid
+		if {[registry keys HKEY_CLASSES_ROOT\\TypeLib $typelib_guid] == {}} {
+			puts "couldn't find typelib $typelib"
+			return {}
+		}
+		set v [lindex [lsort -decreasing -real [registry keys $typelibpath]] 0]
+
+		if {$v == {}} {
+			puts "bad typelib version number: $v for $typelib_guid"
+			set result {}
+		} else {
+			set result [makelibname $typelib $v]
+		}
+		return $result
+	}
+
+	# makelibname --
+	#	standard function for creating a library's human readable name from the 
+	#	registered guid.
+	#
+	proc makelibname {typelib_guid ver} {
+		set maj 0
+		set min 0
+		scan $ver "%d.%d" maj min
+		return "[registry get HKEY_CLASSES_ROOT\\TypeLib\\$typelib_guid\\$ver {}] (Ver $maj.$min)"
+	}
+
+	proc path_from_libname {libname} {
+		variable typelibraries
+		set r [array get typelibraries $libname]
+		if {$r == {}} {
+			error "library does not exist: $libname"
+		}
+		set libsettings [lindex $r 1]
+		return [eval path_from_libid $libsettings]
+	}
 
+	# updateLibs -- called to enumerate and store the system libraries
+	proc updateLibs {} {
+		variable typelibraries;
+
+		# enumerate the current type libraries to make sure that they're still there
+		foreach library [array names typelibraries] {
+			try {
+				mset {name path} $typelibraries($library)
+				if {![file exists $path]} {throw {}}
+			} catch {er} {
+				unset typelibraries($library)
+			}
+		}
 
+		# now iterate over the registered type libraries in the system
 		set root {HKEY_CLASSES_ROOT\TypeLib}
 		foreach id [registry keys $root] {
-			catch {
+			try {
 				foreach v [registry keys $root\\$id] {
 					scan $v "%d.%d" maj min;
 					if [catch {
@@ -32,60 +84,93 @@ namespace eval typelib {
 						continue;
 					}
 
-					set name "[registry get $root\\$id\\$v {}] (Ver $maj.$min)"
-					set syslibs($name) [list $id $maj $min]
+					set name [makelibname $id $maj.$min]
+					set path [typelib::reglib_path $id $maj $min]
+					addLibrary $name $id $maj $min $path
 				}
+			} catch {e} {
+				puts $e
 			}
 		}
 	}
 
-	# -----------------------------------------------------------------------------
 
-	# categories -- returns the component categories
-	proc categories {} {
+	proc addLibrary {name typelib_id maj min path} {
+		variable typelibraries
+		set typelibraries([list [string toupper $typelib_id] $maj $min]) [list $name $path]
+	}
 
-		set alldata {}
-		set k "HKEY_CLASSES_ROOT\\Component Categories"
-		set cats [registry keys $k]
+	proc persistLoaded {} {
+		set cmd "typelib::loadLibsFromDetails"
+		lappend cmd [getLoadedLibsDetails]
+		return $cmd
+	}
 
-		foreach cat $cats {
-			set values [registry values $k\\$cat]
-			set data {}
-			foreach value $values {
-				lappend data [registry get $k\\$cat $value] 
-			}
-			lappend alldata $data
+	# getLoadedLibsDetails --
+	#	Retrieves a list of descriptors for the current loaded libraries
+	proc getLoadedLibsDetails {} {
+		set result {}
+		foreach progname [typelib::loadedlibs] {
+			lappend result [typelib::loadedlib_details $progname]
 		}
+		return $result
+	}
 
-		return $alldata
+	proc loadLibsFromDetails {details} {
+		foreach libdetail $details {
+			loadLibFromDetail $libdetail
+		}
 	}
 
+	proc loadLibFromDetail {libdetail} {
+		variable typelibraries
+		mset {guid maj min path fullname} $libdetail
 
+		# if the library is already registered, get the path from the registry
+		mset { _ regpath} [lindex [array get typelibraries [list $guid $maj $min]] 1]
+		if {$regpath != {}} {
+			set path $regpath
+		} 
+		
+		typelib::load $path
+		addLibrary $fullname $guid $maj $min $path
+	}
+
+	proc load {path} {
+		set progname [typelib::_load $path]
+		mset {guid maj min path fullname} [typelib::loadedlib_details $progname]
+		addLibrary $fullname $guid $maj $min $path
+		return $progname
+	}
 
 
 	# -----------------------------------------------------------------------------
 
-	# 	libdetail -- returns a the id, maj and min version number
-	#		in a list if it exists, else throws an error
+
+	# libdetail -- 
+	#	returns the id, maj and min version numbers and 
+	#	the path as a list if they exists, else throws an error.
+	#
 	proc libdetail {name} {
-		variable syslibs
+		variable typelibraries
 
-		if {[array names syslibs $name] == {}} {
+		if {[array names typelibraries $name] == {}} {
 			error "could not find the library '$name'"
 		}
 
-		return [lindex [array get syslibs $name] 1]
+		return [lindex [array get typelibraries $name] 1]
 	}
 
 
 	#------------------------------------------------------------------------------
 
-	# alllibs -- returns all the registered libraries by name
+	# alllibs -- returns all the registered libraries by {guid maj min} identification
 	proc alllibs {} {
-		variable syslibs
-		return [array names syslibs]
+		variable typelibraries
+		return [array names typelibraries]
 	}
 
+	# returns the fully qualified default interface for a com class
 	proc defaultinterface {classtype} {
 		set desc [typelib::typeinfo $classtype]
 		if {[llength $desc] != 3} {
@@ -101,522 +186,174 @@ namespace eval typelib {
 	}
 
 	#------------------------------------------------------------------------------
-	updatelibs
-
 }
 
 
 
 
+namespace eval COM {
+	namespace import -force ::typelib::*
 
-if {[info commands tk] != {}} {
-	namespace eval tlview {
-		catch {font delete tlviewertext}
-		catch {font delete tlviewerhigh}
-		catch {font delete tlviewerbold}
-		font create tlviewertext -family Arial -size 9 -weight normal
-		font create tlviewerhigh -family Arial -size 9 -weight bold
-		font create tlviewerbold -family Arial -size 9 -weight bold
-
-		variable bgcolor white
-		variable textcolor black
-		variable highlightcolor blue
-		variable selectcolor red
-		variable labelcolor red
-
-		array set viewedtypes {}
-
-		#------------------------------------------------------------------------------
-		proc scrltxt {w {sb {x y}}} {
-			variable bgcolor;
-			frame $w -bd 2 -relief sunken;
-
-			text $w.t -bg $bgcolor -bd 0 -relief flat -cursor arrow -width 40 -height 20
-			grid $w.t -column 0 -row 0 -sticky nsew;
+	# categories
+	# retrieve a list of all category names
+	proc categories {} {
+		set alldata {}
+		set k "HKEY_CLASSES_ROOT\\Component Categories"
+		set cats [registry keys $k]
 
-			if {[lsearch $sb x] >= 0} {
-				scrollbar $w.x -orient horizontal -command [list $w.t xview]
-				$w.t config -xscrollcommand [list $w.x set] -wrap none
-				grid $w.x -column 0 -row 1 -sticky ew;
-			}
-			if {[lsearch $sb y] >= 0} {
-				scrollbar $w.y -orient vertical -command [list $w.t yview]
-				$w.t config -yscrollcommand [list $w.y set] 
-				grid $w.y -column 1 -row 0 -sticky ns;
+		foreach cat $cats {
+			set values [registry values $k\\$cat]
+			set data {}
+			foreach value $values {
+				lappend data [registry get $k\\$cat $value] 
 			}
-			
-			grid columnconfigure $w 0 -weight 1;
-			grid rowconfigure $w 0 -weight 1;
-		}
-
-
-		#------------------------------------------------------------------------------
-		proc cl_list {w} {
-			variable bgcolor
-			frame $w -bd 2 -relief sunken
-			canvas $w.c -yscrollcommand "$w.v set" -xscrollcommand "$w.h set" -bd 0 -relief flat -cursor arrow -bg $bgcolor -highlightthickness 0
-			scrollbar $w.h -orient horizontal -command "$w.c xview"
-			scrollbar $w.v -orient vertical -command "$w.c yview"
-
-			grid $w.c -column 0 -row 0 -sticky news
-			grid $w.h -column 0 -row 1 -sticky ew
-			grid $w.v -column 1 -row 0 -sticky ns
-			grid columnconfigure $w 0 -weight 1
-			grid rowconfigure $w 0 -weight 1
-			bind $w.c <1> { focus %W }
-			bind $w.c <Prior> { %W yview scroll -1 pages}
-			bind $w.c <Next> { %W yview scroll 1 pages}
-			return $w
+			lappend alldata $data
 		}
 
+		return $alldata
+	}
 
 
-		proc cl_list_update {w} {
-			variable ::typelib::syslibs
-			variable bgcolor
-
-			if {![winfo exists $w]} {
-				error "expected to find a TypeLib list widget: $w"
-			}
-
-			set c $w.c
-			$c delete all
+	# collate all the category names under the category clsid (parameter 1) into an
+	# array passed by name
+	proc collate_category_names {category arrname} {
+		upvar $arrname categories
 
-			foreach tl [lsort [array names ::typelib::syslibs]] {
-				cl_list_addlib $w $tl
+		set ck "HKEY_CLASSES_ROOT\\Component Categories\\$category"
+		catch {
+			foreach value [registry values $ck] {
+				catch {set categories([registry get $ck $value]) ""}
 			}
-		}
-
-
-
-		proc cl_list_addlib {w tl} {
-			variable bgcolor
-
-			set c $w.c
-			set bbox [$c bbox entry]
-			if {$bbox == {}} {set bbox {0 0 10 10}}
-			set bottom [lindex $bbox 3]
-			set bottom [expr int($bottom) + 3]
-			set tag [$c create text 10 $bottom -anchor nw -fill black -font tlviewertext -justify left -text $tl -tags entry]
-			$c bind $tag <1> [namespace code "cl_list_press $w $tag"]
-			cl_list_updatetag $w $tag
+		} err
+		return $err
+	}
 
-			set bbox [$c bbox entry]
-			set sr [list 0 0 [lindex $bbox 2] [expr $bottom + 20]]
-			$c config -scrollregion $sr
-		}
 
+	# collates all categories for a given clsid in an array that is passed by name
+	proc clsid_categories_to_array {clsid arrname} {
+		upvar $arrname categories
+		set k "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		
+		# catch if there aren't any implemented categories
 
-		proc cl_list_updatetag {w tag} {
-			variable textcolor
-			variable highlightcolor
+			foreach subkey [registry keys "HKEY_CLASSES_ROOT\\CLSID\\$clsid"] {
+				switch $subkey {
+					{Implemented Categories} {
+						foreach category [registry keys "$k\\$subkey"] {
+							collate_category_names $category categories
+						}
+					}
 
-			set c $w.c
-			set tl [$c itemcget $tag -text]
+					Programmable {
+						array set categories {{Automation Objects} {}}
+					}
 
-			if {![typelib::isloaded $tl]} {
-				$c itemconfig $tag -fill $textcolor  -font tlviewertext
-			} else {
-				$c itemconfig $tag -fill $highlightcolor -font tlviewerhigh
-			}
-		}
+					Control {
+						array set categories {Controls {}}
+					}
 
+					DocObject {
+						array set categories {{Document Objects} {}}
+					}
 
-		proc cl_list_press {w tag} {
-			set c $w.c
-			set tl [$c itemcget $tag -text]
-			set parent [winfo parent $w]
-
-			if {![typelib::isloaded $tl]} {
-				# loading typelib
-				if {[catch {typelib::load $tl} progname]} {
-					puts $progname
-					$parent.error config -text [string trim $progname]
-				} else {
-					puts "loaded $progname"
-					$parent.error config -text "loaded $progname"
-					loadedlibs_updateall
+					Insertable {
+						array set categories {{Embeddable Objects} {}}
+					}
 				}
-			} else {
-				typelib::unload $tl
-				puts "unloaded $tl"
-				$parent.error config -text "unloaded $tl"
-				loadedlibs_updateall
 			}
-
-			cl_list_updatetag $w $tag
-		}
-
-
-
-		proc refview {w} {
-			toplevel $w
-			wm title $w "Referenced Type Libraries"
-			bind $w <Alt-F4> "destroy $w"
-			bind $w <Alt-c> "$w.close invoke"
-			bind $w <Alt-r> "$w.refresh config -relief sunken; update; $w.refresh invoke; $w.refresh config -relief raised"
-			button $w.close -text Close -width 7 -command "destroy $w" -underline 0
-			button $w.refresh -text Refresh -width 7 -command [namespace code "cl_list_update $w.list"] -underline 0
-			label $w.error -bd 1 -relief sunken
-
-			grid [cl_list $w.list] -column 0 -row 0 -columnspan 2 -sticky nsew
-			grid $w.close -column 0 -row 1 -padx 5 -pady 5
-			grid $w.refresh -column 1 -row 1 -padx 5 -pady 5
-			grid $w.error -column 0 -row 2 -columnspan 2 -sticky nsew
-
-			grid columnconfig $w 0 -weight 1
-			grid columnconfig $w 1 -weight 1
-			grid rowconfig $w 0 -weight 1
-			
-			cl_list_update $w.list
-			return $w
-		}
-
-
 		
-		#------------------------------------------------------------------------------
-
-		proc loadedlibs_updateall {} {
-			foreach w [winfo child .] {
-				if {[string compare [winfo class $w] TLLoadedTypeLibs] == 0} {
-					loadedlibs_update $w
-				}
-			}
-		}
-
-		proc loadedlibs_update {w} {
-			variable bgcolor 
-			variable textcolor 
-			variable highlightcolor 
-
-			$w.l.t config -state normal	
-			$w.l.t delete 1.0 end
-			foreach lib [lsort [typelib::loaded]] {
-				$w.l.t tag configure tag$lib -foreground $highlightcolor -font tlviewertext -underline 0 
-				$w.l.t insert end "$lib\n" tag$lib
-				$w.l.t tag bind tag$lib <1> [namespace code "viewlib $lib"]
-				$w.l.t tag bind tag$lib <Enter> "$w.l.t config -cursor hand2; $w.l.t tag config tag$lib -underline 1"
-				$w.l.t tag bind tag$lib <Leave> "$w.l.t config -cursor arrow; $w.l.t tag config tag$lib -underline 0"
-			}
-			$w.l.t config -state disabled
-		}
-
-		proc loadedlibs {w} {
-			toplevel $w -class TLLoadedTypeLibs
-
-			wm title $w "Loaded Libraries"
-			scrltxt $w.l
-
-			grid $w.l -column 0 -row 0 -sticky nsew 
-			grid columnconfig $w 0 -weight 1
-			grid rowconfig $w 0 -weight 1
-			loadedlibs_update $w
-			bind $w <FocusIn> [namespace code "loadedlibs_update $w"]
-		}
+	}
 
-		#------------------------------------------------------------------------------
-		proc viewlib_onenter {txt tag} {
-			$txt config -cursor hand2
-			 $txt tag config $tag -underline 1
-		}
+	# retrieves, as a list, the categories for the given clsid
+	proc clsid_categories {clsid} {
+		array set categories {}
+		clsid_categories_to_array $clsid categories
+		return [array names categories]
+	}
 
-		proc viewlib_onleave {txt tag} {
-			$txt config -cursor arrow
-			$txt tag config $tag -underline 0
-		}
 
-		proc viewlib_unselect {txt lib} {
-			variable viewedtypes
-			variable textcolor 
-			if {[array name viewedtypes $lib] != {}} {
-				set type $viewedtypes($lib)
-				$txt tag config tag$type -foreground $textcolor -font tlviewertext
-				set viewedtypes($lib) {}
-			}
+	# retrieves all clsids that match the category name given by the first parameter
+	proc clsids {{cat {}}} {
+		array set categories {}
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID"
+		if {$cat == {}} {
+			return [registry keys $clsidk]
 		}
 
+		# else ...
 
-
-		proc viewlib_select {fulltype } {
-			variable viewedtypes
-			variable highlightcolor
-
-			puts $fulltype
-			set sp [split $fulltype .]
-			if {[llength $sp] != 2} {
-				return
-			}
-			
-			set lib [lindex $sp 0]
-			set type [lindex $sp 1]
-
-			set w [viewlib $lib]
-			set txt $w.types.t
-
-			viewlib_unselect $txt $lib
-			$txt tag config tag$type -foreground $highlightcolor -font tlviewerhigh
-
-			$txt see [lindex [$txt tag ranges tag$type] 0]
-			set viewedtypes($lib) $type
-			viewlib_readelems $w $lib $type;
-		}
+		set classes {}
 		
-		
-		proc viewlib_selectelem {w fulltype element} {
-			variable viewedtypes
-			variable highlightcolor
-
-			puts "$fulltype $element"
-			set sp [split $fulltype .]
-			set lib [lindex $sp 0]
-			set type [lindex $sp 1]
-
-			set txt $w.elems.t
-
-			viewlib_unselect $txt $fulltype
-			$txt tag config tag$element -foreground $highlightcolor -font tlviewerhigh
-			$txt see [lindex [$txt tag ranges tag$element] 0]
-			set viewedtypes($fulltype) $element
-			viewlib_readdesc $w $lib $type $element
-		}
-
-		###
-		# creates a list of types in some library
-		proc viewlib_readtypes {w lib} {
-			variable textcolor
-			set txt $w.types.t
-
-			$txt config -state normal
-			$txt del 1.0 end
-			
-			foreach tdesc [lsort [typelib::types $lib]] {
-				$txt insert end "[lindex $tdesc 0]\t"
-				set full [lindex $tdesc 1]
-				set type [lindex [split $full .] 1] 
-				$txt tag configure tag$type -foreground $textcolor -font tlviewertext -underline 0
-				$txt insert end "$type\n" tag$type
-				$txt tag bind tag$type <1> [namespace code "
-											viewlib_select $full;
-											"]
-
-				$txt tag bind tag$type <Enter> [namespace code "viewlib_onenter $txt tag$type"]
-				$txt tag bind tag$type <Leave> [namespace code "viewlib_onleave $txt tag$type"]
-			}
-			$txt config -state disabled
-		}
-
-
-		proc viewlib_writetype {txt fulltype} {
-			variable highlightcolor
-			if {[llength [split $fulltype .]] > 1} {
-				$txt tag configure tag$fulltype -foreground $highlightcolor -font tlviewertext -underline 0
-				$txt tag bind tag$fulltype <Enter> [namespace code "viewlib_onenter $txt tag$fulltype"]
-				$txt tag bind tag$fulltype <Leave> [namespace code "viewlib_onleave $txt tag$fulltype"]
-				$txt tag bind tag$fulltype <1> [namespace code "viewlib_select $fulltype"]
-				$txt insert end "$fulltype" tag$fulltype
-			} else {
-				$txt insert end "$fulltype"
+		foreach clsid [registry keys $clsidk] {
+			catch [unset categories]
+			array set categories {}
+			clsid_categories_to_array $clsid categories
+			if {[array names categories $cat]!={}} {
+				lappend classes $clsid
 			}
 		}
+		return $classes
+	}
 
 
-		###
-		# displays the elements for a type of some library
-		proc viewlib_readelems {w lib type} {
-			variable labelcolor 
-			variable textcolor
-			variable highlightcolor
-
-			set txt $w.elems.t
-			$txt config -state normal
-			$txt del 1.0 end
-			set elems [typelib::typeinfo $lib.$type]
-			loadedlibs_updateall
-
-			$txt tag configure label -font tlviewerhigh -underline 1 -foreground $labelcolor
-
-			if {[string compare "typedef" [lindex $elems 0]] == 0} {
-				# --- we are working with a typedef
-				set t [lindex $elems 3]
-				$txt insert end "Typedef\n\t" label
-				viewlib_writetype $txt $t
-			} else {
-				if {[llength [lindex $elems 1]] != 0} {
-					$txt insert end "Methods\n" label
-				}
-
-				foreach method [lsort [lindex $elems 1]] {
-					$txt tag configure tag$method -foreground $textcolor -font tlviewertext -underline 0
-					$txt tag bind tag$method <Enter> [namespace code "viewlib_onenter $txt tag$method"]
-					$txt tag bind tag$method <Leave> [namespace code "viewlib_onleave $txt tag$method"]
-					$txt tag bind tag$method <1> [namespace code "viewlib_selectelem $w $lib.$type $method"]
-					$txt insert end "\t$method\n" tag$method
-				}
-
-				if {[llength [lindex $elems 2]] != 0} {
-					$txt insert end "Properties\n" label
-				}
-
-				foreach prop [lsort [lindex $elems 2]] {
-					$txt tag configure tag$prop -foreground $textcolor -font tlviewertext -underline 0
-					$txt tag bind tag$prop <Enter> [namespace code "viewlib_onenter $txt tag$prop"]
-					$txt tag bind tag$prop <Leave> [namespace code "viewlib_onleave $txt tag$prop"]
-					$txt tag bind tag$prop <1> [namespace code "viewlib_selectelem $w $lib.$type $prop"]
-					$txt insert end "\t$prop\n" tag$prop
-				}
 
-				if {[llength [lindex $elems 3]] != 0} {
-					$txt insert end "Inherited Types\n" label
-				}
+	# provides a description for the clsid
+	proc describe_clsid {clsid} {
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		return [registry get $clsidk {}]
+	}
 
-				foreach impl [lsort -index 1 [lindex $elems 3]] {
-				# implemented interfaces
-					set t [lindex $impl 1]
-					set flags [lindex $impl 0]
-					if {[lsearch -exact $flags default] != -1} {
-						$txt insert end "*"
-					}
 
-					if {[lsearch -exac $flags source] != -1} {
-						$txt insert end "event"
-					}
-					$txt insert end "\t"
-
-					$txt tag configure itag$t -foreground $highlightcolor -font tlviewertext -underline 0
-					$txt tag bind itag$t <Enter> [namespace code "viewlib_onenter $txt itag$t"]
-					$txt tag bind itag$t <Leave> [namespace code "viewlib_onleave $txt itag$t"]
-					$txt tag bind itag$t <1> [namespace code "viewlib_select $t"]
-					
-					$txt insert end "$t\n" itag$t
-				}
-			}
-			$txt config -state disabled
-			viewlib_settypedoc $w [lindex $elems 4]
-		}
 
-		
-		proc viewlib_settypedoc {w doc} {
-			set txt $w.desc.t
-			$txt config -state normal
-			$txt delete 1.0 end
-			$txt insert end $doc
-			$txt config -state disabled
+	# retrieves a list of clsid descriptor for all clsids that have the category specified by
+	# parameter one. If parameter is {} then all clsids are returned.
+	proc describe_all_clsids {{cat {}}} {
+		set l {}
+		foreach clsid [categories::all_clsids $cat] {
+			lappend l [categories::describe_clsid $clsid]
 		}
+		return [lsort -dictionary $l]
+	}
 
+	# retrieve the programmatics identifier for a clsid.
+	# If any exist, the result of this procedure is the programmatic identifier for the
+	# the clsid, followed by an optional version independent identifier
+	proc progid_from_clsid {clsid} {
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		set progid {}
+		set verindid {}
+		catch {set progid [registry get "$clsidk\\ProgID" {}]}
+		catch {lappend progid [registry get "$clsidk\\VersionIndependentProgID" {}]}
+		return $progid
+	}
 
-		###
-		# retrieves the description for an element
-		proc viewlib_readdesc {w lib type elem} {
-			variable labelcolor
-
-			set txt $w.desc.t
-			$txt config -state normal
-			$txt delete 1.0 end
-
-			$txt tag configure label -font tlviewerhigh -underline 1 -foreground $labelcolor
-			$txt tag configure element -font tlviewerbold
-			$txt tag bind element <Enter> [namespace code "viewlib_onenter $txt element"]
-			$txt tag bind element <Leave> [namespace code "viewlib_onleave $txt element"]
-			
-			$txt tag bind element <1> [namespace code "viewlib_select $lib.$type; viewlib_selectelem $w $lib.$type $elem"]
-
-			set desc [typelib::typeinfo $lib.$type $elem]
-			set kind [lindex $desc 0]
-			switch $kind {
-				property {
-					$txt insert end "Property" label
-					$txt insert end "\t[lindex $desc 2]\n"
-
-					set p [lindex $desc 1]
-					# insert the flags
-					$txt insert end "[lindex $p 0]\t"
-					viewlib_writetype $txt [lindex $p 1]
-					$txt insert end "  "
-					$txt insert end "[lindex $p 2]" element
-
-					set params [lrange $p 3 end]
-
-					foreach param $params {
-						$txt insert end "\n\t"
-
-						if {[llength $param] == 3} {
-							$txt insert end "[lindex $param 0]\t"
-							set param [lrange $param 1 end]
-						}
-						viewlib_writetype $txt [lindex $param 0]
-						$txt insert end "  [lrange $param 1 end]"
-					}
-				}
-
-				method	{
-					set m [lindex $desc 1]
-					$txt insert end "Method" label
-					$txt insert end "\t[lindex $desc 2]\n"
-					viewlib_writetype $txt [lindex $m 0]
-					$txt insert end "  "
-					$txt insert end "[lindex $m 1]" element
-					set params [lrange $m 2 end]
-
-					foreach param $params {
-						$txt insert end "\n\t"
-
-						if {[llength $param] == 3} {
-							$txt insert end "[lindex $param 0]\t"
-							set param [lrange $param 1 end]
-						}
-						viewlib_writetype $txt [lindex $param 0]
-						$txt insert end "  [lrange $param 1 end]"
-					}
-				}
-			}
 
-			puts [lindex $desc 1]
-			$txt config -state disabled
+	proc typelib_from_clsid {clsid} {
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		# associated typelib?
+		
+		if {[registry keys $clsidk TypeLib] == {}} {
+			return {}
 		}
+		set typelib [registry get $clsidk\\TypeLib {}]
 
-
-		####
-		# Creates a viewer for library
-		proc viewlib {lib} {
-			set w ._tlview$lib
-			if [winfo exists $w] {
-				raise $w
-				return $w
-			}
-			toplevel $w -class tlview_$lib
-			wm title $w "Type Library: $lib"
-
-			label $w.tl -text Types;
-			label $w.el -text Elements;
-			label $w.dl -text Description;
-
-			scrltxt $w.types;
-			scrltxt $w.elems
-			scrltxt $w.desc y
-			$w.desc.t config -height 5
-			$w.desc.t config -state disabled
-			$w.elems.t config -state disabled
-			$w.types.t config -state disabled
-
-			grid $w.tl -column 0 -row 0 -sticky nw
-			grid $w.types -column 0 -row 1 -sticky news -padx 2 -pady 2
-			grid $w.el -column 1 -row 0 -sticky nw
-			grid $w.elems -column 1 -row 1 -sticky news -padx 2 -pady 2
-			grid $w.dl -column 0 -row 2 -sticky nw
-			grid $w.desc -column 0 -row 3 -columnspan 2 -sticky news -padx 2 -pady 2
-
-			grid columnconfigure $w 0 -weight 1
-			grid columnconfigure $w 1 -weight 1
-			grid rowconfigure $w 1 -weight 1
-			#grid rowconfigure $w 3 -weight 1
-
-			viewlib_readtypes $w $lib
-			return $w
+		# does it exist?
+		if {[registry keys HKEY_CLASSES_ROOT\\TypeLib $typelib] == {}} {
+			puts "couldn't find typelib $typelib from clsid $clsid"
+			return {}
 		}
 
-
-		proc viewtype {fullname} {
-			viewlib_select $fullname
+		# do we have a version number??
+		if {[registry keys $clsidk Version] != {}} {
+			set ver [registry get $clsidk\\Version {}]
+			set result [makelibname $typelib $ver]
+		} elseif {[registry keys $clsidk VERSION] != {}} {
+			set ver [registry get $clsidk\\VERSION {}]
+			set result [makelibname $typelib $ver]
+		} else {
+			# get the latest version of the type library
+			set result [latest_typelib_version $typelib]
 		}
+		return $result
 	}
-}
\ No newline at end of file
+}
diff --git a/src/utility.cpp b/src/utility.cpp
index ea4bba6..5c41a1f 100644
--- a/src/utility.cpp
+++ b/src/utility.cpp
@@ -31,6 +31,10 @@
 #include "typelib.h"
 #include "optclobj.h"
 #include "optcltypeattr.h"
+#include "optclbindptr.h"
+#include "comrecordinfoimpl.h"
+#include <stack>
+
 
 #ifdef _DEBUG
 /*
@@ -63,6 +67,35 @@ void OptclTrace(LPCTSTR lpszFormat, ...)
 #endif //_DEBUG
 
 
+
+template <class T>
+class TCoMem {
+public:
+	TCoMem () : p(NULL) {}
+	~TCoMem () {
+		Free();
+	}
+	
+	void Free () {
+		if (p) {
+			CoTaskMemFree(p);
+			p = NULL;
+		}
+	}
+
+	T* Alloc (ULONG size) {
+		Free();
+		p = (T*)(CoTaskMemAlloc (size));
+		return p;
+	}
+
+	operator T* () {
+		return p;
+	}
+protected:
+	T * p;
+};
+
 /*
  *-------------------------------------------------------------------------
  * HRESULT2Str --
@@ -317,7 +350,7 @@ void OptclVariantClear (VARIANT *pvar)
 
 
 
-bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **ppObj)
+bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, ITypeInfo *pti, TObjPtr &presult, OptclObj **ppObj)
 {
 	ASSERT (var.ppunkVal != NULL);
 
@@ -327,7 +360,7 @@ bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclOb
 	BSTR		bstr = NULL;
 	HRESULT		hr = S_OK;
 	OptclObj *	pObj = NULL;
-
+	ULONG		size = 0;
 
 	presult.create();
 	if (var.ppunkVal == NULL) {
@@ -340,7 +373,7 @@ bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclOb
 		case VT_DISPATCH:
 		case VT_UNKNOWN:
 			if (*var.ppunkVal != NULL) {
-				pObj = g_objmap.Add (pInterp, *var.ppunkVal);
+				pObj = g_objmap.Add (pInterp, *var.ppunkVal, pti);
 				presult = (const char*)(*pObj); // cast to char*
 				if (ppObj != NULL)
 					*ppObj = pObj;
@@ -385,9 +418,12 @@ bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclOb
 				Tcl_SetResult (pInterp, "pointer to null", TCL_STATIC);
 				bOk = false;
 			} else {
-				bOk = var2obj (pInterp, *var.pvarVal, presult, ppObj);
+				bOk = var2obj (pInterp, *var.pvarVal, NULL, presult, ppObj);
 			}
 			break;
+		case VT_RECORD:
+			return record2obj(pInterp, var, presult);
+			break;
 		default:
 			presult = "?unhandledtype?";
 		}
@@ -404,6 +440,125 @@ bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclOb
 }
 
 
+/*
+ *-------------------------------------------------------------------------
+ * record2obj
+ *	Converts a VT_RECORD variant to a Tcl object
+ * Result:
+ *	true iff successful
+ * Side Effects:
+ *	Can create new optcl objects, which without reference counting might 
+ *	become a nightmare! :-(
+ *-------------------------------------------------------------------------
+ */
+bool record2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &result)
+{
+	USES_CONVERSION;
+	ASSERT (var.vt == VT_RECORD && var.pRecInfo != NULL);
+
+	ULONG fields = 0, index;
+	TCoMem<BSTR> fieldnames;
+	bool bok = true;
+	
+
+	IRecordInfo *prinfo = var.pRecInfo;
+	CComPtr<ITypeInfo> pinf;
+	
+	try {
+		CHECKHR(prinfo->GetTypeInfo(&pinf));
+		CHECKHR(prinfo->GetFieldNames (&fields, NULL));
+		if (fieldnames.Alloc (fields) == NULL)
+			throw "failed to allocate memory.";
+		CHECKHR(prinfo->GetFieldNames (&fields, fieldnames));
+		
+		for (index = 0; bok && index < fields; index++) {
+			CComVariant	varValue;
+			TObjPtr		value;
+			CHECKHR(prinfo->GetField(var.pvRecord, fieldnames[index], &varValue));
+			result.lappend(OLE2A(fieldnames[index]));
+			bok = var2obj (pInterp, varValue, pinf, value, NULL);
+			if (bok)
+				result.lappend(value);
+		}
+		
+	} catch (HRESULT hr) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+		bok = false;
+	} catch (_com_error ce) {
+		Tcl_SetResult (pInterp, T2A((TCHAR*)ce.ErrorMessage()), TCL_VOLATILE);
+		bok = false;
+	} catch (char *err) {
+		Tcl_SetResult (pInterp, err, TCL_VOLATILE);
+		bok = false;
+	} catch (...) {
+		Tcl_SetResult (pInterp, "An unexpected error type occurred", TCL_STATIC);
+		bok = false;
+	}
+
+	if (fieldnames != NULL) {
+		for (index = 0; index < fields; index++)
+			SysFreeString(fieldnames[index]);
+	}
+	return bok;
+}
+
+
+
+
+bool vararray2obj (Tcl_Interp * pInterp, VARIANT &var, ITypeInfo * pti, TObjPtr &presult) 
+{
+	bool bOk = false;
+	LONG lbound, ubound;
+	VARTYPE vt = var.vt & (~VT_ARRAY); // type of elements array
+
+	presult.create();
+
+	if (var.parray == NULL) {
+		Tcl_SetResult (pInterp, "invalid pointer to COM safe array", TCL_STATIC);
+		return false;
+	}
+
+
+	ULONG	dims = SafeArrayGetDim (var.parray), // total number of dimensions
+			dindex; // dimension iterator
+	auto_array<LONG> lbounds(dims), ubounds(dims);
+	
+	// get the lower and upper bounds of each dimension
+	for (dindex = 0; dindex < dims; dindex++) {
+		CHECKHR_TCL(SafeArrayGetLBound(var.parray, dindex, lbounds+dindex), pInterp, false);
+		CHECKHR_TCL(SafeArrayGetUBound(var.parray, dindex, ubounds+dindex), pInterp, false);
+	}
+
+	
+
+	CHECKHR_TCL(SafeArrayGetLBound(var.parray, 0, &lbound), pInterp, false);
+	CHECKHR_TCL(SafeArrayGetUBound(var.parray, 0, &ubound), pInterp, false);
+
+	for (LONG index = lbound; index <= ubound; index++) {
+		CComVariant varElement;
+		varElement.vt = vt;
+
+		// WARNING: The following code is *not* solid, as it doesn't handle record structures at all!!
+		// in order to do this, I'll have to take into account the type info associate with this
+		// array ... not now I guess.
+		if (vt == VT_VARIANT) {
+			CHECKHR_TCL(SafeArrayGetElement(var.parray, &index, &varElement), pInterp, false);
+		} else {
+			CHECKHR_TCL(SafeArrayGetElement(var.parray, &index, &(varElement.punkVal)), pInterp, false);
+		}
+		TObjPtr element;
+		// now that we've got the variant, convert it to a tcl object
+		if (!var2obj (pInterp, varElement, pti, element))
+			return false;
+		// append it to the result
+		presult += element;
+	}
+	
+	return bOk;
+}
+
+
+
 /*
  *-------------------------------------------------------------------------
  * var2obj --
@@ -414,7 +569,7 @@ bool var2obj_byref (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclOb
  *	None.
  *-------------------------------------------------------------------------
  */
-bool var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **ppObj /* = NULL*/)
+bool var2obj (Tcl_Interp *pInterp, VARIANT &var, ITypeInfo *pti, TObjPtr &presult, OptclObj **ppObj /* = NULL*/)
 {
 	USES_CONVERSION;
 
@@ -430,17 +585,16 @@ bool var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **pp
 	
 
 	if ((var.vt & VT_ARRAY) || (var.vt & VT_VECTOR)) {
-		Tcl_SetResult (pInterp, "can't handle arrays or vectors for now", TCL_STATIC);
-		return false;
+		return vararray2obj (pInterp, var, pti, presult);
 	}
 
 	if (var.vt == VT_VARIANT) {
 		ASSERT (var.pvarVal != NULL);
-		return var2obj (pInterp, *(var.pvarVal), presult, ppObj);
+		return var2obj (pInterp, *(var.pvarVal), pti, presult, ppObj);
 	}
 
 	if (var.vt & VT_BYREF)
-		return var2obj_byref (pInterp, var, presult, ppObj);
+		return var2obj_byref (pInterp, var, pti, presult, ppObj);
 
 	presult.create();
 
@@ -454,6 +608,10 @@ bool var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **pp
 				presult = (const char*)(*pObj); // cast to char*
 				if (ppObj != NULL)
 					*ppObj = pObj;
+				if (pti != NULL) {
+					g_libs.EnsureCached (pti);
+					pObj->SetInterfaceFromType(pti);
+				}
 			}
 			else
 				presult = 0;
@@ -473,6 +631,9 @@ bool var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **pp
 		case VT_R8:
 			presult = (double)(var.dblVal);
 			break;
+		case VT_RECORD:
+			return record2obj (pInterp, var, presult);
+			break;
 		default: // standard string conversion required
 			comvar = var;
 			name = comvar;
@@ -507,6 +668,7 @@ bool var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **pp
  *
  * Result:
  *	true iff successful, else interpreter holds error string.
+ *
  * Side effects:
  *	None.
  *-------------------------------------------------------------------------
@@ -519,7 +681,6 @@ bool obj2var_ti (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var,
 	ASSERT (pInterp != NULL);
 
 	OptclTypeAttr		ota;
-	CComPtr<ITypeInfo>	pcurrent;
 	CComPtr<IUnknown>	ptmpunk;
 	HRESULT				hr;
 	TObjPtr				ptmp;
@@ -527,115 +688,110 @@ bool obj2var_ti (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var,
 	OptclObj *			pOptclObj = NULL;
 	long				lValue;
 
+	// if we have no value, set the variant to an empty
+	if (obj.isnull ()) {
+			VariantClear(&var);
+			return true;
+	}
+
 	// if no type description has been provided, do a simple conversion
 	if (pdesc == NULL) {
 		obj2var (obj, var);
 		bOk = true;
 	}
 
-	// a simple type
-	else if (pdesc->vt != VT_USERDEFINED && pdesc->vt != VT_SAFEARRAY) {
-		if (pdesc->vt != VT_PTR) 
-			return obj2var_vt (pInterp, obj, var, pdesc->vt);
-		else {
-			ASSERT (pdesc->lptdesc->vt != VT_PTR &&
-					pdesc->lptdesc->vt != VT_USERDEFINED &&
-					pdesc->lptdesc->vt != VT_SAFEARRAY);
-
-			if     (pdesc->lptdesc->vt == VT_PTR || 
-					pdesc->lptdesc->vt == VT_USERDEFINED || 
-					pdesc->lptdesc->vt == VT_SAFEARRAY)
-			{
-				Tcl_SetResult (pInterp, "can't convert - optcl doesn't support level of de-referencing", TCL_STATIC);
-				return false;
-			}	
-			return obj2var_vt_byref (pInterp, obj, var, pdesc->lptdesc->vt);
-		}
-	}
-
-	// arrays - should be easy to do - not enough time right now...
 	else if (pdesc->vt == VT_SAFEARRAY) {
 		// wont do arrays for now.
 		Tcl_SetResult (pInterp, "optcl doesn't currently handle array types", TCL_STATIC);
 	}
 
-	else {
+	else if (pdesc->vt == VT_USERDEFINED) {
 		// type information provided and it refers to a user defined type
 		// resolve the initial type
+		CComPtr<ITypeInfo> refinfo;
+		CHECKHR(pInfo->GetRefTypeInfo (pdesc->hreftype, &refinfo));
 
-		hr = pInfo->GetRefTypeInfo (pdesc->hreftype, &ota.m_pti);
-		CHECKHR(hr);
-		g_libs.EnsureCached (ota.m_pti);
-		hr = ota.GetTypeAttr();
-		CHECKHR(hr);
+		if (!TypeInfoResolveAliasing (pInterp, refinfo, &ota.m_pti))
+			return false;
+		CHECKHR(ota.GetTypeAttr());
 		ASSERT (ota.m_pattr != NULL);
-		pcurrent = pInfo;
 
-		while (ota->typekind == TKIND_ALIAS && 
-			   ota->tdescAlias.vt == VT_USERDEFINED)
-		{
-			HREFTYPE href = ota->tdescAlias.hreftype;
-			pcurrent = ota.m_pti;
-			ota = NULL; // release the type attribute and type info 
-			pcurrent->GetRefTypeInfo (href, &ota.m_pti);
-			hr = ota.GetTypeAttr();
-			CHECKHR(hr);
-		}
-		
+
 		// we've now climbed back up the alias chain and have one of the following:
 		// enum, record, module, interface, dispatch, coclass, union or alias to a basic type
-		// The following we can't (currently) do anything useful with: record, union, module.
 
-		if (ota.m_pattr->typekind == TKIND_ALIAS) 
-			return obj2var_ti (pInterp, obj, var, pcurrent, &(ota->tdescAlias));
+		if (ota.m_pattr->typekind == TKIND_ALIAS &&
+			ota->tdescAlias.vt != VT_USERDEFINED) 
+			return obj2var_ti (pInterp, obj, var, ota.m_pti, &(ota->tdescAlias));
 
 
 		TYPEKIND tk = ota->typekind;	// the metaclass
 		GUID intfguid = ota->guid;	
 
-
 		switch (tk)
 		{
 		case TKIND_ENUM:
 			if (bOk = (Tcl_GetLongFromObj (NULL, obj, &lValue) == TCL_OK)) 
 				obj2var(obj, var);
-			else if (bOk = TypeLib_ResolveConstant (pInterp, obj, ptmp, ota.m_pti)) 
+			else if (bOk = TypeLib_ResolveConstant(pInterp, obj, ptmp, ota.m_pti)) 
 				obj2var (ptmp, var);
 			break;
 		
 		case TKIND_DISPATCH:
 		case TKIND_INTERFACE:
 			// both these case require an object with the correct interface
-			pOptclObj = g_objmap.Find (obj);
-			if (pOptclObj != NULL) {
-				ptmpunk = (IUnknown*)(*pOptclObj);
-				ASSERT (ptmpunk != NULL);
-				hr = ptmpunk->QueryInterface (intfguid, (void**)&(var.punkVal));
-				CHECKHR(hr);
-				V_VT(&var) = VT_UNKNOWN;
+			V_VT(&var) = VT_UNKNOWN;
+			V_UNKNOWN(&var) = NULL;
+
+			// let's first check for the 'special' cases.
+
+			// images:
+			// check to see if we have tk installed and we're requested a picture
+			if (g_bTkInit && IsEqualGUID (ota.m_pattr->guid, __uuidof(IPicture))) {
+				// create picture variant
+				bOk = obj2picture(pInterp, obj, var);
+			} else if (((char*)obj)[0] != 0) {
+				pOptclObj = g_objmap.Find (obj);
+				if (pOptclObj != NULL) {
+					ptmpunk = (IUnknown*)(*pOptclObj);
+					ASSERT (ptmpunk != NULL);
+					hr = ptmpunk->QueryInterface (intfguid, (void**)&(var.punkVal));
+					CHECKHR(hr);
+					bOk = true;
+				} else {
+					ObjectNotFound (pInterp, obj);
+				}
+			} else
 				bOk = true;
-			} else 
-				ObjectNotFound (pInterp, obj);
 			break;
 
 		case TKIND_COCLASS:
-			pOptclObj = g_objmap.Find (obj);
-			if (pOptclObj != NULL) {
-				var.punkVal = (IUnknown*)(*pOptclObj);
-				var.punkVal->AddRef();
-				V_VT(&var) = VT_UNKNOWN;
-				bOk = true;
+			V_VT(&var) = VT_UNKNOWN;
+			V_UNKNOWN(&var) = NULL;
+	
+			if (obj.isnotnull() && ((char*)obj)[0] != 0) {
+				pOptclObj = g_objmap.Find (obj);
+				if (pOptclObj != NULL) {
+					var.punkVal = (IUnknown*)(*pOptclObj);
+					var.punkVal->AddRef();
+					
+					bOk = true;
+				} else 
+					ObjectNotFound (pInterp, obj);
 			} else 
-				ObjectNotFound (pInterp, obj);
+				bOk = true;
 			break;
 
-		case TKIND_ALIAS: 
 			ASSERT (FALSE); // should be hanlded above.
 			break;
 
 		// can't handle these types
 		case TKIND_MODULE:
+			break;
+		case TKIND_ALIAS: 
 		case TKIND_RECORD:
+			return obj2record(pInterp, obj, var, ota.m_pti);
+			break;
 		case TKIND_UNION:
 			obj2var (obj, var);
 			bOk = true;
@@ -646,13 +802,196 @@ bool obj2var_ti (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var,
 		}
 	}
 
+	else if (pdesc->vt == VT_PTR) {
+		ASSERT (pdesc->lptdesc != NULL);
+		if (pdesc->lptdesc->vt == VT_USERDEFINED)
+			return obj2var_ti (pInterp, obj, var, pInfo, pdesc->lptdesc);
+
+		ASSERT (pdesc->lptdesc->vt != VT_USERDEFINED);
+		return obj2var_vt_byref (pInterp, obj, var, pdesc->lptdesc->vt);
+	}
+
+	// a simple type
+	else {
+		ASSERT (pdesc->vt != VT_ARRAY && pdesc->vt != VT_PTR && pdesc->vt != VT_USERDEFINED);
+		return obj2var_vt (pInterp, obj, var, pdesc->vt);
+	}
+
+	// arrays - should be easy to do - not enough time right now...
+
+
 	return bOk;
 }
 
 
+/*
+ *-------------------------------------------------------------------------
+ * TypeInfoResolveAliasing
+ *	Resolves a type info to its base referenced type.
+ *
+ * Result:
+ *	true iff successful.
+ *
+ * Side Effects:
+ *	The pointer referenced by pti is updated to point to the base type.	
+ *-------------------------------------------------------------------------
+ */
+bool TypeInfoResolveAliasing (Tcl_Interp *pInterp, ITypeInfo * pti, ITypeInfo ** presolved) {
+	ASSERT (pInterp != NULL && pti != NULL && presolved != NULL);
+
+	bool result = false;
+	CComPtr<ITypeInfo>	currentinfo = pti, temp;
+	OptclTypeAttr pta;
+	try {
+		pta = currentinfo;
+		while (pta->typekind == TKIND_ALIAS && pta->tdescAlias.vt == VT_USERDEFINED) {
+			CHECKHR(currentinfo->GetRefTypeInfo (pta->tdescAlias.hreftype, &temp));
+			currentinfo = temp;
+			temp.Release();
+			pta = currentinfo;
+			g_libs.EnsureCached (currentinfo);
+		}
+		
+		CHECKHR(currentinfo.CopyTo(presolved));
+		result = true;
+	} catch (char *er) {
+		Tcl_SetResult (pInterp, er, TCL_VOLATILE);
+	} catch (HRESULT hr) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+	} catch (...) {
+		Tcl_SetResult (pInterp, "unknown error in obj2record", TCL_STATIC);
+	}
+	return result;
+}
+
+/*
+ *-------------------------------------------------------------------------
+ * obj2record
+ *	
+ * Result:
+ *	
+ * Side Effects:
+ *	
+ *-------------------------------------------------------------------------
+ */
+bool obj2record (Tcl_Interp *pInterp, TObjPtr &obj, PVOID precord, ITypeInfo *pinf)
+{
+	USES_CONVERSION;
+	HRESULT hr;
+	try{
+		CComPtr<IRecordInfo> prinf;
+		CHECKHR(GetRecordInfoFromTypeInfo2(pinf, &prinf));
+
+		CComPtr<ITypeComp> pcmp;
+		CHECKHR(pinf->GetTypeComp (&pcmp));
+
+		int length = obj.llength ();
+		if ((length % 2) != 0) 
+			throw ("record definition must have name value pairs");
+
+		// iterate over the list of name value pairs
+		for (int i = 0; (i+1) < length; i += 2) {
+			OptclBindPtr obp;
+
+			char * name = obj.lindex (i);
+			LPOLESTR lpoleName = A2OLE(name);
+			TObjPtr ptr = obj.lindex (i+1);
+			CComVariant vValue;
+
+			// retrieve the vardesc for this item:
+			hr = pcmp->Bind (lpoleName, 0, INVOKE_PROPERTYPUT | INVOKE_PROPERTYPUTREF | INVOKE_PROPERTYGET, &obp.m_pti, &obp.m_dk, &obp.m_bp);
+			if (obp.m_dk == DESCKIND_NONE) {
+				Tcl_SetResult (pInterp, "record doesn't have member called: ", TCL_STATIC);
+				Tcl_AppendResult (pInterp, name, NULL);
+				return false;
+			}
+			CHECKHR(hr);
+						
+			ASSERT (obp.m_dk == DESCKIND_VARDESC);
+
+			if (obp.m_bp.lpvardesc->elemdescVar.tdesc.vt == VT_USERDEFINED) {
+				CComPtr<ITypeInfo> inforef, inforesolved;
+				CHECKHR(pinf->GetRefTypeInfo (obp.m_bp.lpvardesc->elemdescVar.tdesc.hreftype, &inforef));
+				if (!TypeInfoResolveAliasing (pInterp, inforef, &inforesolved))
+					return false;
+				OptclTypeAttr pta;
+				pta = inforesolved;
+				if (pta->typekind == TKIND_RECORD) {
+					VARIANT var;
+					CComPtr<ITypeInfo> peti;
+					VariantInit(&var);
+					PVOID pfield = NULL;
+					HRESULT hr = prinf->GetFieldNoCopy (precord, lpoleName, &var, &pfield);
+					ASSERT (var.vt & VT_RECORD);
+					CHECKHR(var.pRecInfo->GetTypeInfo (&peti));
+					if (!obj2record (pInterp, ptr, var.pvRecord, peti))
+						return false;
+				} else {
+					if (!obj2var_ti(pInterp, ptr, vValue, obp.m_pti, &(obp.m_bp.lpvardesc->elemdescVar.tdesc)))
+						return false;
+					CHECKHR(prinf->PutField (INVOKE_PROPERTYPUT, precord, lpoleName, &vValue));
+				}
+			} else {
+				if (!obj2var_ti(pInterp, ptr, vValue, obp.m_pti, &(obp.m_bp.lpvardesc->elemdescVar.tdesc)))
+					return false;
+				CHECKHR(prinf->PutField (INVOKE_PROPERTYPUT, precord, lpoleName, &vValue));
+			}
+		}
+		return true;
+	} catch (char *er) {
+		Tcl_SetResult (pInterp, er, TCL_VOLATILE);
+	} catch (HRESULT hr) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+	} catch (...) {
+		Tcl_SetResult (pInterp, "unknown error in obj2record", TCL_STATIC);
+	}
+	return false;
 
+}
 
 
+/*
+ *-------------------------------------------------------------------------
+ * obj2record
+ *	Converts a Tcl object to a record structure declared by a provided
+ *	type info.
+ * Result:
+ *	true iff successful.
+ * Side Effects:
+ *	None.
+ *-------------------------------------------------------------------------
+ */
+bool obj2record (Tcl_Interp *pInterp, TObjPtr& obj, VARIANT&var, ITypeInfo *pinf) {
+	ASSERT(pInterp != NULL && pinf != NULL);
+	USES_CONVERSION;
+	CComBSTR name;
+	try {
+		CComPtr<ITypeInfo> precinfo;
+		OptclTypeAttr pta;
+		pta = pinf;
+		//ASSERT (pta->typekind == TKIND_RECORD);
+		
+		CComPtr<IRecordInfo> prinf;
+		CHECKHR(GetRecordInfoFromTypeInfo2(pinf, &prinf));
+
+		CComPtr<ITypeComp> pcmp;
+		CHECKHR(pinf->GetTypeComp (&pcmp));
+
+		VariantClear(&var);
+		var.pvRecord = prinf->RecordCreate ();
+		var.vt = VT_RECORD;
+		CHECKHR(prinf.CopyTo (&(var.pRecInfo)));
+		prinf->RecordInit (var.pvRecord);
+		return obj2record (pInterp, obj, var.pvRecord, pinf);
+	} catch (char *er) {
+		Tcl_SetResult (pInterp, er, TCL_VOLATILE);
+	} catch (HRESULT hr) {
+		Tcl_SetResult (pInterp, HRESULT2Str(hr), TCL_DYNAMIC);
+	} catch (...) {
+		Tcl_SetResult (pInterp, "unknown error in obj2record", TCL_STATIC);
+	}
+	return false;
+}
 
 
 /*
@@ -853,15 +1192,22 @@ bool	obj2var_vt (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var, VARTYPE vt)
 	IUnknown * ptmpunk = NULL;
 	bool bOk = true;
 	HRESULT hr;
+	OptclObj *pObj = g_objmap.Find (obj);
+	if (pObj != NULL) {
+		if (pObj->m_pta->typekind == TKIND_DISPATCH || (pObj->m_pta->wTypeFlags & TYPEFLAG_FDUAL))
+			vt = VT_DISPATCH;
+		else
+			vt = VT_UNKNOWN;
+	}
 
 	switch (vt)
 	{
 	case VT_DISPATCH:
 	case VT_UNKNOWN:
 		V_VT(&var) = vt;
-		if (obj.isnull()) 
-			var.punkVal = NULL;
-		else {
+		V_UNKNOWN(&var) = NULL;
+
+		if (obj.isnotnull() && ( ((char*)obj)[0] != 0) ) {
 			// attempt to cast from an optcl object
 			pOptclObj = g_objmap.Find (obj);
 			
@@ -995,7 +1341,7 @@ bool SplitBrackets (Tcl_Interp *pInterp, Tcl_Obj *pObj,
 	if (Tcl_EvalObj (pInterp, pcmd) == TCL_ERROR)
 		return false;
 
-	CONST84 char * okstr = Tcl_GetStringResult (pInterp);
+	const char * okstr = Tcl_GetStringResult (pInterp);
 	if (okstr[0] == '0') {
 		Tcl_SetResult (pInterp, "property format is incorrect: ", TCL_STATIC);
 		Tcl_AppendResult (pInterp, Tcl_GetStringFromObj(pObj, NULL), NULL);
@@ -1015,6 +1361,25 @@ bool SplitBrackets (Tcl_Interp *pInterp, Tcl_Obj *pObj,
 	return true;
 }
 
+
+
+/*
+ *-------------------------------------------------------------------------
+ * obj2picture
+ *	Convert the name of a tk image to an com object supporting IPicture
+ *
+ * Result:
+ *	True iff successful. Else, error description in Tcl interpreter.
+ *
+ * Side Effects:
+ *	None.	
+ *-------------------------------------------------------------------------
+ */
+bool obj2picture(Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var) {
+	return false; // NOT IMPLEMENTED YET
+}
+
+
 /// Tests
 TCL_CMDEF (Obj2VarTest)
 {
diff --git a/src/utility.h b/src/utility.h
index 510c692..6ad1903 100644
--- a/src/utility.h
+++ b/src/utility.h
@@ -43,11 +43,21 @@
 void OptclTrace(LPCTSTR lpszFormat, ...);
 #else
 #	define TRACE
-#endif
+#endif // _DEBUG
+
+// TRACE_OPTCLOBJ
+// Gives a trace output for an optcl object, in terms of its name, current interface, and reference count
+#ifdef _DEBUG
+#	define TRACE_OPTCLOBJ(obj)	{TObjPtr interfacename; obj->InterfaceName(interfacename); OptclTrace("%s %s --> %d\n", (char*)interfacename, obj->m_name.c_str(), obj->m_refcount);}
+#else
+#	define TRACE_OPTCLOBJ
+#endif // _DEBUG
+
+
 
 #define TCL_CMDEF(fname) int fname (ClientData cd, Tcl_Interp *pInterp, int objc, Tcl_Obj *CONST objv[])
 #define CHECKHR(hr) if (FAILED(hr)) throw(hr)
-#define CHECKHR_TCL(hr, i, v) if (FAILED(hr)) {Tcl_SetResult (i, HRESULT2Str(hr), TCL_DYNAMIC); return v;}
+#define CHECKHR_TCL(hr, i, v) {HRESULT _hr = (hr); if (FAILED(_hr)) {Tcl_SetResult (i, HRESULT2Str(_hr), TCL_DYNAMIC); return v;}}
 
 #define SETDISPPARAMS(dp, numArgs, pvArgs, numNamed, pNamed) \
     {\
@@ -62,6 +72,33 @@ void OptclTrace(LPCTSTR lpszFormat, ...);
 #define _countof(x) (sizeof(x)/sizeof(x[0]))
 
 
+template <class T>
+class auto_array {
+public:
+	typedef T* TPTR;
+	auto_array () : m_ptr(NULL) {}
+	auto_array(unsigned long items) : m_ptr(NULL) {
+		Allocate(items);
+	}
+	~auto_array() { ReleaseArray();}
+	void ReleaseArray () {
+		if (m_ptr != NULL) {
+			delete [] m_ptr;
+			m_ptr = NULL;
+		}
+	}
+	TPTR Allocate(unsigned long items) {
+		ReleaseArray();
+		m_ptr = new T[items];
+		return m_ptr;
+	}
+	operator TPTR () {
+		return m_ptr;
+	}
+protected:
+	TPTR m_ptr;
+};
+
 template <class T> void		delete_ptr (T* &ptr)
 {
 	if (ptr != NULL) {
@@ -83,11 +120,15 @@ template <class T> T* delete_array (T *&ptr) {
 
 class OptclObj;
 
-bool		var2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &presult, OptclObj **ppObj = NULL);
+bool		var2obj (Tcl_Interp *pInterp, VARIANT &var, ITypeInfo *pti, TObjPtr &presult, OptclObj **ppObj = NULL);
 bool		obj2var_ti (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var, ITypeInfo *pInfo, TYPEDESC *pdesc);
 bool		obj2var_vt (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var, VARTYPE vt);
 bool		obj2var_vt_byref (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var, VARTYPE vt);
 void		obj2var (TObjPtr &obj, VARIANT &var);
+bool		record2obj (Tcl_Interp *pInterp, VARIANT &var, TObjPtr &result);
+bool		obj2record (Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var, ITypeInfo *pinf);
+bool		obj2picture(Tcl_Interp *pInterp, TObjPtr &obj, VARIANT &var);
+
 
 
 void		OptclVariantClear (VARIANT *pvar);
@@ -103,8 +144,8 @@ int			ObjectNotFound (Tcl_Interp *pInterp, const char *name);
 void		SplitTypedString (char *pstr, char ** ppsecond);
 bool		SplitObject (Tcl_Interp *pInterp, Tcl_Obj *pObj, 
 						 const char * tokens, Tcl_Obj **ppResult);
-bool		SplitBrackets (Tcl_Interp *pInterp, Tcl_Obj *pObj,
-						   TObjPtr & result);
+bool		SplitBrackets (Tcl_Interp *pInterp, Tcl_Obj *pObj, TObjPtr & result);
+bool		TypeInfoResolveAliasing (Tcl_Interp *pInterp, ITypeInfo * pti, ITypeInfo ** presolved);
 
 /// TESTS
 TCL_CMDEF (Obj2VarTest);
diff --git a/temp code/reg.tcl b/temp code/reg.tcl
new file mode 100644
index 0000000..09ade01
--- /dev/null
+++ b/temp code/reg.tcl	
@@ -0,0 +1,139 @@
+package require registry
+
+
+namespace eval COM {
+
+	# categories
+	# retrieve a list of all category names
+	proc categories {} {
+		set alldata {}
+		set k "HKEY_CLASSES_ROOT\\Component Categories"
+		set cats [registry keys $k]
+
+		foreach cat $cats {
+			set values [registry values $k\\$cat]
+			set data {}
+			foreach value $values {
+				lappend data [registry get $k\\$cat $value] 
+			}
+			lappend alldata $data
+		}
+
+		return $alldata
+	}
+
+
+	# collate all the category names under the category clsid (parameter 1) into an
+	# array passed by name
+	proc collate_category_names {category arrname} {
+		upvar $arrname categories
+
+		set ck "HKEY_CLASSES_ROOT\\Component Categories\\$category"
+		catch {
+			foreach value [registry values $ck] {
+				catch {set categories([registry get $ck $value]) ""}
+			}
+		} err
+		return $err
+	}
+
+
+	# collates all categories for a given clsid in an array that is passed by name
+	proc clsid_categories_to_array {clsid arrname} {
+		upvar $arrname categories
+		set k "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		
+		# catch if there aren't any implemented categories
+
+			foreach subkey [registry keys "HKEY_CLASSES_ROOT\\CLSID\\$clsid"] {
+				switch $subkey {
+					{Implemented Categories} {
+						foreach category [registry keys "$k\\$subkey"] {
+							collate_category_names $category categories
+						}
+					}
+
+					Programmable {
+						array set categories {{Automation Objects} {}}
+					}
+
+					Control {
+						array set categories {Controls {}}
+					}
+
+					DocObject {
+						array set categories {{Document Objects} {}}
+					}
+
+					Insertable {
+						array set categories {{Embeddable Objects} {}}
+					}
+				}
+			}
+		
+	}
+
+	# retrieves, as a list, the categories for the given clsid
+	proc clsid_categories {clsid} {
+		array set categories {}
+		clsid_categories_to_array $clsid categories
+		return [array names categories]
+	}
+
+
+	# retrieves all clsids that match the category name given by the first parameter
+	proc clsids {{cat {}}} {
+		array set categories {}
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID"
+		if {$cat == {}} {
+			return [registry keys $clsidk]
+		}
+
+		# else ...
+
+		set classes {}
+		
+		foreach clsid [registry keys $clsidk] {
+			catch [unset categories]
+			array set categories {}
+			clsid_categories_to_array $clsid categories
+			if {[array names categories $cat]!={}} {
+				lappend classes $clsid
+			}
+		}
+		return $classes
+	}
+
+
+
+	# provides a description for the clsid
+	proc describe_clsid {clsid} {
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		return [registry get $clsidk {}]
+	}
+
+
+
+	# retrieves a list of clsid descriptor for all clsids that have the category specified by
+	# parameter one. If parameter is {} then all clsids are returned.
+	proc descrive_all_clsids {{cat {}}} {
+		set l {}
+		foreach clsid [categories::all_clsids $cat] {
+			lappend l [categories::describe_clsid $clsid]
+		}
+		return [lsort -dictionary $l]
+	}
+
+	# retrieve the programmatics identifier for a clsid.
+	# If any exist, the result of this procedure is the programmatic identifier for the
+	# the clsid, followed by an optional version independent identifier
+	proc progid_from_clsid {clsid} {
+		set clsidk "HKEY_CLASSES_ROOT\\CLSID\\$clsid"
+		set progid {}
+		set verindid {}
+		catch {set progid [registry get "$clsidk\\ProgID" {}]}
+		catch {lappend progid [registry get "$clsidk\\VersionIndependentProgID" {}]}
+		return $progid
+	}
+}
+
diff --git a/tests/calendar.tcl b/tests/calendar.tcl
index 2ee371b..6543fa4 100644
--- a/tests/calendar.tcl
+++ b/tests/calendar.tcl
@@ -39,11 +39,11 @@ pack .cal
 # bind to the calendar AfterUpdate event
 # routing it to the tcl procedure onupdate
 #
-optcl::bind $cal AfterUpdate onupdate
+#optcl::bind $cal AfterUpdate onupdate
 
 
 # get the current value
-set currentdate [$cal : value]
+#set currentdate [$cal : value]
 
 
 # make a button to view the type information of 
diff --git a/tests/pdf.tcl b/tests/pdf.tcl
index 9304dca..bf11079 100644
--- a/tests/pdf.tcl
+++ b/tests/pdf.tcl
@@ -4,7 +4,7 @@ package require optcl
 bind . <F2> {console show}
 
 wm title . {PDF Document in Tk}
-set pdf [optcl::new -window .pdf {d:/program files/adobe/acrobat3/acrobat.pdf}]
+set pdf [optcl::new -window .pdf {C:\Program Files\Adobe\Acrobat 4.0\Help\ENU\acrobat.pdf}]
 .pdf config -width 500 -height 300
 pack .pdf -fill both -expand 1
 
-- 
2.23.0