License For Customer Use of Software Developed by Guild Software, Inc.

IMPORTANT NOTICE -- READ CAREFULLY: This License For Customer Use of Software
Developed by Guild Software, Inc ("LICENSE") is the agreement which governs
use of the software of Guild Software Corporation and its subsidiaries
("GUILD") downloadable herefrom, including computer software and associated
printed materials ("SOFTWARE"). By downloading, installing, copying, or
otherwise using the SOFTWARE, you agree to be bound by the terms of this
LICENSE. If you do not agree to the terms of this LICENSE, do not download the
SOFTWARE.

1. DEFINITIONS

1.1 Customer. Customer means the entity or individual that downloads the
SOFTWARE.

2. GRANT OF LICENSE

2.1 Rights and Limitations of Grant. GUILD hereby grants Customer the
following non-exclusive, non-transferable right to use the SOFTWARE, with the
following limitations:

2.1.1 Rights. Customer may install and use one copy of the SOFTWARE on a
single computer, and except for making one back-up copy of the Software, may
not otherwise copy the SOFTWARE. This LICENSE of SOFTWARE may not be shared or
used concurrently on different computers.

2.1.2 Limitations.

No Reverse Engineering. Customer may not reverse engineer, decompile, or
disassemble the SOFTWARE, nor attempt in any other manner to obtain the source
code.

No Separation of Components. The SOFTWARE is licensed as a single product. Its
component parts may not be separated for use on more than one computer, nor
otherwise used separately from the other parts.

No Sales Or Rental. Customer may not sell, rent or lease the SOFTWARE to
someone else.

3. TERMINATION

This LICENSE will automatically terminate if Customer fails to comply with any
of the terms and conditions hereof. In such event, Customer must destroy all
copies of the SOFTWARE and all of its component parts.

4. COPYRIGHT

All title and copyrights in and to the SOFTWARE (including but not limited to
all images, photographs, animations, video, audio, music, text, and other
information incorporated into the SOFTWARE), the accompanying printed
materials, and any copies of the SOFTWARE, are owned by GUILD, or its
suppliers. The SOFTWARE is protected by copyright laws and international
treaty provisions. Accordingly, Customer is required to treat the SOFTWARE
like any other copyrighted material, except as otherwise allowed pursuant to
this LICENSE and that it may make one copy of the SOFTWARE solely for backup
or archive purposes.

5. APPLICABLE LAW

This agreement shall be deemed to have been made in, and shall be construed
pursuant to, the laws of the State of Wisconsin.

6. DISCLAIMER OF WARRANTIES AND LIMITATION ON LIABILITY

6.1 No Warranties. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE
SOFTWARE IS PROVIDED "AS IS" AND GUILD AND ITS SUPPLIERS DISCLAIM ALL
WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

6.2 No Liability for Consequential Damages. TO THE MAXIMUM EXTENT PERMITTED BY
APPLICABLE LAW, IN NO EVENT SHALL GUILD OR ITS SUPPLIERS BE LIABLE FOR ANY
SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING,
WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF GUILD HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. MISCELLANEOUS

The United Nations Convention on Contracts for the International Sale of Goods
is specifically disclaimed. If any provision of this LICENSE is inconsistent
with, or cannot be fully enforced under, the law, such provision will be
construed as limited to the extent necessary to be consistent with and fully
enforceable under the law. This agreement is the final, complete and exclusive
agreement between the parties relating to the subject matter hereof, and
supersedes all prior or contemporaneous understandings and agreements relating
to such subject matter, whether oral or written. Customer agrees that it will
not ship, transfer or export the SOFTWARE into any country, or use the
SOFTWARE in any manner, prohibited by the United States Bureau of Export
Administration or any export laws, restrictions or regulations. This LICENSE
may only be modified in writing signed by an authorized officer of GUILD.

