diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  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
+them 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.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  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.
+
+  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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program 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.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU 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 Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,4 @@
+#! /usr/bin/env runhaskell
+
+> import Distribution.Simple
+> main = defaultMain
diff --git a/changelog.md b/changelog.md
new file mode 100644
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,6 @@
+2009.4.30
+----------
+
+### Feature
+
+Init
diff --git a/hack-contrib.cabal b/hack-contrib.cabal
new file mode 100644
--- /dev/null
+++ b/hack-contrib.cabal
@@ -0,0 +1,42 @@
+Name:                 hack-contrib
+Version:              2009.4.30
+Build-type:           Simple
+Synopsis:             Hack contrib
+Description:
+License:              GPL
+License-file:         LICENSE
+Author:               Wang, Jinjing
+Maintainer:           Wang, Jinjing <nfjinjing@gmail.com>
+Build-Depends:        base
+Cabal-version:        >= 1.2
+category:             Web
+homepage:             http://github.com/nfjinjing/hack/tree/master
+data-files:           readme.md, changelog.md
+
+library
+  ghc-options: -Wall
+  build-depends: base, cgi, network, haskell98, old-locale, old-time, directory, filepath, containers, bytestring, template, base64-string, zlib, ansi-wl-pprint, mps >= 2009.4.21, data-default >= 0.2, ansi-wl-pprint, unix, time, hack >= 2009.4.30
+  hs-source-dirs: src/
+  exposed-modules:  
+                    Hack.Contrib.Utils
+                    Hack.Contrib.Request
+                    Hack.Contrib.Response
+                    Hack.Contrib.Constants
+                    
+                    Hack.Contrib.Middleware.ContentSize
+                    Hack.Contrib.Middleware.ContentType
+                    Hack.Contrib.Middleware.File
+                    Hack.Contrib.Middleware.Head
+                    Hack.Contrib.Middleware.Hub
+                    Hack.Contrib.Middleware.Lambda
+                    Hack.Contrib.Middleware.Lucky
+                    Hack.Contrib.Middleware.Mime
+                    Hack.Contrib.Middleware.RawRouter
+                    Hack.Contrib.Middleware.ShowExceptions
+                    Hack.Contrib.Middleware.ShowStatus
+                    Hack.Contrib.Middleware.SimpleAccessLogger
+                    Hack.Contrib.Middleware.SimpleRouter
+                    Hack.Contrib.Middleware.Static
+
+                    
+                    
diff --git a/readme.md b/readme.md
new file mode 100644
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,1 @@
+Middleware and Helper for Hack
diff --git a/src/Hack/Contrib/Constants.hs b/src/Hack/Contrib/Constants.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Constants.hs
@@ -0,0 +1,171 @@
+module Hack.Contrib.Constants where
+
+import MPS
+import Prelude hiding ((.))
+import Data.Map
+
+status_with_no_entity_body :: [Int]
+status_with_no_entity_body = [100 .. 199] ++ [204, 304]
+
+
+-- header constants
+_CacheControl                   :: String
+_Connection                     :: String
+_Date                           :: String
+_Pragma                         :: String
+_TransferEncoding               :: String
+_Upgrade                        :: String
+_Via                            :: String
+_Accept                         :: String
+_AcceptCharset                  :: String
+_AcceptEncoding                 :: String
+_AcceptLanguage                 :: String
+_Authorization                  :: String
+_Cookie                         :: String
+_Expect                         :: String
+_From                           :: String
+_Host                           :: String
+_IfModifiedSince                :: String
+_IfMatch                        :: String
+_IfNoneMatch                    :: String
+_IfRange                        :: String
+_IfUnmodifiedSince              :: String
+_MaxForwards                    :: String
+_ProxyAuthorization             :: String
+_Range                          :: String
+_Referer                        :: String
+_UserAgent                      :: String
+_Age                            :: String
+_Location                       :: String
+_ProxyAuthenticate              :: String
+_Public                         :: String
+_RetryAfter                     :: String
+_Server                         :: String
+_SetCookie                      :: String
+_TE                             :: String
+_Trailer                        :: String
+_Vary                           :: String
+_Warning                        :: String
+_WWWAuthenticate                :: String
+_Allow                          :: String
+_ContentBase                    :: String
+_ContentEncoding                :: String
+_ContentLanguage                :: String
+_ContentLength                  :: String
+_ContentLocation                :: String
+_ContentMD5                     :: String
+_ContentRange                   :: String
+_ContentType                    :: String
+_ETag                           :: String
+_Expires                        :: String
+_LastModified                   :: String
+_ContentTransferEncoding        :: String
+
+
+
+_CacheControl                   =  "Cache-Control"        
+_Connection                     =  "Connection"           
+_Date                           =  "Date"                 
+_Pragma                         =  "Pragma"               
+_TransferEncoding               =  "Transfer-Encoding"    
+_Upgrade                        =  "Upgrade"              
+_Via                            =  "Via"                  
+_Accept                         =  "Accept"               
+_AcceptCharset                  =  "Accept-Charset"       
+_AcceptEncoding                 =  "Accept-Encoding"      
+_AcceptLanguage                 =  "Accept-Language"      
+_Authorization                  =  "Authorization"        
+_Cookie                         =  "Cookie"               
+_Expect                         =  "Expect"               
+_From                           =  "From"                 
+_Host                           =  "Host"                 
+_IfModifiedSince                =  "If-Modified-Since"    
+_IfMatch                        =  "If-Match"             
+_IfNoneMatch                    =  "If-None-Match"        
+_IfRange                        =  "If-Range"             
+_IfUnmodifiedSince              =  "If-Unmodified-Since"  
+_MaxForwards                    =  "Max-Forwards"         
+_ProxyAuthorization             =  "Proxy-Authorization"  
+_Range                          =  "Range"                
+_Referer                        =  "Referer"              
+_UserAgent                      =  "User-Agent"           
+_Age                            =  "Age"                  
+_Location                       =  "Location"             
+_ProxyAuthenticate              =  "Proxy-Authenticate"   
+_Public                         =  "Public"               
+_RetryAfter                     =  "Retry-After"          
+_Server                         =  "Server"               
+_SetCookie                      =  "Set-Cookie"           
+_TE                             =  "TE"                   
+_Trailer                        =  "Trailer"              
+_Vary                           =  "Vary"                 
+_Warning                        =  "Warning"              
+_WWWAuthenticate                =  "WWW-Authenticate"     
+_Allow                          =  "Allow"                
+_ContentBase                    =  "Content-Base"         
+_ContentEncoding                =  "Content-Encoding"     
+_ContentLanguage                =  "Content-Language"     
+_ContentLength                  =  "Content-Length"       
+_ContentLocation                =  "Content-Location"     
+_ContentMD5                     =  "Content-MD5"          
+_ContentRange                   =  "Content-Range"        
+_ContentType                    =  "Content-Type"         
+_ETag                           =  "ETag"                 
+_Expires                        =  "Expires"              
+_LastModified                   =  "Last-Modified"        
+_ContentTransferEncoding        =  "Content-Transfer-Encodeing"
+
+
+-- mime type
+_TextPlain :: String
+_TextHtml  :: String
+
+_TextPlain  = "text/plain"
+_TextHtml   = "text/html"
+
+
+-- status code
+status_code :: Map Int String
+status_code =
+  [  x       100          "Continue"
+  ,  x       101          "Switching Protocols"
+  ,  x       200          "OK"
+  ,  x       201          "Created"
+  ,  x       202          "Accepted"
+  ,  x       203          "Non-Authoritative Information"
+  ,  x       204          "No Content"
+  ,  x       205          "Reset Content"
+  ,  x       206          "Partial Content"
+  ,  x       300          "Multiple Choices"
+  ,  x       301          "Moved Permanently"
+  ,  x       302          "Found"
+  ,  x       303          "See Other"
+  ,  x       304          "Not Modified"
+  ,  x       305          "Use Proxy"
+  ,  x       307          "Temporary Redirect"
+  ,  x       400          "Bad Request"
+  ,  x       401          "Unauthorized"
+  ,  x       402          "Payment Required"
+  ,  x       403          "Forbidden"
+  ,  x       404          "Not Found"
+  ,  x       405          "Method Not Allowed"
+  ,  x       406          "Not Acceptable"
+  ,  x       407          "Proxy Authentication Required"
+  ,  x       408          "Request Timeout"
+  ,  x       409          "Conflict"
+  ,  x       410          "Gone"
+  ,  x       411          "Length Required"
+  ,  x       412          "Precondition Failed"
+  ,  x       413          "Request Entity Too Large"
+  ,  x       414          "Request-URI Too Large"
+  ,  x       415          "Unsupported Media Type"
+  ,  x       416          "Requested Range Not Satisfiable"
+  ,  x       417          "Expectation Failed"
+  ,  x       500          "Internal Server Error"
+  ,  x       501          "Not Implemented"
+  ,  x       502          "Bad Gateway"
+  ,  x       503          "Service Unavailable"
+  ,  x       504          "Gateway Timeout"
+  ,  x       505          "HTTP Version Not Supported"
+  ] .to_h
+  where x a b = (a, b)
diff --git a/src/Hack/Contrib/Middleware/ContentSize.hs b/src/Hack/Contrib/Middleware/ContentSize.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/ContentSize.hs
@@ -0,0 +1,25 @@
+module Hack.Contrib.Middleware.ContentSize (content_size) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Response
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>))
+
+content_size :: Middleware
+content_size app = \env -> do
+  response <- app env
+  
+  if should_size response
+    then response
+      .set_header _ContentLength (response.body.bytesize.show) .return
+    else response .return
+  
+  where 
+    should_size response =
+      [  not $ response.has_header _ContentLength
+      ,  not $ response.has_header _TransferEncoding
+      ,  not $ status_with_no_entity_body.has(response.status)
+      ] .and
diff --git a/src/Hack/Contrib/Middleware/ContentType.hs b/src/Hack/Contrib/Middleware/ContentType.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/ContentType.hs
@@ -0,0 +1,17 @@
+module Hack.Contrib.Middleware.ContentType (content_type) where
+
+import Hack
+import Hack.Contrib.Response
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>))
+
+
+content_type :: String -> Middleware
+content_type s app = \env -> do
+  response <- app env
+  
+  case response.header _ContentType of
+    Nothing -> response.set_header _ContentType s .return
+    Just _ -> response .return
diff --git a/src/Hack/Contrib/Middleware/File.hs b/src/Hack/Contrib/Middleware/File.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/File.hs
@@ -0,0 +1,92 @@
+module Hack.Contrib.Middleware.File (file) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Response
+import Hack.Contrib.Constants
+import Hack.Contrib.Middleware.Mime
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+), (/), readFile)
+
+import Data.Default
+import Data.Maybe
+import Data.List (isInfixOf)
+import System.Directory
+import System.FilePath
+
+
+file :: Maybe String -> Middleware
+file root _ = \env -> do
+  let path = env.path_info .url2unicode
+  
+  if ".." `isInfixOf` path 
+    then forbidden
+    else serve root path env
+
+
+serve :: Maybe String -> FilePath -> Env -> IO Response
+serve root fname _ = do
+  cwd <- get_current_directory
+  let my_root = root.fromMaybe cwd
+  let path = my_root / makeRelative "/" fname
+  
+  exist <- file_exist path
+
+  if not exist
+      then path.not_found
+      else
+        do 
+          can_read <- path.get_permissions ^ readable
+          if not can_read
+            then path.no_permission
+            else path.serving
+    
+    where 
+      serving path = do
+        content <- path.read_binary_file
+        size <- file_size path ^ from_i
+        mtime_str <- file_mtime path ^ httpdate
+        
+        let default_content_type = "application/octet-stream"
+        let safe_lookup = lookup_mime_type > fromMaybe default_content_type
+        let content_type = path.takeExtension.safe_lookup
+        
+        return $ 
+          def 
+            .set_body content
+            .set_content_length size
+            .set_content_type content_type
+            .set_last_modified mtime_str
+            .set_status 200
+
+no_permission :: String -> IO Response
+no_permission path = return $
+  def
+    .set_status 404
+    .set_content_type _TextPlain
+    .set_content_length (msg.length)
+    .set_body msg
+
+  where msg = "No permission: " ++ path ++ "\n"
+
+not_found :: String -> IO Response
+not_found path = return $
+  def
+    .set_status 404
+    .set_content_type _TextPlain
+    .set_content_length (msg.length)
+    .set_body msg
+  
+  where msg = "File not found: " ++ path ++ "\n"
+
+forbidden :: IO Response
+forbidden = return $ 
+  def
+    .set_status 403
+    .set_content_type _TextPlain
+    .set_content_length (msg.length)
+    .set_body msg
+
+  where msg = "Forbidden\n"
+  
diff --git a/src/Hack/Contrib/Middleware/Head.hs b/src/Hack/Contrib/Middleware/Head.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Head.hs
@@ -0,0 +1,14 @@
+module Hack.Contrib.Middleware.Head (head) where
+
+import Hack
+import Hack.Contrib.Response
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), head)
+
+head :: Middleware
+head app = \env -> do
+  response <- app env
+  if env.request_method.is HEAD 
+    then return $ response .set_body "" .set_content_length 0
+    else return $ response
diff --git a/src/Hack/Contrib/Middleware/Hub.hs b/src/Hack/Contrib/Middleware/Hub.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Hub.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+-- the entire logging framework is stole from [innate](http://github.com/manveru/innate/tree/master)
+
+
+module Hack.Contrib.Middleware.Hub where
+
+import Hack
+import Hack.Contrib.Utils
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+))
+
+import Text.Printf
+import System.Posix.Process (getProcessID)
+import Data.Maybe
+import Text.PrettyPrint.ANSI.Leijen
+import Data.Time
+
+data Severity = 
+     Debug
+  |  Info
+  |  Warn
+  |  Error
+  |  Fatal
+  |  Unknown
+  deriving (Show, Eq)
+
+hint :: Severity -> String
+hint = show > slice 0 1
+
+type Formatter = Severity -> UTCTime -> Int -> String -> String -> String
+
+type Logger = String -> Severity -> IO ()
+
+hub :: Stream -> Formatter -> String -> Logger
+hub stream formatter program = \message severity -> 
+  do
+    time <- now
+    pid <- getProcessID ^ from_i
+    stream $ formatter severity time pid program message
+
+simple_logger :: Stream -> String -> Logger
+simple_logger = flip hub simple_formatter
+
+simple_formatter :: Formatter
+simple_formatter severity time pid program message =
+  printf line_format h t pid l program s
+  
+  where
+    line_format = "%s [%s $%d] %5s | %-25s: %s\n"
+    
+    h = severity.hint
+    
+    time_format = "%Y-%m-%d %H:%M:%S"
+    t = time.format_time time_format
+    
+    l = severity.show.upper
+    s = colorize severity message
+
+colorize :: Severity -> String -> String
+colorize severity message = color severity (message.text) .show
+  where
+    level_color = 
+      [ (   Debug           , blue    )
+      , (   Info            , white   )
+      , (   Warn            , yellow  )
+      , (   Error           , red     )
+      , (   Fatal           , red     )
+      , (   Unknown         , green   )
+      ]
+    
+    color severity' = level_color.lookup severity' .fromMaybe green
+
diff --git a/src/Hack/Contrib/Middleware/Lambda.hs b/src/Hack/Contrib/Middleware/Lambda.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Lambda.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Middleware.Lambda (lambda) where
+
+import Hack
+import Hack.Contrib.Response
+import Hack.Contrib.Utils
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+))
+import Data.Default
+
+data64 :: String
+data64 = [$here|
+
+H4sIAAAAAAAAA+3dMVMbMRQE4J5foaGhpMhMCkP4LcpknCrBN0BB/n1yIbHkRNKd
+pPe0j7vdjsa6/cYbjAm+++np6J5ffnw7frr+enp8ObiP0+vth+nVfT89np6nz1+O
+d9cPXiQOHJESVyKPgqaQwRCxQEPMEaghYYFmeEt/DwELNMLfGLBAE4TALdAAccAW
+6PqXgVqgy/8TpAW6+3+hRRSYBbp4KiALdO1kMBbo1pnQIgrAAl05n+EW6MKF0CLK
+YAt03XJoETLUAl12KQMt0FUXQ4sowyzQRVeEFlEGWaBrrgotogyxQJdcGVpEGWCB
+rrg6tIiiboEuWBFaRKFFiLIFul5VaBGFFiGqFuhylaFFFFqEKFqgq1WHFlFoEaJm
+gS7WEFpEoUUILUKULNqv5+acX1/dnSNWuHS2MQsXLOYHOVschPqWYs7CXTwxDkaf
+GIMsgCsxZwFciYpF3yXBVmLQArYSgxawlVi0gK3EogVqJRYtLp8Y41Zi0gK0EpsW
+hZXcJNN/pLNqUVrJu7IQua78SvzuLCpXInOmUYvKlYgcadaibiUiJ9q1GP+Ky67F
++Fdc78JifsgBTwy7FrmN6GHYtcj825n+XiJyolmL3ELS30tEjrRqkV9I8hWXzJlG
+LfILSa5E5EwFCy9wWaWFpFYicKRVi/JCEivpP9JZtcgsRPkVl0mLzEIOyu9xWbQo
+/SSi+YrLokV2IXMUV2LQIr+QOYorsWex9LO62krWF7Tzu2WtlahY+J4rKi9kjtZK
+zFmseTdLaSXmLBYXMkdnJdYslhcyR2clxizWvt+rsZKKfvy/rrSgxb4taurxb2lo
+QYtdW1S149+n0mJ/FnXl+DkHtJCw8Oh6NamsRot9WNRW42eN7cKiuhk/m5AWQhYe
+XXJd6nvRos/Co2uuSUMtWnRaeHTR5bS02qhFUyveW2HrFm2leP+RfguPrltKY6Ut
+WrRW4j29JCw8unIuzYW2Z9FeaHP3hgRZeHTtVDrqbM2ip87G7qvb1WZb956GWnh0
++cv0deG96gUtPBogpLfJhiy6m/RbeLTBn/QXEbDwaIXfEeghYeHRDk6EQsbCoyWc
+SIur+9vp6fjwE8s/QZd0jAAA
+
+|].strip
+
+lambda :: Middleware
+lambda app = \env -> do
+  if env.path_info.is "/lambda"
+    then 
+      return $ def
+        .set_body (data64.unzip64)
+        .set_content_type _TextHtml
+        .set_status 200
+    
+    else app env
diff --git a/src/Hack/Contrib/Middleware/Lucky.hs b/src/Hack/Contrib/Middleware/Lucky.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Lucky.hs
@@ -0,0 +1,1173 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Middleware.Lucky (lucky) where
+
+import Hack
+import Hack.Contrib.Response
+import Hack.Contrib.Utils
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+))
+import Data.Default
+
+lucky :: Middleware
+lucky app = \env -> do
+  if env.path_info.is "/lucky"
+    then 
+      return $ def
+      .set_body (data64.unzip64)
+      .set_content_type _TextHtml
+      .set_status 200
+    
+    else app env
+
+data64 :: String
+data64 = [$here|
+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
+H7+xRzeg/knv0jbz9U9IkEQC4q6o4ZkXb3PDXLE2gSrGpwvf5vufbllhmh68hrF0
+tqrLMeM2ZgKHcx/GBO/+0nLHsLXrDRIPrQAS8yP/eCWrURcFMTW7wYXUB7lJ+eJ6
+0Cw+qGf5kFkBnhWl66OQifphpc2bq6Zzkbu1dwsnbEtrjYtVK/MUm3IDbNm31X0Q
+wzOe0QK2LmTFlgRUOd6UsIitEsk0LB4x8hzVGn0zzAb+ji+3nXw8Wk15Tr33Ibrb
+sprrvKVj5B0gC5rdOgfM6D6XGvR5BINRyAk7ywU5YZsqOr4l1/SEx47uLWc9O3st
+Pum1aMxldB0GucP/05m+YRHd4obyLHR15l+6mWhR64BVvapx+xV9dDQMWUmN9P3g
+YsZFvO5nXEWodFsbT+bblXcWnQtWBx8FlRT25walZtM02YfFhi/GWU93zzrPbr35
+HPV8U2r19My55lidQNwg/7Y049HyTdxWk6bobk4zLpRmvJLrvS3NmOsOUJlzipdm
+w5YrO62G8D4LY3bh+yOBkP8dVevPzEXaqTXXVo+DzwLrHgH0K2xzOZx4rF+APOU6
+IAy+V8oYJSz9KsD80cVw1UVhNpX1gdpJKz0CXd6NlQxIQTPECnVVvk1kGMB93fkZ
+Gy9lBeKNEY23ZKMFsni5J3mmzfyumU2eSd+zhB2J7HoZli3tuVkD8Qz08Vd3O5uG
+ziC99ae243xFe0CcYUSrmjesEzGyvd0p6I2EK0RdC9uqLP2nqOnpWNQVEsbcy2Xk
+985nEBmImcGCJhDVeUn9FLvTI/azdRSjqblbZQxymUml/PbDlqbXKdOyYzpvuNSE
+uHExBq95rBv7eJ7fdD2y73KjYqlWO4tDSfB6RQcx8oINjigsr6U0n5kfXW3Jn+np
+MIQymuSO8JJZz9Pxd/O2DPC77cBDos53ol/KC0pNO5s1DMnPIEdqZxs6SseGmTuq
+NkI21ltNHVzlW20JaXseQMty5xdvpp96dbXeQWshmz3wiwfy/oebm7CMw+NZDpAo
+7Gwumts84Gf3M48kce9xlJLljR3pDEb7tVbvtZLRQ3pcb7neBu25+VCQeBulDkAl
+oekpeduI6VP5DR5s7JI5B+2F1kpLOrRZySMXZajVOGSyuDNDTC0NbXwLG2O+KEO0
+3TqnS0+IkPaWAlpKp27cZHJm+9+x85bYAq+2yTwbVlI+NGdsjOq1C3Sb+1LSznCm
+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
+GwoA
+|]
diff --git a/src/Hack/Contrib/Middleware/Mime.hs b/src/Hack/Contrib/Middleware/Mime.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Mime.hs
@@ -0,0 +1,178 @@
+module Hack.Contrib.Middleware.Mime where
+
+import qualified Data.Map as M
+import MPSUTF8
+import Prelude hiding ((.))
+
+mime_types :: M.Map String String
+mime_types = 
+   [  x     ".3gp"          "video/3gpp"
+   ,  x     ".a"            "application/octet-stream"
+   ,  x     ".ai"           "application/postscript"
+   ,  x     ".aif"          "audio/x-aiff"
+   ,  x     ".aiff"         "audio/x-aiff"
+   ,  x     ".asc"          "application/pgp-signature"
+   ,  x     ".asf"          "video/x-ms-asf"
+   ,  x     ".asm"          "text/x-asm"
+   ,  x     ".asx"          "video/x-ms-asf"
+   ,  x     ".atom"         "application/atom+xml"
+   ,  x     ".au"           "audio/basic"
+   ,  x     ".avi"          "video/x-msvideo"
+   ,  x     ".bat"          "application/x-msdownload"
+   ,  x     ".bin"          "application/octet-stream"
+   ,  x     ".bmp"          "image/bmp"
+   ,  x     ".bz2"          "application/x-bzip2"
+   ,  x     ".c"            "text/x-c"
+   ,  x     ".cab"          "application/vnd.ms-cab-compressed"
+   ,  x     ".cc"           "text/x-c"
+   ,  x     ".chm"          "application/vnd.ms-htmlhelp"
+   ,  x     ".class"        "application/octet-stream"
+   ,  x     ".com"          "application/x-msdownload"
+   ,  x     ".conf"         "text/plain"
+   ,  x     ".cpp"          "text/x-c"
+   ,  x     ".crt"          "application/x-x509-ca-cert"
+   ,  x     ".css"          "text/css"
+   ,  x     ".csv"          "text/csv"
+   ,  x     ".cxx"          "text/x-c"
+   ,  x     ".deb"          "application/x-debian-package"
+   ,  x     ".der"          "application/x-x509-ca-cert"
+   ,  x     ".diff"         "text/x-diff"
+   ,  x     ".djv"          "image/vnd.djvu"
+   ,  x     ".djvu"         "image/vnd.djvu"
+   ,  x     ".dll"          "application/x-msdownload"
+   ,  x     ".dmg"          "application/octet-stream"
+   ,  x     ".doc"          "application/msword"
+   ,  x     ".dot"          "application/msword"
+   ,  x     ".dtd"          "application/xml-dtd"
+   ,  x     ".dvi"          "application/x-dvi"
+   ,  x     ".ear"          "application/java-archive"
+   ,  x     ".eml"          "message/rfc822"
+   ,  x     ".eps"          "application/postscript"
+   ,  x     ".exe"          "application/x-msdownload"
+   ,  x     ".f"            "text/x-fortran"
+   ,  x     ".f77"          "text/x-fortran"
+   ,  x     ".f90"          "text/x-fortran"
+   ,  x     ".flv"          "video/x-flv"
+   ,  x     ".for"          "text/x-fortran"
+   ,  x     ".gem"          "application/octet-stream"
+   ,  x     ".gemspec"      "text/x-script.ruby"
+   ,  x     ".gif"          "image/gif"
+   ,  x     ".gz"           "application/x-gzip"
+   ,  x     ".h"            "text/x-c"
+   ,  x     ".hh"           "text/x-c"
+   ,  x     ".htm"          "text/html"
+   ,  x     ".html"         "text/html"
+   ,  x     ".ico"          "image/vnd.microsoft.icon"
+   ,  x     ".ics"          "text/calendar"
+   ,  x     ".ifb"          "text/calendar"
+   ,  x     ".iso"          "application/octet-stream"
+   ,  x     ".jar"          "application/java-archive"
+   ,  x     ".java"         "text/x-java-source"
+   ,  x     ".jnlp"         "application/x-java-jnlp-file"
+   ,  x     ".jpeg"         "image/jpeg"
+   ,  x     ".jpg"          "image/jpeg"
+   ,  x     ".js"           "application/javascript"
+   ,  x     ".json"         "application/json"
+   ,  x     ".log"          "text/plain"
+   ,  x     ".m3u"          "audio/x-mpegurl"
+   ,  x     ".m4v"          "video/mp4"
+   ,  x     ".man"          "text/troff"
+   ,  x     ".mathml"       "application/mathml+xml"
+   ,  x     ".mbox"         "application/mbox"
+   ,  x     ".mdoc"         "text/troff"
+   ,  x     ".me"           "text/troff"
+   ,  x     ".mid"          "audio/midi"
+   ,  x     ".midi"         "audio/midi"
+   ,  x     ".mime"         "message/rfc822"
+   ,  x     ".mml"          "application/mathml+xml"
+   ,  x     ".mng"          "video/x-mng"
+   ,  x     ".mov"          "video/quicktime"
+   ,  x     ".mp3"          "audio/mpeg"
+   ,  x     ".mp4"          "video/mp4"
+   ,  x     ".mp4v"         "video/mp4"
+   ,  x     ".mpeg"         "video/mpeg"
+   ,  x     ".mpg"          "video/mpeg"
+   ,  x     ".ms"           "text/troff"
+   ,  x     ".msi"          "application/x-msdownload"
+   ,  x     ".odp"          "application/vnd.oasis.opendocument.presentation"
+   ,  x     ".ods"          "application/vnd.oasis.opendocument.spreadsheet"
+   ,  x     ".odt"          "application/vnd.oasis.opendocument.text"
+   ,  x     ".ogg"          "application/ogg"
+   ,  x     ".p"            "text/x-pascal"
+   ,  x     ".pas"          "text/x-pascal"
+   ,  x     ".pbm"          "image/x-portable-bitmap"
+   ,  x     ".pdf"          "application/pdf"
+   ,  x     ".pem"          "application/x-x509-ca-cert"
+   ,  x     ".pgm"          "image/x-portable-graymap"
+   ,  x     ".pgp"          "application/pgp-encrypted"
+   ,  x     ".pkg"          "application/octet-stream"
+   ,  x     ".pl"           "text/x-script.perl"
+   ,  x     ".pm"           "text/x-script.perl-module"
+   ,  x     ".png"          "image/png"
+   ,  x     ".pnm"          "image/x-portable-anymap"
+   ,  x     ".ppm"          "image/x-portable-pixmap"
+   ,  x     ".pps"          "application/vnd.ms-powerpoint"
+   ,  x     ".ppt"          "application/vnd.ms-powerpoint"
+   ,  x     ".ps"           "application/postscript"
+   ,  x     ".psd"          "image/vnd.adobe.photoshop"
+   ,  x     ".py"           "text/x-script.python"
+   ,  x     ".qt"           "video/quicktime"
+   ,  x     ".ra"           "audio/x-pn-realaudio"
+   ,  x     ".rake"         "text/x-script.ruby"
+   ,  x     ".ram"          "audio/x-pn-realaudio"
+   ,  x     ".rar"          "application/x-rar-compressed"
+   ,  x     ".rb"           "text/x-script.ruby"
+   ,  x     ".rdf"          "application/rdf+xml"
+   ,  x     ".roff"         "text/troff"
+   ,  x     ".rpm"          "application/x-redhat-package-manager"
+   ,  x     ".rss"          "application/rss+xml"
+   ,  x     ".rtf"          "application/rtf"
+   ,  x     ".ru"           "text/x-script.ruby"
+   ,  x     ".s"            "text/x-asm"
+   ,  x     ".sgm"          "text/sgml"
+   ,  x     ".sgml"         "text/sgml"
+   ,  x     ".sh"           "application/x-sh"
+   ,  x     ".sig"          "application/pgp-signature"
+   ,  x     ".snd"          "audio/basic"
+   ,  x     ".so"           "application/octet-stream"
+   ,  x     ".svg"          "image/svg+xml"
+   ,  x     ".svgz"         "image/svg+xml"
+   ,  x     ".swf"          "application/x-shockwave-flash"
+   ,  x     ".t"            "text/troff"
+   ,  x     ".tar"          "application/x-tar"
+   ,  x     ".tbz"          "application/x-bzip-compressed-tar"
+   ,  x     ".tcl"          "application/x-tcl"
+   ,  x     ".tex"          "application/x-tex"
+   ,  x     ".texi"         "application/x-texinfo"
+   ,  x     ".texinfo"      "application/x-texinfo"
+   ,  x     ".text"         "text/plain"
+   ,  x     ".tif"          "image/tiff"
+   ,  x     ".tiff"         "image/tiff"
+   ,  x     ".torrent"      "application/x-bittorrent"
+   ,  x     ".tr"           "text/troff"
+   ,  x     ".txt"          "text/plain"
+   ,  x     ".vcf"          "text/x-vcard"
+   ,  x     ".vcs"          "text/x-vcalendar"
+   ,  x     ".vrml"         "model/vrml"
+   ,  x     ".war"          "application/java-archive"
+   ,  x     ".wav"          "audio/x-wav"
+   ,  x     ".wma"          "audio/x-ms-wma"
+   ,  x     ".wmv"          "video/x-ms-wmv"
+   ,  x     ".wmx"          "video/x-ms-wmx"
+   ,  x     ".wrl"          "model/vrml"
+   ,  x     ".wsdl"         "application/wsdl+xml"
+   ,  x     ".xbm"          "image/x-xbitmap"
+   ,  x     ".xhtml"        "application/xhtml+xml"
+   ,  x     ".xls"          "application/vnd.ms-excel"
+   ,  x     ".xml"          "application/xml"
+   ,  x     ".xpm"          "image/x-xpixmap"
+   ,  x     ".xsl"          "application/xml"
+   ,  x     ".xslt"         "application/xslt+xml"
+   ,  x     ".yaml"         "text/yaml"
+   ,  x     ".yml"          "text/yaml"
+   ,  x     ".zip"          "application/zip"
+   ] .to_h
+   where x a b = (a, b)
+
+lookup_mime_type :: String -> Maybe String
+lookup_mime_type = flip M.lookup mime_types
diff --git a/src/Hack/Contrib/Middleware/RawRouter.hs b/src/Hack/Contrib/Middleware/RawRouter.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/RawRouter.hs
@@ -0,0 +1,20 @@
+module Hack.Contrib.Middleware.RawRouter (route) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Request hiding (path)
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>))
+import List (find)
+import Data.Maybe
+
+type RoutePath = (String, Application)
+
+route :: [RoutePath] -> Middleware
+route h app = \env ->
+  let path = env.fullpath
+  in
+  case h.find (fst > flip match path > isJust) of
+    Nothing -> app env
+    Just (_, found_app) -> found_app env
diff --git a/src/Hack/Contrib/Middleware/ShowExceptions.hs b/src/Hack/Contrib/Middleware/ShowExceptions.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/ShowExceptions.hs
@@ -0,0 +1,31 @@
+module Hack.Contrib.Middleware.ShowExceptions (show_exceptions) where
+
+import Hack
+import Hack.Contrib.Middleware.Hub
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), log)
+
+import Data.Maybe
+import Data.Default
+
+import System.IO  
+import System.IO.Error
+
+
+program :: String
+program = "ShowExceptions"
+
+show_exceptions :: Maybe Stream -> Middleware
+show_exceptions stream app = \env -> do
+  let my_stream = stream.fromMaybe (env.hack_errors)
+  let log = simple_logger my_stream program
+  
+  app env `catch` (handler log)
+
+  where
+    handler :: Logger -> IOError -> IO Response
+    handler log e = do
+      let message = e.show
+      Error. log message
+      return $ def { status = 500, body = message }
diff --git a/src/Hack/Contrib/Middleware/ShowStatus.hs b/src/Hack/Contrib/Middleware/ShowStatus.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/ShowStatus.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Middleware.ShowStatus (show_status) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Constants
+import Hack.Contrib.Request hiding (body)
+import Hack.Contrib.Response
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), head)
+
+import Data.Maybe
+
+show_status :: Middleware
+show_status app = \env -> do
+  response <- app env
+  
+  let content_length = response.header _ContentLength .fromMaybe "0"
+  let content_empty = content_length .read .(<= (0 :: Int))
+  
+  if response.status >= 400 && content_empty
+    then 
+      let 
+          i       = response.status
+          message = i.show_status_code .fromMaybe (i.show)
+          detail  = env.custom_"hack.showstatus.detail" .fromMaybe message
+          result  = template message detail env response
+          size    = result.bytesize
+      in
+      return $ 
+        response
+          .set_body result
+          .set_content_type _TextHtml
+          .set_content_length size
+    
+    else return response
+
+
+template :: String -> String -> Env -> Response -> String
+template message detail env response = 
+  let h = escape_html in [$here|
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+  <title>#{h message } at #{h (env.path.url2unicode) }</title>
+  <meta name="robots" content="NONE,NOARCHIVE" />
+  <style type="text/css">
+    html * { padding:0; margin:0; }
+    body * { padding:10px 20px; }
+    body * * { padding:0; }
+    body { font:small sans-serif; background:#eee; }
+    body>div { border-bottom:1px solid #ddd; }
+    h1 { font-weight:normal; margin-bottom:.4em; }
+    h1 span { font-size:60%; color:#666; font-weight:normal; }
+    table { border:none; border-collapse: collapse; width:100%; }
+    td, th { vertical-align:top; padding:2px 3px; }
+    th { width:12em; text-align:right; color:#666; padding-right:.5em; }
+    #info { background:#f6f6f6; }
+    #info ol { margin: 0.5em 4em; }
+    #info ol li { font-family: monospace; }
+    #summary { background: #ffc; }
+    #explanation { background:#eee; border-bottom: 0px none; }
+  </style>
+</head>
+<body>
+  <div id="summary">
+    <h1>#{h message } <span>(#{ response.status })</span></h1>
+    <table class="meta">
+      <tr>
+        <th>Request Method:</th>
+        <td>#{ env.request_method }</td>
+      </tr>
+      <tr>
+        <th>Request URL:</th>
+      <td>#{h (env.url.url2unicode) }</td>
+      </tr>
+    </table>
+  </div>
+  <div id="info">
+    <p>#{h detail }</p>
+  </div>
+
+  <div id="explanation">
+    <p>
+    You're seeing this error because you use <code>Hack.Contrib.Middleware.ShowStatus</code>.
+    </p>
+  </div>
+</body>
+</html>
+
+
+|]
diff --git a/src/Hack/Contrib/Middleware/SimpleAccessLogger.hs b/src/Hack/Contrib/Middleware/SimpleAccessLogger.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/SimpleAccessLogger.hs
@@ -0,0 +1,22 @@
+module Hack.Contrib.Middleware.SimpleAccessLogger (simple_access_logger) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Request
+import Hack.Contrib.Middleware.Hub
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), log)
+import Data.Maybe
+
+program :: String
+program = "SimpleAccessLogger"
+
+simple_access_logger :: Maybe Stream -> Middleware
+simple_access_logger stream app = \env -> do
+  let my_stream = stream.fromMaybe (env.hack_errors)
+  let log = simple_logger my_stream program
+  
+  Info .log (env.url.url2unicode)
+  
+  app env
diff --git a/src/Hack/Contrib/Middleware/SimpleRouter.hs b/src/Hack/Contrib/Middleware/SimpleRouter.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/SimpleRouter.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Middleware.SimpleRouter (route) where
+
+import Hack
+import Hack.Contrib.Utils
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>))
+import List (find, isPrefixOf)
+
+type RoutePath = (String, Application)
+
+route :: [RoutePath] -> Middleware
+route h app = \env ->
+  let path             = env.path_info
+      script           = env.script_name
+      mod_env location = env 
+        { script_name  = script ++ location
+        , path_info    = path.drop (location.length)
+        }
+  in
+  case h.find (fst > (`isPrefixOf` path) ) of
+    Nothing -> app env
+    Just (location, app') -> app' (mod_env location)
diff --git a/src/Hack/Contrib/Middleware/Static.hs b/src/Hack/Contrib/Middleware/Static.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Middleware/Static.hs
@@ -0,0 +1,22 @@
+module Hack.Contrib.Middleware.Static (static) where
+
+import Hack
+import Hack.Contrib.Utils
+import Hack.Contrib.Middleware.File (file)
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+))
+import Data.Maybe
+import List (find, isPrefixOf)
+
+static :: Maybe String -> [String] -> Middleware
+static root urls app = \env -> do
+  let my_urls = if urls.null then ["/favicon.ico"] else urls
+
+  let path = env.path_info .url2unicode
+
+  let can_serve = my_urls.find ( `isPrefixOf` path ) .isJust
+  
+  if can_serve
+    then file root app env
+    else app env
diff --git a/src/Hack/Contrib/Request.hs b/src/Hack/Contrib/Request.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Request.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Request where
+
+import Hack
+import Prelude hiding ((.), (^), (>), lookup, (+))
+import MPSUTF8
+import Hack.Contrib.Utils
+import List (lookup)
+import Data.Maybe
+
+body :: Env -> String
+body = hack_input
+
+scheme :: Env -> String
+scheme = hack_url_scheme > show > lower
+
+port :: Env -> Int
+port = server_port
+
+path :: Env -> String
+path env = env.script_name ++ env.path_info
+
+fullpath :: Env -> String
+fullpath env = 
+  if env.query_string.empty 
+    then env.path 
+    else env.path ++ "?" ++ env.query_string
+
+http_ :: String -> Env -> Maybe String
+http_ s env = env.http.reverse.lookup s
+
+custom_ :: String -> Env -> Maybe String
+custom_ s env = env.custom.reverse.lookup s
+
+host :: Env -> String
+host env = env.http_"HOST" .fromMaybe (env.server_name) .gsub ":\\d+\\z" ""
+
+url :: Env -> String
+url env =
+  [  env.scheme
+  ,  "://"
+  ,  env.host
+  ,  port_string
+  ,  env.fullpath
+  ]
+  .join'
+  where
+    port_string = 
+      if (env.scheme.is "https" && env.port.is_not 443 || 
+          env.scheme.is "http" && env.port.is_not 80 )
+        then ":" ++ env.server_port.show
+        else ""
diff --git a/src/Hack/Contrib/Response.hs b/src/Hack/Contrib/Response.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Response.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE QuasiQuotes #-}
+
+module Hack.Contrib.Response where
+
+import Hack
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), (+))
+
+import Data.Map (toList)
+import Data.Maybe
+
+
+header :: String -> Response -> Maybe String
+header s r = r.headers.reverse.lookup s
+
+has_header :: String -> Response -> Bool
+has_header s r = r.header s .isJust
+
+set_header :: String -> String -> Response -> Response
+set_header k v r = r 
+  { headers = (r.headers ++ [(k,v)] ) .to_h .toList }
+
+set_content_type :: String -> Response -> Response
+set_content_type s r = r.set_header _ContentType s
+
+set_content_length :: Int -> Response -> Response
+set_content_length i r = r.set_header _ContentLength (i.show)
+
+set_body :: String -> Response -> Response
+set_body s r = r { body = s }
+
+set_status :: Int -> Response -> Response
+set_status i r = r { status = i }
+
+set_last_modified :: String -> Response -> Response
+set_last_modified s r = r.set_header _LastModified s
diff --git a/src/Hack/Contrib/Utils.hs b/src/Hack/Contrib/Utils.hs
new file mode 100644
--- /dev/null
+++ b/src/Hack/Contrib/Utils.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE NoMonomorphismRestriction #-}
+
+module Hack.Contrib.Utils where
+
+import Hack
+import Hack.Contrib.Constants
+
+import MPSUTF8
+import Prelude hiding ((.), (^), (>), lookup, (+), (/))
+
+import Network.URI hiding (path)
+import Data.Default
+
+import Control.Arrow ((>>>), (<<<))
+import Data.Map (lookup, Map)
+import Data.Time
+import Text.Template
+import qualified Data.ByteString.Lazy.Char8 as B
+import Control.Monad (mplus, MonadPlus)
+import Data.Maybe
+import System.IO
+import System.Posix.Files
+import System.Locale
+import System.Directory
+import Data.Time.Clock.POSIX
+import System.FilePath ((</>))
+import Data.Char (ord)
+import Control.Category (Category)
+
+import qualified Data.ByteString.Lazy.Char8 as B
+import qualified Codec.Compression.GZip as GZip
+import Codec.Binary.Base64.String as C
+
+-- import Date.Time
+
+(>) :: (Control.Category.Category cat) => cat a b -> cat b c -> cat a c
+(>) = (>>>)
+infixl 8 >
+
+(+) :: (MonadPlus m) => m a -> m a -> m a
+(+) = mplus
+infixl 8 +
+
+(/) :: FilePath -> FilePath -> FilePath
+(/) = (</>)
+infixl 5 /
+
+empty_app :: Application
+empty_app = return def
+
+-- usage: app.use [content_type, cache]
+use :: [Middleware] -> Middleware
+use = reduce (<<<)
+
+bytesize :: String -> Int
+bytesize = B.pack > B.length > from_i
+
+dummy_middleware :: Middleware
+dummy_middleware = id
+
+dummy_app :: Application
+dummy_app _ = return $ def { status = 500 }
+
+escape_html :: String -> String
+escape_html = concatMap fixChar
+    where
+      fixChar '<' = "<"
+      fixChar '>' = ">"
+      fixChar '&' = "&"
+      fixChar '"' = "\""
+      fixChar c | ord c < 0x80 = [c]
+      fixChar c = "&#" ++ show (ord c) ++ ";"
+
+
+
+show_status_code :: Int -> Maybe String
+show_status_code x = status_code.lookup x
+
+-- MPS candidate
+
+now :: IO UTCTime
+now = getCurrentTime
+
+format_time :: String -> UTCTime -> String
+format_time = formatTime defaultTimeLocale
+
+interpolate :: String -> [(String, String)] -> String
+interpolate s params = B.unpack $ substitute (B.pack s) (context params)
+  where 
+    context = map packPair > to_h
+    packPair (x, y) = (B.pack x, B.pack y)
+
+just_lookup :: (Ord k) => k -> Data.Map.Map k a -> a
+just_lookup s xs = xs.lookup s .fromJust
+
+httpdate :: UTCTime -> String
+httpdate x = x.format_time rfc822DateFormat where
+
+file_size :: String -> IO Integer
+file_size path = withFile (path.u2b) ReadMode hFileSize
+
+file_mtime :: String -> IO UTCTime
+file_mtime path = getFileStatus (path.u2b) 
+                  ^ modificationTime ^ realToFrac ^ posixSecondsToUTCTime
+
+read_binary_file :: String -> IO String
+read_binary_file path = path.u2b.B.readFile ^ B.unpack
+
+get_permissions :: String -> IO Permissions
+get_permissions path = getPermissions (path.u2b) 
+
+url2unicode :: String -> String
+url2unicode s = s.unEscapeString.b2u
+
+get_current_directory :: IO String
+get_current_directory = getCurrentDirectory ^ b2u
+
+zip64, unzip64 :: String -> String
+zip64 = B.pack > GZip.compress > B.unpack > C.encode
+unzip64 = C.decode > B.pack > GZip.decompress > B.unpack
+
