diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..6b3783a
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,11 @@
+Copyright (c) 2023 Zakary Timson
+
+All Rights Reserved.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README.md b/README.md
index b808d85..490b421 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,91 @@
-Formula [Formula Manager](http://zakscode.com)
-=======================
+
+
+
-Presenting [Formula Manager v1.0](http://zakscode.com),
+
+
-Software to record **vendors**, **materials**, and **formulas** using the materials.
\ No newline at end of file
+
+### Formula Manager
+
+
+ Formula Recording Software
+
+
+ [![Version](https://img.shields.io/badge/dynamic/json.svg?label=Version&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/fhsons/formula-manager%3Ftoken%3D35a3bf73a216782a7435f86117412bcb9784b716/tags&query=$[0].name)](https://git.zakscode.com/fhsons/formula-manager/tags)
+ [![Pull Requests](https://img.shields.io/badge/dynamic/json.svg?label=Pull%20Requests&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/fhsons/formula-manager%3Ftoken%3D35a3bf73a216782a7435f86117412bcb9784b716&query=open_pr_counter)](https://git.zakscode.com/fhsons/formula-manager/pulls)
+ [![Issues](https://img.shields.io/badge/dynamic/json.svg?label=Issues&style=for-the-badge&url=https://git.zakscode.com/api/v1/repos/fhsons/formula-manager%3Ftoken%3D35a3bf73a216782a7435f86117412bcb9784b716&query=open_issues_count)](https://git.zakscode.com/fhsons/formula-manager/issues)
+
+
+
+ ---
+
+
+ ---
+
+
+## Table of Contents
+- [Formula Manager](#top)
+ - [About](#about)
+ - [Built With](#built-with)
+ - [Setup](#setup)
+ - [Development](#development)
+ - [License](#license)
+
+## About
+
+
+
+Formula Manager is a Java program written to record chemical formulas & break them down into the required materials & vendors.
+
+Formulas can be scaled & have the materials automatically adjusted.
+
+All formulas are maintained by FH & Sons and are synced to the client through their webserver.
+
+### Built With
+[![Java](https://img.shields.io/badge/Java-5382A1?style=for-the-badge&logo=coffeescript&logoColor=F8981D)](https://java.com/)
+
+## Setup
+
+
+
+
+ Production
+
+
+
+#### Prerequisites
+- [Java JDK](https://www.oracle.com/java/technologies/downloads/)
+
+#### Instructions
+1. Download the latest release
+2. Extract to desired install directory
+3. Run `Formula Manager.jar`
+
+
+
+
+
+
+ Development
+
+
+
+#### Prerequisites
+- [Java SDK](https://www.oracle.com/ca-en/java/technologies/downloads)
+
+#### Instructions
+1. Compile source code: `cd src/com/zakscode/FormulaManager && javac Main.java`
+2. Start the game: `java StartUp`
+
+
+
+## License
+Copyright © 2023 Zakary Timson | All Rights Reserved
+
+See the [license](./LICENSE) for more information.
diff --git a/log.txt b/log.txt
deleted file mode 100644
index 1448a79..0000000
--- a/log.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-java.io.IOException: expected='endstream' actual='' at offset 555094
- at org.apache.pdfbox.pdfparser.BaseParser.parseCOSStream(BaseParser.java:607)
- at org.apache.pdfbox.pdfparser.PDFParser.parseObject(PDFParser.java:650)
- at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:203)
- at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1227)
- at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1194)
- at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1165)
- at com.zakscode.FormulaManager.Export.printPDF(Export.java:133)
- at com.zakscode.FormulaManager.Frame$13.actionPerformed(Frame.java:201)
- at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
- at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
- at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
- at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
- at javax.swing.AbstractButton.doClick(Unknown Source)
- at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
- at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
- at java.awt.Component.processMouseEvent(Unknown Source)
- at javax.swing.JComponent.processMouseEvent(Unknown Source)
- at java.awt.Component.processEvent(Unknown Source)
- at java.awt.Container.processEvent(Unknown Source)
- at java.awt.Component.dispatchEventImpl(Unknown Source)
- at java.awt.Container.dispatchEventImpl(Unknown Source)
- at java.awt.Component.dispatchEvent(Unknown Source)
- at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
- at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
- at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
- at java.awt.Container.dispatchEventImpl(Unknown Source)
- at java.awt.Window.dispatchEventImpl(Unknown Source)
- at java.awt.Component.dispatchEvent(Unknown Source)
- at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
- at java.awt.EventQueue.access$500(Unknown Source)
- at java.awt.EventQueue$3.run(Unknown Source)
- at java.awt.EventQueue$3.run(Unknown Source)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
- at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
- at java.awt.EventQueue$4.run(Unknown Source)
- at java.awt.EventQueue$4.run(Unknown Source)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
- at java.awt.EventQueue.dispatchEvent(Unknown Source)
- at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
- at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
- at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
- at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
- at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
- at java.awt.EventDispatchThread.run(Unknown Source)
-