- added a bunch of stuff.
- refactored & abstracted a bunch of stuff