We can probably improve on this in the future if we want, but there's a lot of boilerplate that we don't need to repeat over and over