#5 will likely have to wait until after this, so the code doesn't have to be refactored multiple times.