diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..e90697f
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: 2021 Open Networking Foundation <info@opennetworking.org>
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+[gerrit]
+host=gerrit.opencord.org
+port=29418
+project=roc-helm-charts.git
+defaultremote=origin
diff --git a/.reuse/dep5 b/.reuse/dep5
new file mode 100644
index 0000000..087f2d5
--- /dev/null
+++ b/.reuse/dep5
@@ -0,0 +1,5 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: VERSION .gitreview
+Copyright: 2021 Open Networking Foundation
+License: Apache-2.0
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt
new file mode 100644
index 0000000..4ed90b9
--- /dev/null
+++ b/LICENSES/Apache-2.0.txt
@@ -0,0 +1,208 @@
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
+AND DISTRIBUTION
+
+   1. Definitions.
+
+      
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution
+as defined by Sections 1 through 9 of this document.
+
+      
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+      
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct
+or indirect, to cause the direction or management of such entity, whether
+by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
+of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+      
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
+granted by this License.
+
+      
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+      
+
+"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled object
+code, generated documentation, and conversions to other media types.
+
+      
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the Appendix
+below).
+
+      
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative
+Works shall not include works that remain separable from, or merely link (or
+bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+      
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative
+Works thereof, that is intentionally submitted to Licensor for inclusion in
+the Work by the copyright owner or by an individual or Legal Entity authorized
+to submit on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication
+sent to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+      
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently incorporated
+within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
+Derivative Works of, publicly display, publicly perform, sublicense, and distribute
+the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License,
+each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section) patent
+license to make, have made, use, offer to sell, sell, import, and otherwise
+transfer the Work, where such license applies only to those patent claims
+licensable by such Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work to which such
+Contribution(s) was submitted. If You institute patent litigation against
+any entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that the Work or a Contribution incorporated within the Work constitutes direct
+or contributory patent infringement, then any patent licenses granted to You
+under this License for that Work shall terminate as of the date such litigation
+is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or
+Derivative Works thereof in any medium, with or without modifications, and
+in Source or Object form, provided that You meet the following conditions:
+
+(a) You must give any other recipients of the Work or Derivative Works a copy
+of this License; and
+
+(b) You must cause any modified files to carry prominent notices stating that
+You changed the files; and
+
+(c) You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source
+form of the Work, excluding those notices that do not pertain to any part
+of the Derivative Works; and
+
+(d) If the Work includes a "NOTICE" text file as part of its distribution,
+then any Derivative Works that You distribute must include a readable copy
+of the attribution notices contained within such NOTICE file, excluding those
+notices that do not pertain to any part of the Derivative Works, in at least
+one of the following places: within a NOTICE text file distributed as part
+of the Derivative Works; within the Source form or documentation, if provided
+along with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents
+of the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text from the
+Work, provided that such additional attribution notices cannot be construed
+as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction,
+or distribution of Your modifications, or for any such Derivative Works as
+a whole, provided Your use, reproduction, and distribution of the Work otherwise
+complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any
+Contribution intentionally submitted for inclusion in the Work by You to the
+Licensor shall be under the terms and conditions of this License, without
+any additional terms or conditions. Notwithstanding the above, nothing herein
+shall supersede or modify the terms of any separate license agreement you
+may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names,
+trademarks, service marks, or product names of the Licensor, except as required
+for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to
+in writing, Licensor provides the Work (and each Contributor provides its
+Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied, including, without limitation, any warranties
+or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
+A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
+of using or redistributing the Work and assume any risks associated with Your
+exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether
+in tort (including negligence), contract, or otherwise, unless required by
+applicable law (such as deliberate and grossly negligent acts) or agreed to
+in writing, shall any Contributor be liable to You for damages, including
+any direct, indirect, special, incidental, or consequential damages of any
+character arising as a result of this License or out of the use or inability
+to use the Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all other commercial
+damages or losses), even if such Contributor has been advised of the possibility
+of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work
+or Derivative Works thereof, You may choose to offer, and charge a fee for,
+acceptance of support, warranty, indemnity, or other liability obligations
+and/or rights consistent with this License. However, in accepting such obligations,
+You may act only on Your own behalf and on Your sole responsibility, not on
+behalf of any other Contributor, and only if You agree to indemnify, defend,
+and hold each Contributor harmless for any liability incurred by, or claims
+asserted against, such Contributor by reason of your accepting any such warranty
+or additional liability. END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own identifying
+information. (Don't include the brackets!) The text should be enclosed in
+the appropriate comment syntax for the file format. We also recommend that
+a file or class name and description of purpose be included on the same "printed
+page" as the copyright notice for easier identification within third-party
+archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+
+you may not use this file except in compliance with the License.
+
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+
+distributed under the License is distributed on an "AS IS" BASIS,
+
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
+See the License for the specific language governing permissions and
+
+limitations under the License.
diff --git a/LICENSES/LicenseRef-ONF-Member-Only-1.0.txt b/LICENSES/LicenseRef-ONF-Member-Only-1.0.txt
new file mode 100644
index 0000000..bb813a1
--- /dev/null
+++ b/LICENSES/LicenseRef-ONF-Member-Only-1.0.txt
@@ -0,0 +1,294 @@
+ONF Member-Only Software License
+Version 1.0
+June 2020
+
+This ONF Member-Only Software License (this "License") is entered into by and
+between Open Networking Foundation ("ONF") and you and/or the entity on whose
+behalf you are accessing the Works (as defined in Section 1 below) ("you").
+This License forms a legally binding contract between you and ONF in relation
+to your access to and use of the Works. You may not access or use the Works if
+you do not accept this License.
+
+By accessing or using the Works, you hereby agree to the terms of this License.
+You may not use the Works and may not accept this License if you are a person
+barred from receiving the Works under the laws of the United States or other
+countries, including the country from which you access or use the Works. If you
+are agreeing to be bound by this License on behalf of your employer or other
+entity, you represent and warrant that you have full legal authority to bind
+your employer or such entity to this License. If you do not have the requisite
+authority, you may not accept this License or access or use the Works on behalf
+of your employer or any other entity.  You and ONF acknowledge and agree as
+follows:
+
+1. DEFINITIONS.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and
+configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object
+code, generated documentation, and conversions to other media types.
+
+"Works" shall mean the works of authorship, whether in Source or Object form,
+made available under this License, as indicated by a copyright notice/header
+file that is included in or attached to the Works.
+
+2. BACKGROUND.
+
+The purpose of this License is to provide ONF member companies in good standing
+("Members") with early access to software projects currently in development by
+ONF prior to their public release, to allow Members to review and test the
+Works internally for the purpose of making further contributions to the
+applicable project.  Members who are Partner-level Members at the time they
+first access the Works are additionally permitted under this License to use the
+Works internally for the purpose of building and developing products and
+services for commercial purposes as defined in Section 4.  However, this
+License does not permit any Member, regardless of Member level, to redistribute
+all or any portion of the Works, except as part of a contribution back to the
+applicable project, in accordance with Section 8 below, or in binary form as
+provided for Partner-level Members in Section 4 below.  You understand and
+agree that ONF has the sole right to sublicense and distribute a public version
+of the final code base for the applicable project to third parties under the
+2.0 version of the Apache License, or other permissive license terms selected
+by ONF in its sole discretion.
+
+The Purpose of this License is to incubate the development of new software
+projects by providing a framework for ONF Members to access and contribute to
+the projects while minimizing the potential for forking or misuse of the
+projects.  Nothing in this Background paragraph, however, shall require ONF to
+take any particular course of action regarding any Works covered by this
+License.
+
+3. LIMITED LICENSE TO ALL MEMBERS IN GOOD STANDING.
+
+Subject to your complete and ongoing compliance with all the terms and
+conditions set forth in this License, including without limitation all license
+limitations and restrictions set forth herein, ONF grants you the following
+limited, non-exclusive, non-transferable, non-sublicensable, revocable license
+to use, and (where applicable) authorize your employees and contractors
+performing work on your behalf (but only if such contractors are themselves
+Members of ONF and accept the terms of this License) to use the Works
+internally solely in connection with (a) reviewing, testing, modifying and
+creating derivatives of the Works for the sole purpose of making contributions
+by you to the code repository for the applicable project maintained by ONF; and
+(b) building, developing and testing your own applications or components that
+may interoperate with or incorporate the Works ("Applications") for the
+purposes of internal evaluation only.
+
+4. ADDITIONAL LICENSE TO PARTNER-LEVEL MEMBERS IN GOOD STANDING.
+
+Each project subject to this License shall be declared by ONF to be in one of
+two phases:  a) Incubation Phase, or b) Partner Commercialization Phase.  Each
+project shall start in the Incubation Phase, and ONF, at its sole discretion,
+shall determine when each project moves into the Partner Commercialization
+Phase.   Each project shall be documented to be in one of these two phases in
+the Project's README documentation and can be confirmed by contacting ONF.
+
+Once any project moves into the Partner Commercialization Phase, if you are a
+Partner-level ONF Member in good standing at the time you first access the
+Works and for the entire period during which you access and use the Works, in
+addition to the rights granted in Section 3, and subject to your complete and
+ongoing compliance with all the terms and conditions set forth in this License,
+including without limitation all license limitations and restrictions set forth
+herein, ONF grants you the limited, non-exclusive, non-transferable,
+non-sublicensable, revocable license to use, and (where applicable) authorize
+your employees and contractors performing work on your behalf (but only if such
+contractors are themselves Members of ONF and accept the terms of this License)
+to use, test, modify and create derivatives of the Works internally for the
+purpose of building, developing, testing, marketing, offering for sale and
+selling commercial products and services to third parties.  Wherever possible,
+you will take reasonable precautions to ensure Works remain accessible only to
+ONF Members, and any commercial product or service requiring redistribution of
+the Works, of modifications of the Works or of derivatives of the Works must be
+made solely in binary machine code form where possible to further this aim.
+
+Partners-level Members gaining additional insights as a result of accessing and
+using the Works for commercial products and services are expected to provide
+feedback to and to make contributions to the project for the benefit of both
+the project and the general membership.
+
+You may verify your company's Partner-level membership status on the ONF
+website at: https://www.opennetworking.org/member-listing/.
+
+4.1 GRACE PERIOD FOR NON-PARTNER-LEVEL MEMBERS
+
+If you are not a Partner-level Member and you wish to benefit from the rights
+granted to ONF Partners in Section 4, you have a 90-day grace period from the
+day you first access the Works to upgrade to a Partner-Level ONF Membership.
+Should you upgrade within this grace period, you will be recognized as if you
+had been a Partner on the day you first accessed the Works for the purpose of
+interpreting your rights under Section 4.
+
+5. RESTRICTIONS.
+
+By accessing or using the Works, you represent, warrant, and covenant that you
+and/or the entity on whose behalf you are accessing the Works is a Member in
+good standing of ONF.
+
+You acknowledge that, except for the limited rights expressly set forth above,
+the foregoing licenses do not include any right to, and you agree not to (i)
+redistribute, sell, lease, license, modify or otherwise create any derivative
+works of any portion of the Works, or (ii) distribute, deploy, or otherwise
+utilize the Works or Applications for any public, production, commercial, or
+other similar purpose other than internal use for evaluation and development of
+contributions to the code repository for the applicable project maintained by
+ONF and non-public, experimental Applications.
+
+Except as expressly provided herein, you may not (w) reproduce, distribute,
+publicly display, or publicly perform any part of the Works, (x) decompile,
+reverse engineer, or otherwise access or attempt to access source code not made
+available to you in source code form, (y) make or attempt to make any
+modification to, or otherwise create any derivative works of, the Works; or (z)
+remove, obscure, interfere with or circumvent any feature of the Works,
+including without limitation any copyright or other intellectual property
+notices, security, or access control mechanism. You agree that you will not use
+the Works to do anything illegal, including facilitating, promoting, or
+otherwise encouraging any illegal activities.
+
+You represent and warrant that the Works will not be shipped, transferred or
+exported into any country or used in any manner prohibited by the United States
+Export Administration Act or any other export laws, restrictions or regulations
+(collectively the "Export Laws"). In addition, if the Works are identified as
+an export controlled item under the Export Laws, you represent and warrant that
+you are not a citizen, or otherwise located within, an embargoed nation
+(including without limitation Crimea, Cuba, Iran, North Korea, Sudan, or Syria)
+and that you are not otherwise prohibited under the Export Laws from receiving
+the Works.
+
+ANY USE IN VIOLATION OF THE FOREGOING LIMITATIONS AND RESTRICTIONS IS STRICTLY
+PROHIBITED, AND UNLICENSED.
+
+6. RESERVATION OF RIGHTS.
+
+The Works are owned by ONF and/or its licensors, and are licensed, not sold, to
+you. The Works are protected by copyright, trade dress, patent, and trademark
+laws of the United States and other jurisdictions, international conventions,
+and all other relevant intellectual property and proprietary rights, and
+applicable laws (collectively, the "Intellectual Property Rights"). You agree
+that ONF or its subsidiaries or affiliated companies and/or its licensors own
+all legal right, title and interest in and to the Works, including any and all
+Intellectual Property Rights. ONF reserves all rights not expressly granted in
+this License. You do not acquire any right, title or interest to the Works,
+whether by implication, estoppel, or otherwise, except for the limited rights
+set forth in this License.
+
+You agree that the form and nature of the Works that ONF provides may change
+without prior notice to you and that future versions of the Works may be
+incompatible with applications developed using previous versions of the Works.
+You agree that ONF may stop (permanently or temporarily) providing the Works
+(or any features within the Works) to you or to users generally at ONF's sole
+discretion, without prior notice to you. Nothing in this License gives you a
+right to use any of ONF's trade names, trademarks, service marks, logos, domain
+names, or other distinctive brand features.
+
+7. PURPOSE AND USE.
+
+You agree that you will not engage in any activity with the Works, including
+the development or distribution of an Application that interferes with,
+disrupts, damages, or accesses in an unauthorized manner the servers, networks,
+or other properties or services of any third party. You agree that you are
+solely responsible for (and that ONF has no responsibility to you or to any
+third party for) any data, content, or resources that you create, transmit or
+display. You agree that you are solely responsible for (and that ONF has no
+responsibility to you or to any third party for) any breach of your obligations
+under this License, any applicable third party contract or terms of service, or
+any applicable law or regulation, and for the consequences (including any loss
+or damage which ONF or any third party may suffer) of any such breach.
+
+8. FEEDBACK; CONTRIBUTIONS.
+
+If you provide ONF with any comments, bug reports, feedback, enhancements, or
+modifications proposed or suggested by you for the Works ("Feedback"), such
+Feedback will be submitted as a Contribution to the applicable project
+maintained by ONF under the terms and conditions of a Contributor License
+Agreement between you and ONF, is provided on a non-confidential basis
+(notwithstanding any notice to the contrary you may include in any accompanying
+communication), and ONF shall have the right to use such Feedback at its
+discretion, including, but not limited to the incorporation of such Feedback
+into the Works and any final code base that may be derived from the Works.
+
+9. TERMINATION OF THIS LICENSE.
+
+This License will continue to apply until terminated by either you or ONF as
+set out below. If you want to terminate this License, you may do so by ceasing
+your use of the Works. If you cease being a Member in good standing of ONF,
+this License will terminate automatically and without further notice to you.
+ONF may at any time terminate this License: (a) if you have breached any
+provision of this License; or (b) at ONF's convenience.  When this License
+comes to an end, except as otherwise set forth in this paragraph 9, all of the
+legal rights, obligations and liabilities that you and ONF have benefited from,
+been subject to (or which have accrued over time while this License has been in
+force) or which are expressed to continue indefinitely, shall be unaffected by
+this cessation, and paragraphs 1, 2 and 5 through 14 shall continue to apply to
+such rights, obligations and liabilities indefinitely.  In addition, unless
+this License is terminated by ONF as a result of your breach of any provision
+of this License, Partner-level Members entitled to the benefits of Section 4 of
+this License shall also retain all rights granted by Section 4 so as long as
+you remain a Partner-level Member in good standing.
+
+10. DISCLAIMER OF WARRANTIES.
+
+YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE WORKS IS AT YOUR SOLE
+RISK AND THAT THE WORKS ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT
+WARRANTY OF ANY KIND FROM ONF. YOUR USE OF THE WORKS IS AT YOUR OWN DISCRETION
+AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM
+OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. ONF FURTHER
+EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ONF
+EXPRESSLY DISCLAIMS ANY WARRANTIES OF ANY KIND WITH RESPECT TO THE ACCURACY OR
+FUNCTIONALITY OF THE WORKS, AND WITH RESPECT TO THE ACCURACY, VALIDITY, OR
+COMPLETENESS OF ANY INFORMATION OR FEATURES AVAILABLE THROUGH THE WORKS, OR THE
+QUALITY OR CONSISTENCY OF THE WORKS OR RESULTS OBTAINED THROUGH THEIR USE.
+
+11. LIMITATION OF LIABILITY.
+
+YOU EXPRESSLY UNDERSTAND AND AGREE THAT ONF, ITS SUBSIDIARIES AND AFFILIATES,
+AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES
+THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT ONF OR
+ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE
+POSSIBILITY OF ANY SUCH LOSSES. IN NO EVENT WILL ONF'S AGGREGATE LIABILITY FOR
+DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE WORKS EXCEED THE GREATER
+OF AMOUNTS PAID BY YOU FOR THE WORKS, IF ANY.
+
+12. INDEMNIFICATION.
+
+To the maximum extent permitted by law, you agree to defend, indemnify and hold
+harmless ONF, its affiliates and their respective directors, officers,
+employees and agents from and against any and all claims, actions, suits or
+proceedings, as well as any and all losses, liabilities, damages, costs and
+expenses (including reasonable attorneys' fees) arising out of or accruing from
+(a) your use of the Works, (b) any Application or (for Partner-level Members)
+commercial product or service you develop using the Works that infringes any
+copyright, trademark, trade secret, trade dress, patent or other intellectual
+property right of any person, and (c) any non-compliance by you with this
+License or any applicable law or regulation.
+
+13. CHANGES TO THIS LICENSE.
+
+ONF may make changes to this License as it distributes new versions of the
+Works. When these changes are made, ONF will make a new version of this License
+available on the ONF website.
+
+14. MISCELLANEOUS TERMS.
+
+This License constitutes the entire legal agreement between you and ONF with
+regard to your access and use of the Works, and governs your access and use of
+the Works and completely supersedes any prior agreements between you and ONF in
+relation to the Works, except for any Contributor License Agreement you may
+have executed with ONF. You agree that if ONF does not exercise or enforce any
+legal right or remedy which is contained in this License (or which ONF has the
+benefit of under any applicable law), this will not be taken to be a formal
+waiver of ONF's rights and that those rights or remedies will still be
+available to ONF. If any court of law, having the jurisdiction to decide on
+this matter, rules that any provision of this License is invalid, then that
+provision will be removed from this License without affecting the rest of this
+License. The remaining provisions of this License will continue to be valid and
+enforceable so long as this License, as so modified, does not substantially
+impair the respective expectations or reciprocal obligations of the parties.
+The rights granted in this License may not be assigned or transferred by you
+without the prior written approval of ONF. You shall not be permitted to
+delegate your responsibilities or obligations under this License without the
+prior written approval of ONF.
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..0d4d124
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.1.0-dev
