again, we should pass these things in. we want them to be nice and decoupled, so they can't depend on each other this way