diff --git a/README.md b/README.md
index b218cdf..ab94fb2 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,192 @@
-# Happening
-Software for making interactive stories
-Under development
+# HAPPENING
+An interactive story telling software.
+
+## Install
+This is not really out of development, but to run it, clone the repo, go into /server/ and use cargo run story.zip to run a file called story.zip that's in the /stories/ directory.
+
+## Technical Details
+
+### Back-end server -- Rust
+
+The server component of Happening will be written in Rust.
+Parses the code and sends it via the API.
+File layout:
+- animations/
+- features/
+- scenes/
+- images/
+- stories/
+ - file.zip
+ - main.ha
+ - other.ha
+ - characters.json
+ - about.json
+ - animations/
+ - features/
+ - scenes/
+ - images/
+
+The variables are stored as a hashmap, characters are objects.
+
+### API
+
+Using the network interface, port 20264.
+
+Characters are sent to the frontend and stored there when the character is created on the frontend.
+```
+{
+
+request_type: String,
+
+content: String,
+
+character: String,
+
+}
+```
+### Frontend -- Python
+
+Things the frontend can do:
+
+- Output text
+- Display the character
+- Move characters around
+- Display a choice to the user that gets sent back to the server
+
+### Syntax
+
+#### Setup
+
+This is done in the about.json file,
+```
+{
+
+"title": "My Great Story",
+
+"description": "please read!"
+
+}
+```
+#### Characters
+Referencing a character using the @, @NARRATOR is reserved for the Narrator.
+Customisation is done with @CHARACTER change \ into \
+
+attributes:
+
+- gender
+- skin_color
+- name
+- eye_color
+- pronoun_subject
+- pronoun_object
+- pronoun_deppos
+- pronoun_indpos
+- pronoun_reflex
+- animation
+- head
+- hair
+- torso
+- arm
+- leg
+- hair_color
+- top_clothing
+- bottom_clothing
+- shoes
+
+#### Outputs
+```
+@CHARACTER says "this string
+is multi-line
+and ends with a"
+```
+#### Variables
+
+Variables are referenced with the \$, only integers will be supported.
+
+#### Selection
+
+Condition based:
+```
+if (condition) {
+
+}
+
+elif (condition) {
+
+}
+
+else
+
+}
+```
+Choice based:
+```
+choice "choice 1" {
+
+}
+
+or "choice 2" {
+
+}
+
+or "choice 3" {
+
+}
+```
+#### Positioning
+```
+@CHARACTER to position
+
+PAN to position
+```
+#### Other
+```
+label:
+
+GOTO label
+```
+#### Ending
+`END` to exit out of the story
+
+## Implemented stuff
+### Commands
+| Command | Implemented |
+|-----------------|-------------|
+| END | Yes |
+| CHOICE/OR/OR | Yes |
+| IF/ELSE IF/ELSE | No |
+| GOTO | No |
+| PAN | No |
+### Character sub-commands
+| Character Command | Implemented |
+|-------------------|-------------|
+| SAYS | Yes |
+| CHANGE | Yes |
+| TO | No |
+| ANIMATE | No |
+### Other Features
+| Feature | Implemented |
+| ------- | ----------- |
+| Variables | No |
+## Error codes
+
+| | | |
+|---------|---------------------------------------------|-----------------------------------------------------------------------------------------|
+| Code ID | Meaning | Possible remedies |
+| 0 | Success | N/A |
+| 1 | File unexpectedly reached termination point | Make sure there is an END statement in the code. |
+| 2 | Data to send Mutex was poisoned | |
+| 3 | Characters Mutex was poisoned | |
+| 4 | | |
+| 5 | | |
+| 6 | | |
+| 7 | | |
+| 8 | | |
+| 9 | | |
+| 10 | No filename specified for | When running the server, pass the name of the story zipfile as an argument. |
+| 11 | Failed to open file | Make sure the story zipfile exists and is accessible to the server. |
+| 12 | Failed to open archive | Make sure the story file is a zip archive. |
+| 13 | Unable to setup the characters hashmap. | Make sure the characters.json file exists, is valid JSON and contains valid characters. |
+| 14 | Unable to read the main story file. | Make sure the story.ha file exists and is readable. |
+| 15 | | |
+
diff --git a/report.odt b/report.odt
index a73a9ff..4241a4a 100644
Binary files a/report.odt and b/report.odt differ