fixed some stuff and started separating the lovely, lovely global state out into its own class, and the reactive subjects into its own class