
                     Critical Mass License Agreement

                       Critical Mass Modula-3 (CM3)

 1. Grant Of License.  Critical Mass, Inc., 1770 Massachusetts Ave.
    Cambridge, MA 02140 USA ("CRITICAL MASS"), grants to you
    ("LICENSEE") the non-exclusive, non-transferable, royalty free
    right to use, modify, reproduce and distribute Critical Mass
    Modula-3 ("SOFTWARE") subject to the terms set forth herein.  Any
    distribution of SOFTWARE shall include this Critical Mass License
    Agreement in human readable form.

 2. Title to Intellectual Property and Software.  Subject to the
    limited rights and licenses granted under this License Agreement,
    all rights, title and interests including patent, copyright, and
    trademark rights in SOFTWARE are and shall remain vested in
    CRITICAL MASS to the exclusion of LICENSEE.  CRITICAL MASS
    represents and warrants that CRITICAL MASS has the legal right to
    grant such licenses as are expressly granted under this Agreement.

 3. Copyright.  The SOFTWARE is owned by CRITICAL MASS or its
    suppliers and is protected by United States copyright laws and
    international treaty provisions.  Therefore, you must treat the
    SOFTWARE like any other copyrighted material (e.g., a book or
    musical recording) except that you may use the SOFTWARE as
    provided in this Critical Mass License Agreement.

 4. Improvements.  LICENSEE hereby grants to CRITICAL MASS a
    non-exclusive, non-transferable, royalty free right to use,
    modify, reproduce and distribute with the right to sublicense at
    any tier, any improvements, enhancements, extensions, or
    modifications that LICENSEE make to SOFTWARE, provided such are
    returned to CRITICAL MASS by LICENSEE.

 5. DISCLAIMER OF WARRANTY.  Because the SOFTWARE is a research work
    and not a released product, it is provided "AS IS" WITHOUT
    WARRANTY OF ANY KIND AND WITHOUT ANY SUPPORT SERVICES.  EXCEPT AS
    SPECIFICALLY PROVIDED ABOVE IN SECTION 2, CRITICAL MASS FURTHER
    DISCLAIMS ALL OTHER EXPRESS OR IMPLIED WARRANTIES OF
    MERCHANTABILITY OR OF FITNESS FOR A PARTICULAR PURPOSE.  THE
    ENTIRE RISK ARISING OUT OF THE USE OR PERFORMANCE OF THE SOFTWARE
    REMAINS WITH YOU.

 6. Limitation of Liability.  IN NO EVENT SHALL CRITICAL MASS OR ITS
    SUPPLIERS BE LIABLE IN AN AMOUNT THAT EXCEEDS THE LICENSE FEE PAID
    BY LICENSEE FOR ANY DAMAGES (INCLUDING, WITH LIMITATION, DAMAGES
    FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
    BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS), REGARDLESS OF THE
    FORM OF CLAIM OR ACTIONS, ARISING OUT OF THE USE OF OR INABILITY
    TO USE THE SOFTWARE OR DOCUMENTATION, EVEN IF CRITICAL MASS HAS
    BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  BECAUSE SOME
    STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR
    CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION MAY NOT
    APPLY TO YOU.

 7. Acknowledgement of Allocation of Risk.  LICENSEE acknowledges and
    agrees that the fees charged by CRITICAL MASS in this Agreement
    reflect the allocation of risks provided by the foregoing
    limitation of liability.  LICENSEE acknowledges and represents
    that it has read and understands these allocations of risk
    limiting the liability of CRITICAL MASS and that it understands
    that a modification of the allocation of risks set forth in this
    agreement would affect the fees charged by CRITICAL MASS, and that
    LICENSEE, in consideration of such fees, agrees to such
    allocations of risk.

 8. LICENSEE INDEMNIFICATION.  LICENSEE SHALL INDEMNIFY CRITICAL MASS
    AGAINST ALL COSTS AND DAMAGE JUDGEMENTS, INCLUDING ATTORNEY'S FEES
    AND COSTS OF DEFENSE, INCURRED BECAUSE OF CLAIMS OF DAMAGE ARISING
    FROM LICENSEE'S POSSESSION OR USE OR INABILITY TO USE SOFTWARE.

 9. GOVERNMENT RESTRICTED RIGHTS.  The SOFTWARE and documentation are
    provided with RESTRICTED RIGHTS.  Use duplication, or disclosure
    by the Government is subject restrictions as set forth in
    subparagraph (c)(1)(ii) of The Rights in Technical Data and
    Computer Software clause in DFARS 252.227-7013, or subparagraphs
    (c)(i) and (2) of the Commercial Computer Software -- Restricted
    Rights at 48 CFR 52.227-19, as applicable.  Manufacturer is
    Critical Mass, Inc., 1770 Massachusetts Ave., Cambridge, MA 02140
    USA.

10. Severability.  If any provision of the Agreement is held illegal
    or unenforceable by any court of competent jurisdiction, such
    provision shall be deemed separable from the remaining provisions
    of this Agreement and shall not affect or impair the validity or
    enforceability of the remaining provisions of this Agreement.

11. Governing Law.  This Agreement is governed by the laws of the
    Commonwealth of Massachusetts.

12. Publicity.  You my not use the name of CRITICAL MASS in any
    advertisement, press release or other publicity with reference to
    Critical Mass Modula-3 without prior written consent of CRITICAL
    MASS.

