diff --git a/LICENSE b/LICENSE
index 114486f..5b6e7c6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,289 +1,340 @@
-CERN Open Hardware Licence Version 2 - Strongly Reciprocal
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ 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.
+
+			    Preamble
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  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.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. 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".
+
+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.
+
+  1. 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.
+
+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.
+
+  2. 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:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) 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.
+
+    c) 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.)
+
+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.
+
+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.
+
+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.
+
+  3. 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:
+
+    a) 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,
+
+    b) 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,
+
+    c) 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.)
+
+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.
+
+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.
+
+  4. 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.
+
+  5. 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.
+
+  6. 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.
+
+  7. 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.
+
+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.
+
+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.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. 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.
+
+  9. 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.
+
+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.
+
+  10. 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.
+
+			    NO WARRANTY
+
+  11. 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.
+
+  12. 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.
+
+		     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
+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.
+
+    <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 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
 
 
-Preamble
+Also add information on how to contact you by electronic and paper mail.
 
-CERN has developed this licence to promote collaboration among
-hardware designers and to provide a legal tool which supports the
-freedom to use, study, modify, share and distribute hardware designs
-and products based on those designs. Version 2 of the CERN Open
-Hardware Licence comes in three variants: CERN-OHL-P (permissive); and
-two reciprocal licences: CERN-OHL-W (weakly reciprocal) and this
-licence, CERN-OHL-S (strongly reciprocal).
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
 
-The CERN-OHL-S is copyright CERN 2020. Anyone is welcome to use it, in
-unmodified form only.
+    Gnomovision version 69, Copyright (C) year name of author
+    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.
 
-Use of this Licence does not imply any endorsement by CERN of any
-Licensor or their designs nor does it imply any involvement by CERN in
-their development.
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
 
+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:
 
-1 Definitions
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
 
-  1.1 'Licence' means this CERN-OHL-S.
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
 
-  1.2 'Compatible Licence' means
-
-       a) any earlier version of the CERN Open Hardware licence, or
-
-       b) any version of the CERN-OHL-S, or
-
-       c) any licence which permits You to treat the Source to which
-          it applies as licensed under CERN-OHL-S provided that on
-          Conveyance of any such Source, or any associated Product You
-          treat the Source in question as being licensed under
-          CERN-OHL-S.
-
-  1.3 'Source' means information such as design materials or digital
-      code which can be applied to Make or test a Product or to
-      prepare a Product for use, Conveyance or sale, regardless of its
-      medium or how it is expressed. It may include Notices.
-
-  1.4 'Covered Source' means Source that is explicitly made available
-      under this Licence.
-
-  1.5 'Product' means any device, component, work or physical object,
-      whether in finished or intermediate form, arising from the use,
-      application or processing of Covered Source.
-
-  1.6 'Make' means to create or configure something, whether by
-      manufacture, assembly, compiling, loading or applying Covered
-      Source or another Product or otherwise.
-
-  1.7 'Available Component' means any part, sub-assembly, library or
-      code which:
-
-       a) is licensed to You as Complete Source under a Compatible
-          Licence; or
-
-       b) is available, at the time a Product or the Source containing
-          it is first Conveyed, to You and any other prospective
-          licensees
-
-            i) as a physical part with sufficient rights and
-               information (including any configuration and
-               programming files and information about its
-               characteristics and interfaces) to enable it either to
-               be Made itself, or to be sourced and used to Make the
-               Product; or
-           ii) as part of the normal distribution of a tool used to
-               design or Make the Product.
-
-  1.8 'Complete Source' means the set of all Source necessary to Make
-      a Product, in the preferred form for making modifications,
-      including necessary installation and interfacing information
-      both for the Product, and for any included Available Components.
-      If the format is proprietary, it must also be made available in
-      a format (if the proprietary tool can create it) which is
-      viewable with a tool available to potential licensees and
-      licensed under a licence approved by the Free Software
-      Foundation or the Open Source Initiative. Complete Source need
-      not include the Source of any Available Component, provided that
-      You include in the Complete Source sufficient information to
-      enable a recipient to Make or source and use the Available
-      Component to Make the Product.
-
-  1.9 'Source Location' means a location where a Licensor has placed
-      Covered Source, and which that Licensor reasonably believes will
-      remain easily accessible for at least three years for anyone to
-      obtain a digital copy.
-
- 1.10 'Notice' means copyright, acknowledgement and trademark notices,
-      Source Location references, modification notices (subsection
-      3.3(b)) and all notices that refer to this Licence and to the
-      disclaimer of warranties that are included in the Covered
-      Source.
-
- 1.11 'Licensee' or 'You' means any person exercising rights under
-      this Licence.
-
- 1.12 'Licensor' means a natural or legal person who creates or
-      modifies Covered Source. A person may be a Licensee and a
-      Licensor at the same time.
-
- 1.13 'Convey' means to communicate to the public or distribute.
-
-
-2 Applicability
-
-  2.1 This Licence governs the use, copying, modification, Conveying
-      of Covered Source and Products, and the Making of Products. By
-      exercising any right granted under this Licence, You irrevocably
-      accept these terms and conditions.
-
-  2.2 This Licence is granted by the Licensor directly to You, and
-      shall apply worldwide and without limitation in time.
-
-  2.3 You shall not attempt to restrict by contract or otherwise the
-      rights granted under this Licence to other Licensees.
-
-  2.4 This Licence is not intended to restrict fair use, fair dealing,
-      or any other similar right.
-
-
-3 Copying, modifying and Conveying Covered Source
-
-  3.1 You may copy and Convey verbatim copies of Covered Source, in
-      any medium, provided You retain all Notices.
-
-  3.2 You may modify Covered Source, other than Notices, provided that
-      You irrevocably undertake to make that modified Covered Source
-      available from a Source Location should You Convey a Product in
-      circumstances where the recipient does not otherwise receive a
-      copy of the modified Covered Source. In each case subsection 3.3
-      shall apply.
-
-      You may only delete Notices if they are no longer applicable to
-      the corresponding Covered Source as modified by You and You may
-      add additional Notices applicable to Your modifications.
-      Including Covered Source in a larger work is modifying the
-      Covered Source, and the larger work becomes modified Covered
-      Source.
-
-  3.3 You may Convey modified Covered Source (with the effect that You
-      shall also become a Licensor) provided that You:
-
-       a) retain Notices as required in subsection 3.2;
-
-       b) add a Notice to the modified Covered Source stating that You
-          have modified it, with the date and brief description of how
-          You have modified it;
-
-       c) add a Source Location Notice for the modified Covered Source
-          if You Convey in circumstances where the recipient does not
-          otherwise receive a copy of the modified Covered Source; and
-
-       d) license the modified Covered Source under the terms and
-          conditions of this Licence (or, as set out in subsection
-          8.3, a later version, if permitted by the licence of the
-          original Covered Source). Such modified Covered Source must
-          be licensed as a whole, but excluding Available Components
-          contained in it, which remain licensed under their own
-          applicable licences.
-
-
-4 Making and Conveying Products
-
-You may Make Products, and/or Convey them, provided that You either
-provide each recipient with a copy of the Complete Source or ensure
-that each recipient is notified of the Source Location of the Complete
-Source. That Complete Source is Covered Source, and You must
-accordingly satisfy Your obligations set out in subsection 3.3. If
-specified in a Notice, the Product must visibly and securely display
-the Source Location on it or its packaging or documentation in the
-manner specified in that Notice.
-
-
-5 Research and Development
-
-You may Convey Covered Source, modified Covered Source or Products to
-a legal entity carrying out development, testing or quality assurance
-work on Your behalf provided that the work is performed on terms which
-prevent the entity from both using the Source or Products for its own
-internal purposes and Conveying the Source or Products or any
-modifications to them to any person other than You. Any modifications
-made by the entity shall be deemed to be made by You pursuant to
-subsection 3.2.
-
-
-6 DISCLAIMER AND LIABILITY
-
-  6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products
-      are provided 'as is' and any express or implied warranties,
-      including, but not limited to, implied warranties of
-      merchantability, of satisfactory quality, non-infringement of
-      third party rights, and fitness for a particular purpose or use
-      are disclaimed in respect of any Source or Product to the
-      maximum extent permitted by law. The Licensor makes no
-      representation that any Source or Product does not or will not
-      infringe any patent, copyright, trade secret or other
-      proprietary right. The entire risk as to the use, quality, and
-      performance of any Source or Product shall be with You and not
-      the Licensor. This disclaimer of warranty is an essential part
-      of this Licence and a condition for the grant of any rights
-      granted under this Licence.
-
-  6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to
-      the maximum extent permitted by law, have no liability for
-      direct, indirect, special, incidental, consequential, exemplary,
-      punitive or other damages of any character including, without
-      limitation, procurement of substitute goods or services, loss of
-      use, data or profits, or business interruption, however caused
-      and on any theory of contract, warranty, tort (including
-      negligence), product liability or otherwise, arising in any way
-      in relation to the Covered Source, modified Covered Source
-      and/or the Making or Conveyance of a Product, even if advised of
-      the possibility of such damages, and You shall hold the
-      Licensor(s) free and harmless from any liability, costs,
-      damages, fees and expenses, including claims by third parties,
-      in relation to such use.
-
-
-7 Patents
-
-  7.1 Subject to the terms and conditions of this Licence, each
-      Licensor hereby grants to You a perpetual, worldwide,
-      non-exclusive, no-charge, royalty-free, irrevocable (except as
-      stated in subsections 7.2 and 8.4) patent license to Make, have
-      Made, use, offer to sell, sell, import, and otherwise transfer
-      the Covered Source and Products, where such licence applies only
-      to those patent claims licensable by such Licensor that are
-      necessarily infringed by exercising rights under the Covered
-      Source as Conveyed by that Licensor.
-
-  7.2 If You institute patent litigation against any entity (including
-      a cross-claim or counterclaim in a lawsuit) alleging that the
-      Covered Source or a Product constitutes direct or contributory
-      patent infringement, or You seek any declaration that a patent
-      licensed to You under this Licence is invalid or unenforceable
-      then any rights granted to You under this Licence shall
-      terminate as of the date such process is initiated.
-
-
-8 General
-
-  8.1 If any provisions of this Licence are or subsequently become
-      invalid or unenforceable for any reason, the remaining
-      provisions shall remain effective.
-
-  8.2 You shall not use any of the name (including acronyms and
-      abbreviations), image, or logo by which the Licensor or CERN is
-      known, except where needed to comply with section 3, or where
-      the use is otherwise allowed by law. Any such permitted use
-      shall be factual and shall not be made so as to suggest any kind
-      of endorsement or implication of involvement by the Licensor or
-      its personnel.
-
-  8.3 CERN may publish updated versions and variants of this Licence
-      which it considers to be in the spirit of this version, but may
-      differ in detail to address new problems or concerns. New
-      versions will be published with a unique version number and a
-      variant identifier specifying the variant. If the Licensor has
-      specified that a given variant applies to the Covered Source
-      without specifying a version, You may treat that Covered Source
-      as being released under any version of the CERN-OHL with that
-      variant. If no variant is specified, the Covered Source shall be
-      treated as being released under CERN-OHL-S. The Licensor may
-      also specify that the Covered Source is subject to a specific
-      version of the CERN-OHL or any later version in which case You
-      may apply this or any later version of CERN-OHL with the same
-      variant identifier published by CERN.
-
-  8.4 This Licence shall terminate with immediate effect if You fail
-      to comply with any of its terms and conditions.
-
-  8.5 However, if You cease all breaches of this Licence, then Your
-      Licence from any Licensor is reinstated unless such Licensor has
-      terminated this Licence by giving You, while You remain in
-      breach, a notice specifying the breach and requiring You to cure
-      it within 30 days, and You have failed to come into compliance
-      in all material respects by the end of the 30 day period. Should
-      You repeat the breach after receipt of a cure notice and
-      subsequent reinstatement, this Licence will terminate
-      immediately and permanently. Section 6 shall continue to apply
-      after any termination.
-
-  8.6 This Licence shall not be enforceable except by a Licensor
-      acting as such, and third party beneficiary rights are
-      specifically excluded.
+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.
diff --git a/dodo.py b/dodo.py
index ae069a8..a37770d 100644
--- a/dodo.py
+++ b/dodo.py
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: CERN-OHL-S-2.0+
+# SPDX-License-Identifier: GPL-2.0-or-later
 from os.path import dirname
 from pathlib import Path
 
diff --git a/doitcode/__init__.py b/doitcode/__init__.py
index 99aa209..315c06b 100644
--- a/doitcode/__init__.py
+++ b/doitcode/__init__.py
@@ -1 +1 @@
-# SPDX-License-Identifier: CERN-OHL-S-2.0+
+# SPDX-License-Identifier: GPL-2.0-or-later
diff --git a/doitcode/frame.py b/doitcode/frame.py
index a3a11fe..f32119e 100644
--- a/doitcode/frame.py
+++ b/doitcode/frame.py
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: CERN-OHL-S-2.0+
+# SPDX-License-Identifier: GPL-2.0-or-later
 from pdkmaster.technology import geometry as _geo
 
 
diff --git a/doitcode/generate.py b/doitcode/generate.py
index caf2575..8889934 100644
--- a/doitcode/generate.py
+++ b/doitcode/generate.py
@@ -1,4 +1,4 @@
-# SPDX-License-Identifier: CERN-OHL-S-2.0+
+# SPDX-License-Identifier: GPL-2.0-or-later
 from pathlib import Path
 from typing import Any, cast
 
