Update, Refactor - Finished (mostly)

- Needs tests