they're really needed). put them in their own file because when we need to emulate them, they'll need a bunch of code.